In my humble opinion, and based only on my observation, reading technical books is not among the highest priorities for most software developers.

This is a shame because books are an invaluable source of wisdom.

I love reading, specially the technical books that can help me get strong Software Engineering foundations. I believe that learning the fundamentals of Software Engineering is a great investment. First, it allows me to build software of high quality; that is, software that is well-crafted internally and also meets the needs of the user. Second, having a strong foundation is a great advantage when it comes to dealing with the fast pace of technological evolution.

This is the list of books that I have read from cover to cover:

  • The Algorithm Design Manual. Steven Skiena (2008)

  • Head First Design Patterns. Eric Freeman, Elisabeth Robson, Kathy Sierra, Bert Bates (2014)

  • Clean Code: A Handbook of Agile Software Craftsmanship. Robert C. Martin (2008)

  • Test-Driven Development by Example. Kent Beck (2002)

  • Agile Software Development: Principles, Patterns, and Practices. Robert C. Martin (2002)

  • Design Patterns: Elements of Reusable Object-Oriented Software. Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides (1994)

  • Clean Architecture: A Craftsman's Guide to Software Structure and Design. Robert C. Martin (2017)

  • The Clean Coder: A Code of Conduct for Professional Programmers. Robert C. Martin (2011)

  • Patterns of Enterprise Application Architecture. Martin Fowler (2002)

  • XUnit Test Patterns: Refactoring Test Code. Gerard Meszaros (2007)

  • Code Complete. Steve McConnell (2004)

  • Accelerate: The Science of Lean Software and DevOps. Nicole Forsgren, Jez Humble, Gene Kim (2018)

  • The Software Craftsman: Professionalism, Pragmatism, Pride. Sandro Mancuso (2014)

  • The Annotated Turing. Charles Petzold (2008)

  • Introduction to Algorithms. Thomas Cormen, Charles Leiserson, Ronald Rivest, Clifford Stein (2009)

  • Domain-Driven Design: Tackling Complexity in the Heart of Software. Eric Evans (2003)

  • Agile Estimating and Planning. Mike Cohn (2005)