The best software engineering books, according to hackers
21 software engineering books recommended in Hacker News comments over the past year, ranked by how many separate people recommend each one.
- Most recommendedThe Mythical Man-Month by Fred Brooks56 people recommend it
- Least regretCode Complete by Steve McConnell14 recommend, 0 criticize
- Free and lovedSoftware Engineering at Google by Winters, Manshreck and Wright7 people recommend it
All software engineering books
- The Mythical Man-Month by Fred BrooksA classic essay collection on software project management, valued for lessons on team size, communication and conceptual integrity that people say still hold. Some readers find parts dated or aimed at management rather than coding.56recommend
- Designing Data-Intensive Applications by Martin KleppmannWidely recommended guide to distributed systems, databases and data-intensive design, valued for depth, structure and topics that stay relevant.37recommend
- A Philosophy of Software Design by John OusterhoutShort, practical book on software design that people say improves code and team habits. One critic says it reads more as a set of heuristics than a rulebook.28recommend
- Code Complete by Steve McConnellRecommended for practical, research-backed advice on software construction and managing codebase complexity, and remains a favorite for many readers.14recommend
- The Architecture of Open Source Applications by Amy Brown and Greg WilsonLearn software architecture by example: each chapter is written by a maintainer of a real open source project, showing how to think about application design.13recommend
- Design Patterns by Gamma, Helm, Johnson and VlissidesRecommended for teaching reusable object-oriented design vocabulary and solving code design problems. Critics say some patterns are dated, tied to C++/Java as of 1994, or overused.12recommend
- Site Reliability Engineering by Beyer, Jones, Petoff and MurphyPeople recommend it as a highly regarded, excellent reference on site reliability engineering, covering important reliability topics well. No recurring criticism appears in the quotes.8recommend
- Domain-Driven Design by Eric EvansPeople recommend it for its good, useful advice on domain-driven design. The most common caveat is that the advice feels dated.7recommend
- Refactoring by Martin FowlerRecommended for showing how to improve existing code bit by bit, with solid tests as the essential precondition. One critic found much of it already obvious from experience.7recommend
- Software Engineering at Google by Winters, Manshreck and WrightPeople recommend it for its practical lessons on writing and maintaining software at scale and over time, and it is available online for free.7recommend
- Clean Architecture by Robert C. MartinSenior engineers recommend it and call it fantastic, but critics say it was overhyped and written to make money from sales and lectures.6recommend
- Tidy First? by Kent BeckShort, practical book on small safe code-tidying steps and the economics of software design, easy for teams to read together.5recommend
- The Psychology of Computer Programming by Gerald WeinbergA classic 1970s book on the human side of software development, recommended as a historical read that still puts people at the center of programming work.5recommend
- Agentic Engineering Patterns by Simon WillisonRecommended for responsibly applying AI in software development. Main caveat: critics say the patterns go out of date quickly.5recommend
- Patterns of Enterprise Application Architecture by Martin FowlerPeople recommend it for moving past single-class business logic toward designing larger systems, and for understanding how real application code is structured.3recommend
- Release It! by Michael NygardRecommended because its lessons have saved readers in production emergencies, according to people who have used them during outages.3recommend
- Patterns of Software by Richard GabrielA free book by Richard Gabriel, recommended as the first genuine attempt to apply Alexandrian patterns to software.3recommend
- Agentic Software Engineering by Ralf S. EngelschallRecommended for broad coverage, from brainstorming and web search to querying other LLMs for quorum answers. Critics find it dense and largely AI-written.3recommend
- Domain-Driven Design Distilled by Vaughn VernonReaders say it made them a much better software engineer, though some found it lacked actionable insights.2recommend
- Implementing Domain-Driven Design by Vaughn VernonRecommended as a practical, hands-on guide to one approach to domain-driven design, with readers working through its examples.2recommend
- Specifying Systems: The TLA+ Language and Tools for Hardware and Software Engineers by Leslie LamportRecommended as a good starting point for learning to specify systems using mathematical proofs and state machine modeling.2recommend