Mario Cervera
Mario Cervera's Blog

Mario Cervera's Blog

Follow

Books

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, especially technical books that help me get strong Software Engineering foundations. I believe that learning the fundamentals of Software Engineering is a great investment. First, it allows you to build quality software; that is, software that is well-crafted internally and also meets the needs of the user. Second, having a strong foundation allows you to learn new languages and frameworks faster; therefore, it is a great way to deal 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)

  • Working Effectively with Legacy Code. Michael C. Feathers (2004)