The Solid Software Bookshelf
One upon a time I worked at a web agency in Amsterdam. It was great times. We were talented and hungry, had lunch together every day, and the Grolsch was free and always fully stocked.
Something in particular I loved was our library of books, spanning everything from operating system design to Zen buddhism. Management books explained TPM and The Toyota Way; personal productivity books taught GTD and The 7 Habits; and philosophy books provided different perspectives on everything.
It felt comforting having it there and walking past it all day. Whether you felt an urge to learn, needed to looking something up, or just wanted to relax, you could always grab a book and chill on the couch. Doing this was considered a good thing.
So today I suggested that we set up something similar at my current place of work, starting out with development related material.
Hence, here is my list of books that provide a rock solid foundation for anyone in the business of creating software—in general, but most of all for the web.
Refactoring: Improving the Design of Existing Code (2nd Edition)
For more than twenty years, experienced programmers worldwide have relied on Martin Fowler’s Refactoring to improve the design of existing code and to enhance software maintainability, as well as to make existing code easier to understand.
Code Complete: A Practical Handbook of Software Construction (2nd Edition)
Capturing the body of knowledge available from research, academia, and everyday commercial practice, McConnell synthesizes the most effective techniques and must-know principles into clear, pragmatic guidance. No matter what your experience level, development environment, or project size, this book will inform and stimulate your thinking—and help you build the highest quality code. —GoodReads
The Pragmatic Programmer
The Pragmatic Programmer cuts through the increasing specialization and technicalities of modern software development to examine the core process—taking a requirement and producing working, maintainable code that delights its users. It covers topics ranging from personal responsibility and career development to architectural techniques for keeping your code flexible and easy to adapt and reuse. —Amazon
Design Patterns: Elements of Reusable Object-Oriented Software
This book isn’t an introduction to object-oriented technology or design. Many books already do a good job of that…this isn’t an advanced treatise either. It’s a book of design patterns that describe simple and elegant solutions to specific problems in object-oriented software design…Once you understand the design patterns and have had an “Aha!” (and not just a “Huh?” experience with them, you won’t ever think about object-oriented design in the same way. You’ll have insights that can make your own designs more flexible, modular, reusable, and understandable—which is why you’re interested in object-oriented technology in the first place, right? —Preface
Even bad code can function. But if code isn’t clean, it can bring a development organization to its knees. Every year, countless hours and significant resources are lost because of poorly written code. But it doesn’t have to be that way. — Amazon
You Don’t Know JS
The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition (2nd Edition)
Few books on software project management have been as influential and timeless as The Mythical Man-Month. With a blend of software engineering facts and thought-provoking opinions, Fred Brooks offers insight for anyone managing complex projects. —Amazon
When Microsoft started growing seriously in the 1980s, everybody there had read The Mythical Man-Month, one of the classics of software management. (If you haven’t read it, I highly recommend it.) The main point of that book was that when you add more programmers to a late project, it gets even later. —Joel Spolsky, co-founder of Stack Overflow
Don’t Make Me Think
Since it was first published in 2000, hundreds of thousands of Web designers and developers have relied on usability guru Steve Krug’s guide to understand the principles of intuitive navigation and information design. Witty, commonsensical, and eminently practical, it’s one of the best loved and most recommended books on the subject. It’s a core foundational book that every Web designer must internalize to make their designs truly effective. —Amazon
One More Thing…
There’s actually tons of great books you can read online for free. This GitHub page provides a massive list of programming books sorted by language, and even links to other similar resources. And of course, you could just google it and find even more.
Knowledge really is everywhere.
(Personally, I really do like paperbacks though.)