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.
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 –
by Andrew Hunt & David Thomas
Programatic 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.
by Robert C. Martin
Clean 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 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.
by Jonathan Rasmusson
Agile 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 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.
by Nassim Nicholas Taleb
Antifragile 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.