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.
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 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.
Does anyone have any suggestions for a good JavaScript book? There are so many out there and most of them are crap. I would love to find a list of good language-specific books. It is hard to find a good book.
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).
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.
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.
This is old now - and completely Apple-centric - but when it comes to understanding UI design principles, it’s still one of the books that influenced me the most. His discussion of how in the old days Apple tried to work out how to get users to figure out during installation of a software package whether they had a colour or monochrome screen is a classic example of how some problems are just about intractably difficult, and how users will make rational decisions (to them) that are absolutely NOT what developers anticipated. And his ‘hotel lobby’ cartoon is absolutely classic!. A great book if you can find a copy.
Hey Jeff,
Just wanted to thank you for recommending Code Complete, I’m about half way, and I have found a lot of ways of improving my code, maybe I’m a bad programmer, but at least I’m getting better.
I have read about half the books in your list and I learned a lot from them.
However I read the books after making the mistakes that people who don’t read these sort of books make.
I think I faced the same problem as most people trying to learn effective software construction. There are a lot of books with a lot of lessons for programmers, too many to learn at once, and too many to choose from when one starts a new type of project.
All the good ideas about how software should be developed were first stated beginning over 30 years ago in three seminal books: The Psychology of Computer Programming by Gerald Weinberg (1971), The Elements of Programming Style by Brian Kernighan and P. J. Plauger (1974), and The Mythical Man-Month by Fred Brooks (1975, which you’ve already listed).
Just about everything those authors wrote about still holds true today, and just about every idea on the subject offered since then was actually previously stated in their books.
“The Indispensable Handbook of Systems-behavior, written specifically for all of us who must daily cope with the Pitfalls, Foibles, and Failures of the Systems that make up our Modern World.”