Inspired by the recommendations in Apprenticeship Patterns about keeping a reading list, reading the classics, and reading constantly.
Design Patterns: Elements of Reusable Object-Oriented Software Erich Gamma, et al.
The exposition before and after each pattern category are worth more than the patterns themselves.
The Leprechauns of Software Engineering Laurent Bossavit
More of what this industry needs… Evidence!
Measuring and Managing Performance in Organizations Robert Austin
Finally, an evidence-based look at performance measurement and incentives.
Slack Tom DeMarco
Theory of Constraints for people and people managers.
Understanding the Four Rules of Simple Design Corey Haines
I’m inspired to run mini coderetreats at my company and among my colleagues!
The Decline and Fall of IBM Robert Cringley
I love a good narrative history, especially of such a behemoth.
The Pragmatic Programmer Andrew Hunt & Dave Thomas
An enormous survey of programming advice, patterns, and practices (feels a little dated). Read this 10 years ago.
The Art of ‘Ware Bruce Webster
A reinterpretation of Sun Tzu’s maxims for software entrepreneurs or executives.
An Agile Adoption and Transformation Survival Guide Michael Sahota
The Visible Ops Handbook Kevin Behr, Gene Kim, et al.
The “emergency room” guide to getting your crazy IT situation under control; stop fighting fires and get important work done.
Encouragement that you can change the way your organization works!
Good to Great Jim Collins
Not just cheesy platitudes, the research feels really solid and tells a compelling story about organizing, working, and becoming significant.
Culture and Empire Peter Hintjens
An almost sci-fi perspective on the current and future effect of technology on society, like a good version of Lessig’s Free Culture ;)
In the office sociological structure, you don’t want to be a loser.
Understanding Computation Tom Stuart
Computation, state machines, Turing machines, and parsing disguised in simple Ruby programs, for the non computer scientist!
Making Software Andy Oram & Greg Wilson
Reexamine important software development research, with a focus on experiment design & concordance.
Windows PowerShell in Action Bruce Payette
Windows developers and sysadmins finally have a scripting language and a modern shell.
The Inmates are Running the Asylum Alan Cooper
Everyone in your organization needs to understand personas and interaction design up front.
Code Complete Steve McConnell
A practical guide to good software construction (if you ignore the outdated ideas like code layout and tools). The “Personal Character” section is a gem.
Lean Software Development Mary & Tom Poppendieck
Hold out for the good parts (chapter 4ish): queue theory, empower teams, and systems thinking. Then have management read the whole damn thing!
Systemantics John Gall
Recommended for anyone writing “enterprise” software. Systems grow, are unpredictable, will create new systems, and, worst of all, they create systems people!
Release It! Michael Nygard
Systems engineering concepts that programmers need to understand to be prepared for capacity spikes, outages, and error reporting.
Microserfs Douglas Coupland
An odd story about a group of developers in Silicon Valley leaving big companies for startups (see the Netscape documentary, Code Rush).
Getting Real Jason Fried & David Heinemeier Hansson
Keep your company small, have strong opinions, and create simple design.
Rework Jason Fried & David Heinemeier Hansson
An encouraging denouncement of meetings, distractions, and other kinds of waste that are so common in business.
The Art of Agile Development James Shore
This is the XP book for the modern developer, pay attention to the “contraindications” section for advice when you’re doing it wrong!
The Three Signs of a Miserable Job Patrick Lencioni
Knowledge workers take the quality of their work personally, so it affects the quality of their life. The three signs are anonymity, irrelevance, and immeasurement.
The Five Dysfunctions of a Team Patrick Lencioni
Fundamental concepts for any agile organization or team: trust, conflict, commitment, accountability, and results.
The Elements of Style William Strunk & E.B. White
Simplify language, introduce clarity, and develop a style.
Working Effectively with Legacy Code Michael Feathers
A rich introduction to practical coding concepts wrapped up as a guide to refactoring legacy code.
Visual and Statistical Thinking Edward Tufte
Your graphics should be evidence for your argument (hypothesis).
The Cognitive Style of PowerPoint Edward Tufte
PowerPoint reduces the analytical quality of presentations, corrupts statistical reasoning, and weakens verbal thinking.
Code Charles Petzold
Replace your computer architecture textbook with this book.
Peopleware Tom DeMarco, Timothy Lister
All problems in software are people problems (there are no technical problems that can’t be solved).
The Mythical Man Month Fred Brooks
A deep understanding of software project management with essays like No Silver Bullet, the Surgical Team, and Essential Difficulties.
Framework Design Guidelines Krzysztof Cwalina & Brad Abrams
Each guideline includes honest feedback including sections called “Consider”, “Do Not”, “Do”, and “Avoid”.
Facts and Fallacies of Software Engineering Robert Glass
Great for beginners, dozens of fallacies discovered over decades of exprience.
The Design of Everyday Things Donald Norman
You’ll never unsee frustrating design.
Pitfalls of Object-Oriented Development Bruce Webster
Revealing the fallacies of OO development and management.
Godel, Escher, Bach Douglas Hofstadter
A confounding mix of mathematics, musical theory, and philosophy wrapped in a fairy tale!