Great books for learning or improving C# skills

Here I have put together a list of C# books that I find worth reading ,if you are getting into programming using C#. The list contains C# specific books but it also contains general programming books. Such as books on Object Oriented Programming, design patterns, architecture or general knowledge in the world of programming.

These are very general programming books. I would recommend that you find a book which supports what you want to program. For example if you wish to work with microservices buy a book on microservices. If you wish to work with games I would suggest getting a book on that. You can then support with a book on C#. It is hard to learn a language (at least for me!) if you have no idea on what you want to do. My list is in no particular order, here it is:

Head First C#

Authors: Jennifer Greene and Andrew Stellman

I added this book as a great beginners book. Like all head first books, it is a good starting point. It has some really good and simple explanations. As well as having a sense of humor. It is also highly visual which helps you getting a feeling of what you are doing. The tutorials are also very engaging but sticking to the basics.

If you are a beginner I would start here.

C# in depth

Author: Jon Skeet

Have you been a contributor on stack overflow? Then you probably know who Jon Skeet is. He is the person with most Reputation on stackoverflow (the points you get for great answers). He is also the author of C# in depth. This is another book targeting specifically C#.

This book however, is not for beginners. It is for those who know about the basics of C#, or has been working in a similar language. It goes much in depth on how C# works and is very detailed. If you have been working with C# for several years you should most likely read this book. It's details are likely to surprise you!

C# 6.0 and the .NET 4.6 Framework

Andrew Troelsen

This book is immense! I rarely recommend books with this number of pages. However it still has some very good content. This book is also suitable for beginners. However I believe there is a lot more to take in from this book than head first. It does not get into the very details as C# in depth does. However with this book you will get through most of what C# has to offer - and afterwards you will know where to look things up.

Don't let yourself get too caught up on the theory in the first chapter. Even though I believe it is still good to know.

The Pragmatic Programmer: From Journeyman to Master

Author: Andrew (Andy) Hunt

Ah this book! I can hardly make a list of books without adding this to it. This is my favorite general book on software development. This is the first book on my list which is not specifically targeted at C#. This book will be applicable no matter which language you are working with. It goes through a lot of the things you will have to deal with as a developer.

It gets around topics such as automation, Don't repeat yourself and refactoring. Even experienced programmer might learn a thing or two from this book - or be reminded of a thing or two.

Test Driven Development by example

Author: Kent Beck

This book is also good for OOP development. Not only is it good if you are into Test Driven Development (TDD). But it also has some very good examples on how to refactor your code. It goes through the iterations you do when you refactor - and by that you make your code more testable. It has some great examples (even though it is in java) on how to approach refactoring. This book will also help you make your code more SOLID.

If you wish to go more into detail with refactoring you can also get the book "Refactoring" by Martin Fowler (and Kent Beck). However, that is a harder book to get through and is also longer. But then again, it goes more into detail with refactoring. I often get back to this book to look things up.

Head First Design Patterns

Authors: Eric Freeman, Bert Bates, Kathy Sierra, Elisabeth Robson

I actually first read this book when studying for my AP Graduate in Computer Science. At first I did not think much of it. Other than it was funny. It was only a while later (when I was a more experienced programmer) I actually got to like it. This book contains a very easily digestivable presentation of design patterns. It goes through the different design patterns and explains how they can be applied. As with all Head First books, this one also contains some great humor.

The examples are in Java, but can be easily translated to C# (The two language are very much alike). Design patterns are still good to know these days. But avoid using them EVERYWHERE after you have read the book :)

That was my list, did I forget any? Let me know in the comments!