Ask HN: What books should I read to improve as a software engineer?
Foundational software engineering & design books
- Strong support for general-principles books that shape how you think about code and projects, not specific tools.
- Frequently praised: works on software design philosophy, pragmatic day‑to‑day practices, classic essays on project management and team dynamics, and collections of programming “pearls.”
- Some recommend splitting reading into:
- “Why/how to design and deliver” (design philosophy, project planning, team dynamics).
- “What and how it works” (algorithms, data structures, compilers, interpreters, language‑specific “Effective X” style books).
Architecture, systems, and performance
- High enthusiasm for books on large-scale data systems and web application architecture; seen as essential for understanding databases, queues, and performance trade‑offs.
- Architecture overviews and integration-patterns books are recommended for higher‑level design.
- Systems and performance texts (CPU/memory behavior, OS, SRE, BPF tools) are valued for grounding engineers in how software really runs “on the metal.”
Controversial or polarizing titles
- One popular design book on “clean code” draws heavy criticism:
- Critics: leads to over‑abstracted, slower, harder‑to‑read code when followed dogmatically; ignores performance and hardware realities; spawns “Uncle says…” zealotry.
- Defenders: credit it with major personal improvement, but stress it must not be treated as a bible.
- Domain‑driven design is called both “fantastic” and “a waste of time”:
- Fans: useful for tackling complexity in business domains.
- Critics: confusing prose, unrealistic assumptions about stable terminology and available experts, too heavy for most real organizations.
- Even well‑known classics like the main “pragmatic” book and data‑intensive systems book receive some pushback as overrated or partly dated.
Beyond coding: people, UX, and thinking
- Strong endorsements for UX/interaction design books (e.g., about “everyday things”) as critical for anyone building tools humans use.
- Repeated praise for books on teams, workplaces, project failure/success, and organizational change.
- Recommendations for writing guides; good prose is seen as tightly linked to clear code and necessary for design docs and communication.
- Many advocate reading fiction and philosophy to build empathy, creativity, and broader life understanding.
Books vs practice
- One camp argues books alone won’t make you good; you must build things, read real code, and contribute to open source.
- Others counter that books on meta‑skills (problem‑solving approaches, heuristics) and thorough documentation can greatly accelerate learning—provided you don’t get stuck in theory.
- Widely shared view: combine all three—practice, reading, and reflection—while avoiding dogmatism and cargo‑culting any single book.