Every now and then I get the question about what books I recommend on the topic of programming and software development. As I try to practice the DRY (Don‘t repeat yourself) principle while writing code, I‘ll also intend to do it in real life. And by answering this question in form of a blog post, I‘ll be able to redirect future questioners here.
I’ve assembled a list of books that I’ve read or that’s in my books-to-read queue.
The list is sorted by my favorite books.
Clean Code Robert C. Martin, also known as Uncle Bob I finished reading this book a week ago and I have only one thing to say, it’s a masterpiece. If you are a professional programmer, you should read this book. I learned many, many neat tricks reading this book. Uncle Bob have 40 years of experience as a programmer, and he worked very hard not to become a business wonk, and this made him sharp like a knife. Read this book, it will give you a clear perspective on how to write quality code. Expect to read lots of code samples, and work hard to grasp the content. I’m going to convince every programmer I work with to read this book!
The Pragmatic Programmer Andy Hunt and Dave Thomas Hunt and Thomas are great storytellers and you’ll be blown away with their wisdom – it seems like they have been programmers forever! I like this book because it‘s hands-on and lots of the advice you get by reading it, you can put into practice in your daily job. The book tells you everything you need to know in order to become a good programmer. They also push hard that programming is not only science, but a craft, and you need to practice it a lot in order to become a master - hence the slogan “From journeyman to master”. The book will provide you with tons of practical tips and the first one is “Care about your craft”. If I ever get responsible for a team of developers - hey, who the heck would put me in charge? :p, I’ll give this book to every one of them and then send them home and ask them not to come back before they have completed the book!
Design Patterns: Elements of Reusable Obect-Oriented Software Eric Gamma, Richard Helm. Raplh Johnson, John M. Vlissides AKA. The Gang of Four The first book ever to write about design patterns, it was released back in 1994 and it documented 23 patterns. I have to admit that I had to read this book several times to grasp most of the ideas, but it was worthwhile.
This book is not for beginners, but for developers with experience from OO (Object Oriented) languages and design. You probably find people argue that this book is not applicable today because the patterns were discovered in the time of C++, which don‘t contain modern language features like Generics and Events like we have in C# today. I disagree with these people because the core underlying principles are just plain old Object Orientation, but I can understand the argument. The samples in this book might not be as relevant for C# as they are for C++, and if you apply some of these patterns in a modern language, you obviously need to think about the features you have available in the language, and use them. There is a reason that we have the event language feature in C# today – so it’s easier to implement the observer pattern! If you learn and understand the observer, you‘ll also learn that loosely coupled code is harder to read and debug. The book is a good reference and contains the most general patterns you need to know about, but remember that even though you use a language with built-in language feature for some of these patterns, you should know about the pros and cons in order to make good design decisions! This is a good educational book.
Domain-Driven Design: Tackling Complexity in the Heart of Software Eric Evans I think this one is about to become one of the most important books out there on the topic of OO design and modeling. It‘s been a while since Evans published this book, but it seems to get more and more attention nowadays, and more and more people I talk to practice DDD (Domain Driven Design). I think the most important thing Evans teaches us is what he calls the ubiquitous language. The books also teach good modeling practices, and documents lots of useful patterns. This book made me revisit Object Orientation. You should read it, if you are experienced with OO design and programming.
Head First: Design Patterns Elisabeth Freeman, Eric Freeman, Bert Bates, Kathy Sierra This is the design patterns ABC-book. The authors have a great talent in communicating complex ideas in a way that‘s easy for the readers to understand. The book contains some of the same patterns as the GoF-book and the code samples are mostly in Java as well. Highly recommended for beginners on the topic of design patterns!
Windows Presentation Foundation Unleashed Adam Nathan The only book I‘ve read about Windows Presentation Foundation, and It gives a solid introduction to the technology. I admit that I haven’t read the book from chapter to chapter, but use it frequently as a reference when I need to learn new neat features about WPF. The code samples in the book even have color highlighting! This book should be in every WPF/Silverlight developer’s bookshelf.
The best Software Writing Joel Spolsky Mr. Spolsky has assembled a very entertaining book of essays on the topic of software engineering. The essays I remember are Paul Graham’s “Great Hackers” and Eric Lippert’s “How many Microsoft Employees Does It Take to Change a Lightbulb?”.
Agile Software Development, Principles, Patterns, and Practices Robert C. Martin I’m hooked on Uncle Bob, he is the Master Chief of programmers, and an awesome writer. This is a book I’ll read very soon.
Patterns of Enterprise Application Architecture Martin Fowler This book is yet another book that’s on my books-to-read queue. Fowler is a notorious craftsman in the art of software engineering, and I’m looking forward to take a snapshot of his brain!
Code Complete: A Practical Handbook of Software Construction Steve McConnel Have not had the chance to read this book yet, but I will sometimes soon. The word on the street says that this book is even better than Pragmatic Programmer – now we have to see about that!
Applying Domain-Driven Design and Patterns: With Examples in C# and .NET Jimmy Nilsson I haven’t had the opportunity to read this book yet, but people that have read it says it’s a more hands-on and practical book than Events book.
This is my list, for now, but I’m continuously seeking more knowledge in order to become a master in the craftsmanship of software development. While assembling the list I just realized that I don’t have a book about Test Driven Development – I should do something about that.
It would be interesting to hear what you and other fellow developers are reading, and what you have in your bookshelf – so therefore I‘ll start yet another meme and I invite you and the following people to answer:
Remember Me