It has been two years since I stepped out of college and started my professional career, and the journey could not have been more exciting. While a professional degree and textbooks do give you a solid foundation to prepare yourself for the real world, what makes the information technology industry so radically different is the fact that it is continuously evolving – and good programmers know just how important it is to keep yourself updated.
But what simple Google or StackOverflow searches for errors that your debugging tool spit out won’t teach you is this: the craft of how to write beautiful code and eventually truly amazing software.
Given the time, anybody can learn how to use a library or framework to build software that works, but realizing the difference between software that just works and software that is truly exceptional is what makes one go from a good developer to a great developer.
Here are five books I believe that every developer should have on his/her desk, for they have helped me immensely to hone my mind and think like a programmer.
1. Structure and Interpretation of Computer Programs
Structure and Interpretation of Computer Programs, or the wizard book as it is fondly known, is a textbook and quite often is a common fixture of introductory programming classes. What’s great about the book is that it is agnostic – it does not teach you how to write in a particular language. Rather, SICP teaches you how to think like a programmer, and it does a great job at that.
Don’t believe my word? Read what Peter Norvig, director of research at Google, has to say.
2. The Algorithm Design Manual
There still exists a debate among programmers as to which algorithm design book to read: whether it is the more detailed, in-depth Introduction to Algorithms or Skiena’s The Algorithm Design Manual. What makes this book my pick is Skiena’s writing style, his ‘war stories’ and the amusing Hitchhiker’s Guide to Algorithms. It is very hard to find a book that teaches you algorithms with an element of fun, and this book does just.
4. The Mythical Man Month
Drawing from Fred Brooks’ experiences while managing the development of OS/360 at IBM, this book is full of maxims (or laws, as Brooks likes to term them), that pertain to software engineering and project management. A classic on the human elements of software engineering, it focuses on how great teams are managed well by advocating practices such as code freezes, versioning, and constant communication among team members.
Oh, and you should totally read this book for songs like these:
Ninety-nine little bugs in the code.
Ninety-nine little bugs.
Take one down,
Patch it around,
One hundred and twenty seven little bugs in the code.
5. How to Ask Questions The Smart Way
This is more of an essay than a book, but is a must-read for every programmer out there. Faced with lines of red text in their developer consoles, programmers often tend to copy the entire text into StackOverflow or similar programming forums, without bothering to do their homework. Hackers are often a different breed, and most of them survive on a steady diet of problems that challenge them. While the open source community has a great reputation for being really helpful, you can only expect that if you aren’t a luser – a waste of time and effort.
This is my list of favorite programming books. What’s yours?