Some recommended books for improving as a software developer
Most software books are too language specific and go out of date too quickly. What I find has stayed with me are books about bigger concepts, such as systems thinking and complexity, and also so-called "soft skills" such as management and psychology.
These are all really about developing empathy for other people :)
- "The Design of Everyday Things" by Donald Norman
- "Don't Make Me Think" by Steve Krug
- "About Face: The Essentials of Interaction Design" by Alan Cooper
- "Designing Data-Intensive Applications" by Martin Kleppmann
- "Domain Modeling Made Functional" by Scott Wlaschin
- "How Buildings Learn" by Stewart Brand
- "Systemantics, The Systems Bible" by John Gall. Much quoted on programmers forums!
- "Release It!" by Michael T Nygard
- "Accelerate: The Science of Lean Software and Devops" by Nicole Forsgren, Jez Humble
- "Are Your Lights On?" by Gerald Weinberg (anything by Gerald Weinberg is great)
- "Thinking in Systems" by Donella Meadows
- Anything by Russell Ackoff
- See also Lessons Learned — Why the Failure of Systems Thinking Should Inform the Future of Design Thinking
- "The Logic Of Failure" by Dietrich Dörner
- "Normal Accidents" by Charles Perrow
- "Drift into Failure" by Sidney Dekker
- How Complex Systems Fail by Richard I. Cook
- "The Goal" by Eliyahu Goldratt
- or "The Phoenix Project", which is software centric, by Gene Kim, Kevin Behr
- "Toyota Kata" by Mike Rother
- "The sad truth about process improvement" by me :)
- "Crossing the Chasm" by Geoffrey Moore
- "Innovators Dilemma" by Clayton M Christensen
- "The Manager`s Path" by Camille Fournier
- "Peopleware" by Tom DeMarco, Tim Lister
- "The Secrets of Consulting" by Gerald Weinberg
- Anything by Peter F. Drucker. Eg "Essential Drucker", "The Effective Executive" etc.