Here is a list of books that I consider a classic for software engineers. I'm sure there are others, but these have served me well over the years.
- Code Complete. McConnell covers all the basics of software construction, from organizing code, starting from pseudocode and all sorts of techniques for reducing errors and improving designs.
- Rapid Development. A companion of sorts to Code Complete, this one covers much of "the rest" of software development - evaluating a methodology, estimation, etc. Basically, how to get your project underway and moving smoothly along.
- Working Effectively with Legacy Code. Don't let the title fool you - this isn't just about how to work with legacy code. The core approach is to refactor and add tests incrementally to get the codebase under control at least in parts - and the book is a wealth of ideas on how to do that. If your code is not legacy, this still helps you keep a healthy codebase.
- Clean Code. How to write code that "reads" clean and straightforward, full of tips and test-driven-development.
- The Psychology Of Everyday Things - I purchased this twice. Great first book for me to learn about truly putting myself in the user's shoes and looking at every detail to see where I can add or take away to help usability.
- The Mythical Man-Month. Some parts a bit dated, but so much more isn't, and it's quite telling to go through the book and see which things remain constant - there are excellent lessons for teams and projects in here.
- Peopleware. The development of large software projects is a social/people problem to a very large degree. Certainly for management. Good essays and thoughts in here.
- Design Patterns. A somewhat dangerous book in that it can be misused. Two good uses are a common language, and to understand what you're walking into when your solution starts to approximate a known pattern.
- Slack. A long-form, better studied version of "slow is smooth, and smooth is fast", considering workloads, role specialization and other practical matters.
- Why Does Software Cost So Much?. DeMarco is a pretty great writer to be honest, regardless of the subject. Here, a collection of essays, some a bit dated, but full of gems.
- Structured Analysis and System Specification. A classic on how to approach, understand and specify systems. Some tools are out of style, but the principles remain applicable, and familiarity with the ideas is beneficial.
- Object Oriented Analysis And Design With Applications. The object-oriented counterpart to the 'structured' analysis style, I never found this terribly satisfying, but it introduced many of the object-oriented concepts and techniques and is a historical cornerstone.
- UML User Guide. Covers UML diagrams and design quite thoroughly, many of which are in use today, even if the formalisms are often tweaked.
Other very enlightening books for me have been Inside SQL Server 7.0 and Inside Windows NT, because of how they manage to show the architecture of very large software systems, and then drill into the specifics, pulling away the curtain on how much of the magic is made and showing that yes, you too can build systems of much higher complexity that you might have otherwise though. Hopefully these encourage you to take on essential complexity and not creating it on accident. More modern versions exist of these two, and if you work with either product I would highly recommend getting them by the way.
Happy reading!
Tags:
books
Home