Demystifying The Code

Must Read Books

I love reading technical books and I have read alot of them!  A handful of these books have had a profound impact on the way in which I write code.  I thought I would share these rare gems with you.  I highly recommend each of the following books!

Clean Code: A Handbook of Agile Software Craftsmanship

Where most technical books fall short is providing value judgements. This book is a clear exception to that rule. In fact, the purpose of the book is to disseminate Uncle Bob’s opinion on how to develop “Clean Code”.

Clean Code offers advice on nearly every aspect of software development. From seemingly simple concepts such as naming, formatting and designing functions through object design, testing, exception handling and concurrency, there is industry proven advice at every level.

The thing I found most surprising about this book is how much I learned about topics I thought I had down. I picked up dozens of useful bits of advice I use every day. While the examples in this book are written in Java, they are crystal clear to C# developers (and I’m not just saying that). Furthermore, Uncle Bob’s advice applies equally to C# and Java devs.

Uncle Bob is one of the giants in our industry. Do yourself a favor and learn from him!

Dependency Injection in .NET

This book is as much about proper object modeling and OO design as it is about Dependency Injection. Mark Seemann, a former Architect at Microsoft, clearly illustrates how to write extensible, maintainable and testable code by building loosly coupled systems. The book covers the SOLID principles and a wide variety of design patterns throughout.

Obviously, the book covers Dependency Injection in depth. Mark covers the 4 main DI patterns and provides concrete guidance on which to use when. He covers so-called DI anti-patterns like service locator and control freak, as well as advanced topics like object composition (how and where to wire up your object graphs) as well as managing object lifetimes. Later chapters cover, in depth, how to work with some of the most popular IoC containers such as Castle Windsor, StructurMap, Spring.Net, AutoFac and Unity.

This is one of the best programming books I have ever read – no doubt about it!

Growing Object-Oriented Software, Guided by Tests

I can typically judge the value of a technical book by the amount of notes I make in the margins. This one is covered! GOOS (as this book is fondly known in the industry) is the guide to effective agile development, as well as proper OO design.

If you are not familiar with the value of BDD or TDD, or maybe you don’t know how they relate or how to apply them, GOOS covers these topics with crystal clarity. However, GOOS goes well beyond intruducing the topics. It provides clear guidance, by example, on how to implement a successful software project in an agile manner.

The second reason I love this book is that it provides clear (and expert) guidance on how to properly develop an OO model. It follows up this guidance with an example project to illustrate their points. While the sample code is in Java, it is clear for C# developers.

This is perhaps my favorite programming book ever.

The Art of Unit Testing: With Examples in .Net

The Art of Unit Testing covers the topic of unit testing from cradle to grave, offering guidance for both the beginner and the seasoned tester. Beginners will find the book approachable, while veterans will learn countless techniques and best practices.

The book starts with a healthy intro into unit testing, covering topics such as best practices, stubs, mocks and isolation frameworks. The second half of the book is dedicated to more advanced topics like automated testing in builds, writing maintainable tests, testing legacy code and much more…

While it is easy to write a test, writing a good, maintainable test is an art form. If you are looking for a book to help you master this art, look no further.

C# in Depth, Second Edition

Jon Skeet is the undisputed heavyweight champion of C#. If you don’t believe me, ask Stack Overflow. In C# In Depth, Jon imparts his knowledge of the C# language with you.

As developers, we sometimes use language features without really understanding how they work, and thus don’t understand their impact. C# in depth covers most, if not all of the important language features in C# 2 and 3, er… well… in depth. Through C# in Depth, you will gain a deep understanding of these features and how to exploit them in your code.

Jon expertly covers topics such as Generics, Delegates, Lambdas, Expression Trees and much more.

If you want to gain a deeper understanding of the language of C#, I strongly urge you to read this book.

Demystifying The Code