Comments

Top 3 Reads for C# Developers

I’ve had quite a few students of mine contacting me and asking:

Mosh, apart from your video courses, what books should I read to become a better developer?

If you want to become a kick-ass C# developer, you need to master the fundamentals. By fundamentals, I mean concepts that are always applicable. ASP.NET 5 is NOT one of them! Neither are Entity Framework, Xamarin, Azure, etc.

Frameworks and tools come and go. Becoming proficient in a framework may give you some career opportunities in the short term, but if you want to be ahead of the game, you need to understand the core principles. When you understand the fundamentals well, you can quickly learn a new framework or a new programming language. In fact, at that level, learning a new language is just a matter of getting used to a new syntax. Most of the concepts sound familiar to you.

Here are my 3 absolute favorite books. I’ve read each of these twice! Why only 3 books? I could list 30 books here, and chances are you wouldn’t read any of them because there would be too many too chose from! Less is more.

I handpicked the top 3 that I loved the most amongst all the other books I’ve read. And none of these books teach you the C# programming language. I’m assuming you’ve read one or more books on the topic or watched my courses. So, these books are “supplementary” materials to make you a better developer.

Agile Principles, Patterns and Practices (Robert C Martin)

Agile Principles, Patterns and PracticesRobert C Martin (Uncle Bob) is my guru! I’ve learned a lot from his books and videos. I’ve read most of his books twice and watched most of his videos. Even though the title has the word “agile”, the books is not much about agile. It’s mostly about SOLID principles of object-orientation and design patterns. The book is simple and easy to read and examples make sense.

 

Applying UML and Patterns (Craig Larman) 

51gVLEtrCNL._SX398_BO1,204,203,200_Shall I say the best or the only OOP book worth reading? There are many books on the topic but most of them are boring to death. Craig teaches you OOP in a real-world scenario. He walks you through the requirements of two applications and uses iterative development to build them. The book is around 900 pages, but I promise it’s worth reading. Prior to reading this book, I had read many books about OOP and used it for years. When I read this book, I realized I knew nothing about OOP!

Art of Unit Testing (Roy Osherove)

51VAZ9BwcvL._SX397_BO1,204,203,200_Great book if you want to learn all about automated testing and test-driven development. Roy has been very well respected in the area and he has been running workshops around the world teaching automated testing to C# developers. The book is just over 200 pages and you can easily read it.

 

 

What are your favorite C# books? Please drop a comment and share!

Related Posts

Tags: , ,

15 responses to “Top 3 Reads for C# Developers”

  1. Pierpaolo says:

    in addition to those you mentioned, a part of software enginnering and metodologies, my favourites are these IT fundamentals:

    -Computer Architecture: A Quantitative Approach(Hennessy&Patterson)

    -Introduction to Algorithms (Cormen,Leiserson,Rivest,Stein)

    -Operating Systems Concepts (Silberschatz)

    -Compilers: Principles, Techniques and Tools(Aho,Sethi,Ullman)

    -Fundamentals of Database Systems (Elmasri, Navathe)
    Computer Networking with Internet Protocols (Stallings)

    … and many other… I’ll update this post as soon I’ll remember that..

  2. Joel says:

    Does it make a difference that the first two books are +- 10 years old? Won’t the examples use techniques that are no longer preferred?

    • admin says:

      That’s exactly one of the reasons I have listed these books. Fundamentals never get outdated. Trendy books about hot topics of the day come and expire eventually, but fundamentals are always there.

      • falken says:

        Agreed. And thats why I like even oldest comprehensive C# book from Andrew Troelsen – well written; but as I need to refresh myself into latest MVC, it seems you are the guy now; tnx

  3. Tomas says:

    Adaptive Code via C#: Agile coding with design patterns and SOLID principles

  4. JD says:

    Thank you! I don’t always find time to reply to your course messages and blog posts, but just wanted to say they’re always extremely helpful!

  5. Jude Duval says:

    Mr.Mosh May I ask you a question? Is there a website that I can take Csharp tests,quizzes,and homework. I’m taking your beginner course on udemy. So far I’m not having any trouble,But I don’t think remembering the things that I’m learning. Do you have any suggestions?

  6. Renato says:

    Dependency Injection in .NET by Mark Seamann

  7. Niels says:

    Hi Mosh!

    As much as I agree with you that fundamentals are the most important bit, I completely disagree with you about what constitutes fundamentals. From your post is seems that fundamentals to you are; things that are around (I believe you said concepts that always are applicable).

    Sure Agile principles, are cool, unit-testing likewise as well as UML. However, a KanBan practitioner would argue that Agile is not a fundamental. A functional programmer wouldn’t care less about OO principles, etc.

    To me, fundamentals are the “stuff” under the covers; the things that make the language “tick”. I.e. if you understand garbage collection you can most likely get yourself out of a “tight” spot. If you know (in the .NET world) the difference between reference types and value types you are less likely to do “stupid” things, etc.

    So for me the top 3 books for fundamentals are:
    * Essential .NET, Volume 1 by Don Box. Yes, it is dated – but quite a lot of the fundamentals are the same.
    * CLR via C# by Jeffrey Richter. Awesome, awesome, awesome.
    * Customizing the .NET Framework Common Language Runtime by Steven Pratschner. Again, a bit dated – but it gives you chapter and verse about CLR.

    Niels

    • admin says:

      Dear Niels,

      Thanks for sharing your input. I like CLR va C# on your list. Haven’t read Essential .NET yet, but will definitely have a look when I get a chance.

      The books I listed are actually not about the C# language and .NET framework and that was deliberate. These books help a developer think like a “software engineer”. In my post, I mentioned specifically that if you master these fundamentals, you can pick up any programming languages quickly. That’s why I didn’t suggest any books that are specific to C# and .NET. By the way, the title “Agile Principles, Patterns and Practices” is a misleading title, as I explained in my post. More than 90% of the book is about problem solving and design patterns. If you haven’t read the book, I highly recommend you to read it and you’ll know what I mean.

      Having said that, I really appreciate your insightful comment. :)

  8. Muhammad says:

    UML? Really?

  9. Srihari says:

    Some of my favorites:

    C# in a Nutshell
    C# In Depth
    CLR Via C#

    Thanks.

  10. Bob says:

    Head First Design Patterns does a nice job of walking you through the application of patterns in code.

Leave a Reply