5 books all professional programmers should read...

Has anyone read any of these books? Are they worth reading? This first is available at my library. I would have to buy the rest.

I found this list and the descriptions on this story on digg.

Code Complete
by Steve McConnell
Some will say that the majority of the knowledge in this book is common sense, which reminds me of the quote, "Common sense is instinct. Enough of it is genius." by George Bernard Shaw. It covers just about every aspect of programming. McConnell is a great writer. Although the book is large, it's easy to read and understand.

The Pragmatic Programmer: From Journeyman to Master
by Andrew Hunt, David Thomas
I really can't decide if I like The Pragmatic Programmer or Code Complete better. They are both similar books in that they cover a lot of general programming practices. Andy and Dave have a very down to earth writing style. The book, like Code Complete, is very easy to read. This book is fully of practical advise, that for some reason just does not seem to get taught in computer science courses. If every computer science graduate was required to read this book before graduating, I think the world would be a better place.

Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development
by Craig Larman
Don't be mistaken by the title of this book. This is THE book for learning object-oriented analysis and design. Larman goes through each step of the process, taking an application from concept to completion. It covers requirements gathering, creating use cases, agile development, iterative development cycles, testing, and of course UML. The code examples are in Java, but you don't really need to know Java to understand what is going on.

Design Patterns: Elements of Reusable Object-Oriented Software
by Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides
If you're a programmer I'm sure you've heard of this book. It's one of the most famous software engineering books ever written. This book is a tough read. The examples are in C++, which might be why I had such a difficult time with it. It's well worth it though. Recognizing and using software patterns is an important part of being a good programmer.

Refactoring: Improving the Design of Existing Code
by Martin Fowler, Kent Beck, John Brant, William Opdyke, Don Roberts
If you're a professional coder, more than likely you're going to spend a large part of your time fixing/modifying code that someone else wrote. It's the nature of the beast. This book is a catalog of common problems in code, and the best way of Refactoring them. Reading this book will greatly increase your ability to detect bad code and fix it.

Thanks for the post. I have a couple of these books already but I'm always up for more.

Dr.Ghastly wrote:

Thanks for the post. I have a couple of these books already but I'm always up for more.

Which do you have? Worth reading? I'm thinking about checking some of them out.

I have Code Complete and Applying UML and Patterns. Both very good.

Code Complete and Design Patterns are my two favorites of the books listed. A few others I'd recommend:

The Mythical Man-Month

Joel on Software (Link is to Spolsky's site where you can pick up his books)


Any extreme programming/agile book - you may not agree with the methodology, but there are bits and pieces that can really help you with one of the more crucial tasks, estimation.

I have Code Complete and Pragmatic Programmer. Both definitely worth a read.

Ditto on the Pragmatic Programmer. A lot of it is stuff you'd think is common sense, but at least you'll have a reference for it when your boss asks about your crazy ideas

Code Complete isn't the only McConnell book that is a must-read.

Rapid Development belongs right next to, not beneath, Code Complete.

What Code Complete is for coding, Rapid Development is for the software development process (managing everything that goes around coding)

Thanks for all the great advice guys. I've been out of college now 7 years, and haven't really read any programming books since then. But, they sounded quite interesting. So, I thought I might give them a try.

I hate reading programming books. Am I the only professional and hobby programmer who does?

Excellent list. If I were making a list for people who don't have CS degrees, like myself, I would add a data structures and algorithms book to it over Larman's.

Code Complete really made a difference in my early career. I haven't picked up the second edition yet but I'm looking forward to seeing how it's been updated.

Design Patterns isn't a book to read from cover to cover, it's really dry, but I would say it's an essential reference. Not only will it make you a better developer, but I ask interview questions based on this book and I am far from alone in this practice.

Refactoring is one of those books that would make my life easier if I could get all of my co-workers to read the damn thing

Right now I'm reading Lakos's Large Scale C++ Software Design, and it's an excellent resource. My last project was a nearly 1MLOC beast - and we benefited greatly from some of the same approaches he describes. At the same time, it's probably not the best book for the fresly minted graduate - it requires a bit of perspective to appreciate.

I was also going to recommend The Mythical Man-Month and Peopleware as well, but Minase beat me to it.

From the original list, Code Complete and Design Patterns are my favorites. Pragmatic Programmer is on my list. And as for Refactoring - I didn't like it very much, mainly because I thought they describing common knowledge. But I could be wrong.

Well, the prospect of reading about programming doesn't sound much appealing next to reading about people getting chopped to pieces. But I really should give this a try, I'll go and ask my boss if he will fund it. It would be way better to get these books for free.

doihaveto wrote:

And as for Refactoring - I didn't like it very much, mainly because I thought they describing common knowledge. But I could be wrong. :)

Oh how I wish it were. Although there's probably a ton of consultants who are glad it isn't

That's a pretty good list. I'm not familiar with the Larman, but everything else there is good.

The Mythical Man-Month is great, in part because it's so old, but still so relevant.

The Tao of Programming. Old School.

For the java programmers: Effective Java

Everyone that programs in java should read at least chapter 3 (free at the linked site).

The Tao of Programming wrote:

Thus spake the master programmer:

''After three days without programming, life becomes meaningless.''

I'll to that.

Thanks for these suggestions.

Quintin_Stone wrote:

I hate reading programming books. Am I the only professional and hobby programmer who does? :)

I hate it, but it's like medicine: it tastes bad but in the end it's good for you.