Tech literature

Which books do you consider essential for a developer?

February 27, 2019

Between around 2010 and 2017 I have read a set of books on software development which influenced greatly how I approach development. I would consider some of them “essential” indeed. But your mileage may vary and I probably missed something which I never heard about.

Also, I have never read any of the real hardcore algorithms-related books like the universally acclaimed Art of Programming. Judging by the fact that I never met any difficulties as a primarily backend Web developer despite that, probably they are not that fundamental as others.

The list is as follows, in no priority order:

  1. Clean Code by Robert Martin. After that, Clean Coder and lately Clean Architecture by the same author. Also, first 40+ videos on cleancoders.com. Teaches software engineering discipline.
  2. The Pragmatic Programmer by ‎Andrew Hunt and David Thomas. Teaches software engineering habits.
  3. Code Complete by Steve McConnell. Ready-made questionnaires for the formal code review.
  4. Refactoring: Improving the Design of Existing Code by Martin Fowler and Kent Beck. Definition of the refactoring concept.
  5. Test Driven Development: By Example by Kent Beck. Definition of the TDD concept.
  6. Domain-Driven Design: Tackling Complexity in the Heart of Software by Eric Evans. Proper terminology for describing large complex systems.
  7. Design Patterns: Elements of Reusable Object-Oriented Software by Erich Gamma, Richard Helm, et al. Definition of the design pattern concept.
  8. Structure and Interpretation of Computer Programs by Harold Abelson. Explanations of the principles of abstraction and composition in programming.
  9. Object-Oriented Analysis and Design with Applications by Grady Booch. Definition of the OOP concept.
  10. Concepts, Techniques, and Models of Computer Programming by Peter Van Roy. Explanations of all the paradigms, styles and approaches to programming known by the 2012.
  11. The Elements of Computing Systems: Building a Modern Computer from First Principles by Noam Nisan. Teaches how the hardware and OS works up to your high-level application layer.
  12. The Algorithm Design Manual by Steven S Skiena. Teaches basic data structures and algorithms. It’s possible that it can be superceded by the Art of Programming by Donald Knuth but I did not read the latter.
  13. Working Effectively with Legacy Code by Michael Feathers. Definition of legacy code and seams concepts.
  14. Gray Hat Hacking the Ethical Hackers Handbook by Allen Harper, Shon Harris. It’s possible that it can be superceded by the Security Engineering by Ross J. Anderson but I haven’t finished the latter yet. Explanations of how the desktop software cracking happens.
  15. The Web Application Hacker’s Handbook: Finding and Exploiting Security Flaws by Dafydd Stuttard and Marcus Pinto. Explanations of how the Web applications penetration happens.

Next: Thinking Like a Programmer