4 Classic Books on Software Engineering

Introduction

Things move fast in tech, and books on software quickly become obsolete. But some books first published ten or twenty years ago are still essential reading for beginner and experienced software engineers.

Read on to discover which classic software engineering books are a must read!

The Must-Read Books

The Pragmatic Programmer

by David Thomas and Andrew Hunt. Published 1999, updated 2019

I recommend this book to all beginners, but experienced developers will find useful tips too. It covers a broad range of topics, from writing maintainable code to career development. All the suggestions are presented in a well-reasoned (and pragmatic 😊) manner, so you’ll understand why not just how to follow these tips.

Clean Code: A Handbook of Agile Software Craftsmanship

by Robert C. Martin. Published 2008

Phil Karlton once said “There are only two hard things in Computer Science: cache invalidation and naming things”.

This book will make you better at naming things! It covers many other essential subjects such as code readability, test-driven development, and error handling. It also has a section on detecting code smells, which is skill well worth developing.

Refactoring: Improving the Design of Existing Code

by Martin Fowler. Published 1999, updated 2018.

Code refactoring improves the maintainability, architecture, simplicity, or performance of code. It’s a practice that has been adopted across the industry, and it’s an effective way to reduce technical debt.

This is the book that brought refactoring into the mainstream, and is still the canonical reference on the subject. There’s plenty of practical detail on exactly how to clean up your codebase and, like Clean Code, it also covers code smells.

Design Patterns

by Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides. Published 1994.

Ok, reading this book can be hard work! (it has been described as “dry” 😅). These are fair criticisms, but the book contains invaluable knowledge and there’s a reason it’s still the standard reference for design patterns.

If you want to produce elegant systems (or maybe you’re preparing for a FAANG interview?), reading and understanding this book will give you a big advantage.

What? No Knuth?!

What about The Art of Computer Programming, or Structure and Interpretation of Computer Programs?

These are indeed classic texts in computer science, but be warned that they are not easy reading, and they are not short. In fact, The Art of Computer Programming was started in 1962 and only 4 of 7 volumes have been published so far! If you’re determined to read all of the foundational computer science texts, they are worth investigating, but don’t feel that you must read them.

Conclusion

These classic books will give you a solid grounding in important concepts for software development. Are there any books you would add to this list? Let me know!

Title image

Hi, I'm Patrick

I'm lucky enough to have been part of some amazing software teams. From developing some of the core software inside Sony's PlayStation consoles (as part of Sony PlayStation's Advanced Technology Group), to developing and running algorithmic trading systems in a multi-billion dollar hedge fund.

My goal is to help software teams produce the best software possible, and enjoy themselves while they're doing it.

My experiences have taught me a lot about what makes high-performance software teams work. I hope that by sharing and discussing these insights, we can all help each other produce better software :)

Get GitDailies

Keep your team aligned and motivated.

  • Get daily snapshots of your team's GitHub activity
  • Use Pull Request metrics to improve productivity, code quality, and collaboration
  • Monitor your codebase for critical changes
  • Automatically gather evidence for SOC2, ISO 27001, and other audits
  • Slack and Telegram integrations
  • Installs seamlessly as a GitHub app