Steve McConnell wrote Code Complete
--one of the better books on code construction
I have ever read. He also maintains a list of his Top 10 list of computer science books
. Not necessarily about being a programmer
, but being a craftsman
and truly understanding the fundamentals behind what's going on.
The list is maintained at: http://www.construx.com/stevemcc/rl-cc.htm
The list is as follows:
- Weinberg's The Psychology of Computer Programming. This outstanding book has recently been updated and a silver anniversary edition is now available. The backup books, Mythical Man-Month and Peopleware are still available.
- Bentley's Programming Pearls is still available.
- Yourdon's Classics in Software Engineering has unfortunately gone out of print, and I don't know of a good substitute that includes the same papers.
- Gilb's Principles of Software Engineering Management is still available, as is my secondary recommendation, DeMarco's Controlling Software Projects.
- Yourdon and Constantine's Structured Design: Fundamentals of a Discipline of Computer Program and Systems Design is still in print, though it's expensive (about $90). Page-Jones' Practical Guide to Structured Systems Design is available. Booch's Object Oriented Design with Applications is also readily available.
- Myer's The Art of Software Testing is still available, but at 177 pages and $80, it's hard to call it a good value. I like Hetzel's Complete Guide to Software Testing about as well. But I think the best testing book available is a relatively new one, Kaner's Testing Computer Software. It's written by a practicing tester and is steeped in the realities of testing shrink-wrap software.
- Books on requirements analysis. Davis's Software Requirements is a good survey of requirements development issues. Yourdon's Modern Structured Analysis is showing its age, but it's still an excellent survey of software requirements issues. For real-time programmers, Strategies for Real-Time System Specification is still available. For an unconventional approach to requirements development, Rethinking Systems Analysis and Design is still available and still entertaining.
- Books on Quantitative Software Management. Boehm's Software Engineering Economics is still available and still highly recommended. Jones' Applied Software Measurement is now available in a revised edition. It's worth reading, but I have found so many typographical errors, inconsistencies, and questionable statistical practices that I can no longer recommend it as wholeheartedly as I did in Code Complete. Read it for the general messages but don't put too much stock in any specific numbers.
- Books on data structures and algorithms. Sedgewick's Algorithms is one good choice. If you can't find that, you might check out his similar books, Algorithms in C, Algorithms in C++, and Algorithms in Modula-3. Aho, Hopcraft, and Ullman's Data Structures and Algorithms is a good alternative, and of course the three volumes of Knuth's The Art of Computer Programming (vol. 1, vol.2, vol. 3) are the touch stone books in the field, though they certainly are not light reading.
- An overview of the software-development process. DeGrace and Stahl's Wicked Problems, Righteous Solutions is still available. Humphrey's Managing the Software Process is still available, but has probably been superceded by Paulk, et al's The Capability Maturity Model : Guidelines for Improving the Software Process.