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:
- 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.
- The Pragmatic Programmer by Andrew Hunt and David Thomas. Teaches software engineering habits.
- Code Complete by Steve McConnell. Ready-made questionnaires for the formal code review.
- Refactoring: Improving the Design of Existing Code by Martin Fowler and Kent Beck. Definition of the refactoring concept.
- Test Driven Development: By Example by Kent Beck. Definition of the TDD concept.
- Domain-Driven Design: Tackling Complexity in the Heart of Software by Eric Evans. Proper terminology for describing large complex systems.
- Design Patterns: Elements of Reusable Object-Oriented Software by Erich Gamma, Richard Helm, et al. Definition of the design pattern concept.
- Structure and Interpretation of Computer Programs by Harold Abelson. Explanations of the principles of abstraction and composition in programming.
- Object-Oriented Analysis and Design with Applications by Grady Booch. Definition of the OOP concept.
- 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.
- 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.
- 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.
- Working Effectively with Legacy Code by Michael Feathers. Definition of legacy code and seams concepts.
- 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.
- 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.