This is a companion discussion topic for the original blog entry at: http://www.codinghorror.com/blog/2004/02/recommended-reading-for-developers.html
Good book selection Jeff,
I’d probably add Waltzing with Bears by Demarco and Lister to the list - a great book for understanding (or at least accepting) risk management on software projects.
Is Code Complete 2nd Ed worth getting if you’ve already read the 1st Ed? It’s one of those must have books, but, I have it that and the fact that it’s too big to read on my commute…
I think it’s worth getting the second edition, but realize that I am a total McConnell fanboy. I already owned two copies of the 1st edition, one for home, one for work. There are a lot of updates, though the body of the content hasn’t changed dramatically. The main one I noticed is that he re-worked all the examples in modern language. Some of the other changes are listed on Steve’s site:
I will definitely look into The Dynamics of Software Development
and Walting with Bears
The other DeMarco book was excellent but a bit depressing; at most companies the employees have little to no control over the factors described in Peopleware. And even the managers can’t buck company policy to the extent implied in the book. Kind of sad, but it makes me want to start my own company. If only I wasn’t so lazy…
Yeah, Cooper is kind of overbearing-- you have to disregard about half of what he says. The reason I keep reading him is because the other half is usually great.
I didn’t like the Inmates book. I got the distinct impression that what Alan found to be hard to use defined his definition of what the world found hard to use. And he makes the extremely bold claim that ALL the interaction design for the ENTIRE product should be done before any coding is done. What? Are we going back to the waterfall, except calling it interaction design instead of requirements this time? Maybe as the first introduction to developing around personas is this book good, but the rest was, in my opinion, a waste of time.
It’s really a question of focus. I’m more interested in UI and usability.
In other words, it doesn’t matter how pretty or bug-free your code is on the inside when nobody can figure out how to use the outside.
I do have a few high level coding books in here, but I explicitly avoid recommending anything too specific or overly technical. Most developers are pretty good at the technical coding stuff anyway; what they need is to exercise some different muscles.
I notice there are no books specifically on Refactoring, or TDD. Do you have any favorites? Do you believe those topics are worthy of being on a recommended reading list?
Your clear focus and passion about your topics is definitely the reason I keep coming back to your blog.
I was interested in those two topics because of the book I’m just finishing, Michael Feathers “Working Effectively with Legacy Code”. It is a nuts bolts look at injecting TDD into development when you can’t start from scratch. It’s defintely worth a look.
Great list, thanks!
If you’re working in an OO language like Java, the list should probably include Design Patterns: Elements of Reusable Object-Oriented Software, although this book actually predates Java.
And definitely that Fowler book, Refactoring: Improving the Design of Existing Code. In addition to recommendations for approaching refactoring, Fowler provides a list of “code smells” to look out for, which is a handy shorthand for bad ideas to avoid.
I’m also a McConnel fanboy, I’ve even got my first 3 books by him autographed. (How you know you’ve gone from fan, over the line to fanboy)
“Agile and Iterative Development: a Managers Guide” By Craig Larman is a great book on Agile development another great primer for Agile is Larman’s "How to fail with RUP"
Anyway, this book reminds me of Code Complete in it’s light style and in-your-face reality checks, with wonderful sections like “How to tell if your XP expert isn’t”
I also like Jakob Nielsen’s book on Home Page Design where he shows 50 sites, and how they are wrong/right for information architechture and usability.
Btw I have my own saying.
For an application to truly beautiful, it has to be beautiful in teh code and the design ui. If only 1 is beautiful, then it is truly bad.
I’d recommend Knuth, ‘The Art of Computer Programming’ and Abelson and Sussman, ‘The Structure and Interpretation of Computer Programs’.
I am shocked that you don’t mention the single most important book that has come out in the past 11 years: Design Patterns: Elements of Reusable Object-Oriented Software by Vlissides, Helm, Gamma, and Johnson. Not one of the books you mention has had a cross-developer, cross-language impact that this one has.
Anyone doing OO development had better read this book, lest you try to reinvent the same wheel many folks before you have already honed into a well-oiled machine.
And yes, it uses C++/Smalltalk for examples…there are C#, Java, etc versions that exist now, so not a big deal if you don’t know those languages…
Code Complete Second Edition is by far the BEST book every written for our field. It ranks number one of my list. The book that ranks number two most people probably wouldn’t want because it is not only language specific, but platform specific. It is John Walkenbach’s Power Programming With Excel 2003. If you ever wanted to learn to automate Excel or learn VBA in general it is the best book every written.
One more interesting book is : How to Solve it By Computer by R G Dromey. (The idea of the book is based on another book How to Solve It - A New Aspect of Mathematical Method).
Being from a primarily C background, I think Kernighan and Pike’s “The Practice of Programming” is good as well.
I had read Programming Pearls. In that book, Bentley recommends
"Conceptual Blockbusting - A Guide to Better Ideas". Have you read this book ? How did you find it ?
Code complete is a great book, we had a copy in office and usually tell many people to refer to page 25-26 where Steve says, and the people who spend less time in front of computer are more productive…
I have read also After the Gold Rush, in which he stress about the responsibility of Software developer (Each should get a license…).
An Expert should know 50000 info interests me great.
For OOAD , I would say Grady Booch Book is the bible.
I’m absolutely amazed that entirely by coincidence this collection is almost identical to mine! Spooky.
One point worth noting is that you cant really read Peopleware unless you’re also willing to read Constantine on Peopleware to balance out the experience.
Also, have you ever considered condensing your blog entries into a Joel On Software Style Book? kind of like his “Best Software Writing” series? I’d be on your list of pre-orders.
I cant agree more about these excellent books
The last book that I read and that resist technologies changes is Ship it! A Practical Guide to Successful Software Projects
Is from pragmatic press and with simple and useful ideas shows how to survive to all the things related to the development of a software project
Supprised my favorite “leadership” book isn’t on there “Becoming a Technical Leader: An Organic Problem-Solving Approach”
I really suggest “Dreaming in Code”. Amazing read.
Perhaps I am showing my age, but I would suggest three books that are currently (unfortunately) out-of-print: P. J. Plauger’s “Programming on Purpose” books.
All three are books that I enjoy rereading periodically. Granted, some of the articles are a bit dated, such as the discussion of online e-check companies, or DOS memory management, but most of the articles have more than stood the test of time, in my not at all humble opinion.