Books, Many Books

3 minute read

A nice reading list for the career of software developer!


Extracted From The Software Craftsman: Professionalism, Pragmatism, Pride - 2014 - Sandro Mancuso

Having our own library, physical or electronic, is essential. We are very lucky to be in an industry where so much information is produced. However, there are many different types of books, and choosing which books to read can be a very difficult task.

Technology-specific books

They are very valuable but they expire. They are essential for the immediate need, when we want to learn a framework, language, or any other software we need to use. They are great at giving us a deep understanding of how things work and the knowledge acquired can usually be used immediately. They are also great when we are planning our next career steps. They can give us details of how to use the technologies that may be between our current job and our desired job. However, many of the technology-specific books get old extremely quickly. When a new version of the technology they cover is released, or a different way of doing things becomes more popular, they will not add as much value as before. Examples would be books about Java, Hibernate, Node.js, or Clojure.

Conceptual books

They are the books that give us the foundation to advance in our careers. They are the books where we get introduced to new concepts, paradigms, and practices. The knowledge we acquire through this type of book cannot always be applied immediately; it may take a significant amount of time to digest the information and become proficient. Quite often a technology or language may be used to explain some technical concepts but usually the knowledge we get can be applied broadly. Books covering topics like Test-Driven Development, Domain-Driven Design, object-oriented design, functional programming, or modeling different types of NoSQL databases, just to mention a few examples, would fit in this category. Learning new concepts, paradigms, and practices is far harder than learning a specific technology, and it may take years until we get comfortable with them. However, conceptual books are the books that give us the foundation to learn specific technologies much quicker.

Behavioral books

They are the books that make us more efficient when working in teams and better professionals in general. They help us learn how to deal with people, clients, deadlines, team members, and so on. Knowing some programming languages, frameworks, and practices is not enough if we want to be good professionals. We also need to learn how to deal with everything else that is not related to code but is also part of a software project or organization. Books in this category will cover the more human and professional side of software development, including topics like Agile methodologies, Software Craftsmanship, Lean software development, psychology, philosophy, and management.

Revolutionary books

(Some call them classics) are the ones that change the way we work or even some of our personal values. They propose a different set of values and principles, quite often initially rejected or ignored by the majority of professionals. Bit by bit, they end up making their way into the mainstream. They are books that every software developer is expected to have read and are constantly mentioned in technical conversations. Very rarely does a technology-specific book become a classic. Normally the revolutionary books are conceptual, behavioral, or a combination. Books in this category define or have a great influence on the direction and evolution of our industry. A few examples would be The Pragmatic Programmer, The Mythical Man-Month, Design Patterns (GoF), Test-Driven Development: By Example, Extreme Programming Explained: Embrace Change, The Clean Coder, Software Craftsmanship, and Refactoring. It may take many years to master the content in the books in this category.


Books give us a deeper understanding of a technology or subject. Favor conceptual and behavioral books for your career progression, starting with the revolutionary ones. Read technology-specific books for your short- and medium-term plans.

Reading itself also has a learning curve. There are many different ways to read books, and understanding them can make a big difference in how fast we can read them and how much we can learn. This topic is beyond the scope of this book but I recommend you research speed-reading techniques.