Books Every Software Developer Should Read

Reading Makes Better Coders –

At Digital Foundry, we feel engineers should always be coding, collaborating with peers, having fun, and investigating new technologies. We also encourage team members to read industry reference books in an effort to stay current on software planning and implementation best practices. For these reasons, Digital Foundry maintains a digital library of popular books recommended by our employees, partners and customers.

Recommended Reading

Our introductory reading recommendations for engineers generally fit into into three basic categories; Self, Team, and System. We encourage engineers at every level to read all three.

Readings in the Self category focus on an appreciation of the software development craft, the enduring principles of clean code, and the growth mindset, without restrictions to any particular technology.

Readings in the Team category aim to provide developers with a strong sense of how good teams organize and function. Often, great software comes from the collective efforts of a strong multi-functional team. It is imperative that individuals understand good dynamics and the power of contribution and accountability.

The System category list books that explore software as a system and system complexity (e.g. nonlinear reaction to change). These books advance the understanding of security, robustness, and coupling. They provide thought-provoking ideas about how a piece of software fits into the world around it.


– Self –

Pragmatic Programmer

by Andrew Hunt & David Thomas

Pragmatic ProgrammerProgramatic Programmer is a required read for new programmers, and a good refresher for experienced programmers who are serious about the craft of software development. Hunt and Thomas do a great job of explaining how building a growth mindset helps programmers tackle increasingly complex projects.

 

Clean Code

by Robert C. Martin

Clean CodeClean Code is a great read that is relevant to multiple levels of expertise. The first ten chapters are a good introduction to the specifics of code quality and code craftsmanship, and from chapter 11 on  the book delves into the deeper topics of systems, emergent design principles, and code smells.

 

 


– Team –

Extreme Programming Explained

by Kent Beck with Cynthia Andres

Extreme Programming Explained Extreme Programming Explained is the original book on Extreme Programming (XP). The main tenants of XP are a core part of mainstream agile teams. Beck and Andres recommends turning it up to 11. They cover short development cycles, Test Driven Development, locating all team members in the same room and feedback among others.

Agile Samurai

by Jonathan Rasmusson

Agile SamuraiAgile Samurai is a great read for software engineers who participate in project teams running agile. Rasmusson covers an introduction to agile, agile project inception, agile project planning, agile project execution, and agile software creation.

 


– System –

Thinking in Systems: A Primer

by Donella H. Meadows

Thinking in SystemsThinking in Systems: A Primer is a good overview of systems for experienced  software engineers who are designing interconnected software systems. Meadows does a nice job of covering what a system is, how to interact with systems, and how to modify existing systems to make them better.

 

Antifragile

by Nassim Nicholas Taleb

AntifragileAntifragile is a great discussion about what it takes to create something that actually benefits from adversity. The notion of antifragile is more than just building a robust system that can withstand stressors. Systems that are antifragile are made better by stressors. This is a modern interpretation of stoicism for products, services, and governments. The basic principles are very applicable to software and agile. It’s not about ceremonies and practices; rather, a shift in mindset and an openness to growing through challenge and adversity.