I like books. You may have noticed I read some, and I generally learn much from doing so. Well, actually that’s not really true. I don’t learn much. I fact, I hardly learn anything at all.
Rather, I find many ideas. And more specifically, parts of ideas. Fragments. Snippets. Crumbs. Slivers. My brain then somehow weaves these splinters together into more concrete, joined-up ideas. Things like covalence, emotioneering, FlowChain, Javelin, and so on. The words “synergy” and “synthesis” spring to mind.
Aside: I just wanted to mention that I haven’t bought a dead-tree book for at least two years. And it seems unlikely I ever will again.
That being said, I’m fairly sure that folks can learn things from books, or at least gather some fragments of some ideas which might prove useful. Although I do accept that some folks have a “learning style” at odds with book-learning.
“People who ‘read little’ are ripe for becoming process zealots because they only learn one thing & believe it is everything.”
~ Jim Benson
Many folks have written copious amounts about the pros (and cons) of book-learning as it relates to software people. See, for example,
Tweet by @anthonycgreen:
This post is not so much an addition to the oeuvre, but rather an attempt to recommend just three books – as a starting point for software folks who may not have had the opportunity or motivation to begin their reading on the subject, as yet. This post is also in the way of thanks to all the folks who responded to my recent tweet:
My Top Three
Note: My choices here are tempered by the nature of my imagined ‘audience’; not just programmers, coders and testers, but everyone involved in software and product development. I very much agree with the sentiment expressed by Jim Benson:
“If we in software only read books about software, we will build crappy software.”
~ Jim Benson
- Principles of Software Engineering Management ~ Tom Gilb (Dead tree only)
A primer for all aspects of software development work, most notably quantification of e.g. stakeholders’ needs (a.k.a. understanding value, requirements).
- The Goal ~ Eliyahu M Goldratt (Kindle version available from e.g. the USA)
An accessible and entertaining (?) entry-point into the world of Theory of Constraints and – indirectly – Systems Thinking.
- Zen and the Art of Motorcycle Maintenance ~ Robert M. Pirsig
Contextualising the whole Quality thing.
Given that software development and product development – are disciplines largely, if not entirely, about people; people working together, people collaborating, people learning together, etc. – maybe I should also mention some people-related books too.
- Nonviolent Communication ~ Marshall B. Rosenberg
My choice for “best book of all time”. At least, given its life-changing influence on me.
- Drive ~ Dan Pink
“The surprising truth about what motivates us”. Surprising indeed, for many.
- The Five Dysfunctions of a Team ~ Patrick Lencioni
A compelling model for teams and team effectiveness. Also a great entry point into the Lencioni canon.
- Peopleware ~ Tom DeMarco and Timothy Lister
The granddaddy of software-oriented people-related books. I regularly find myself incredulous at the number of folks who say they haven’t heard of this one.
Top Three Programmers’ Books
Many of the folks who so kindly responded to my tweeted question seem to have answered in the context of programmers. I’ve consolidated the many recommendations into the following list:
- The Pragmatic Programmer ~ Andrew Hunt and David Thomas (@claytonlz, @troytuttle, @jason_a_reid, @BigMadKev, @chrisvmcd, @maukoquiroga, @lobrien, @anders_abel, @hugs, @bgswan)
- Refactoring ~ Martin Fowler, Kent Beck (@jimkimball, @AgileRamblings, @joe_jag, @bgswan)
- Growing Object-Oriented Systems Guided By Tests ~ (@joe_jag, @daverooneyca)
- The Mythical Man Month ~ Frederick P. Brooks, Jr. (@BigMadKev)
- Clean Code ~ Robert C. Martin (@BigMadKev, @daverooneyca)
- Extreme Programming Installed ~ Ron Jeffries, Ann Anderson, Chet Hendrickson (@daverooneyca)
- The Clean Coder ~ Robert C. Martin (@tenfortyeight)
- Writing Sold Code ~ Steve Maguire (@stuherbert)
- Extreme Programming Explained (@troytuttle)
- Lean Software ~ Mary Poppendeick (@troytuttle)
- Extreme Programming Explained ~ Kent Beck (@jimkimball, @jason_a_reid)
- Code Complete 2 ~ Steve McConnell (@AgileRamblings, @lobrien)
- Working Effectively With Legacy Code ~ Michael Feathers (@chadmyers, @davidalpert)
- Smalltalk: Best Practice Patterns ~ Kent Beck (@drunkcod, @ckeithray)
- Agile Software Development ~ Alistair Cockburn (@drunkcod)
- The Psychology of Computer Programming ~ Gerry Weinberg (@drunkcod, @ckeithray)
- Programming Pearls ~ Jon Bentley (@bgswan)
Others’ Top Three
Excluding the titles which I have more or less arbitrarily included in the above “programmers’ books” category, here’s a list of the other books folks recommended (no clear Top Three emerged):
- Personal Kanban ~ Jim Benson and Tonianne DeMaria Barry (@AdamYuret)
- Man’s Search for Meaning ~ Viktor Frankl (@ourfounder)
- 1984 ~ George Orwell (@ourfounder)
- The Universe in a Single Atom ~ Dalai Lama (@ourfounder)
- Thinking, Fast and Slow ~ Daniel Kahneman (@jitterted)
- The Secrets of Consulting ~ Gerry Weinberg (@AdamYuret)
- Explore It! ~ Elisabeth Hendrickson (@AdamYuret)
- Pragmatic Thinking and Learning: Refactor Your Wetware ~ Andrew Hunt (@thomaslindqvist, @tenfortyeigh)
- Scrumban ~ Corey Ladas (@thomaslindqvist)
- Inspired: How To Create Products Customers Love ~ Marty Cagan (@thomaslindqvist)
- The Principles of Product Development Flow ~ Don Reinertsen (@geek_whisperer)
- Becoming a Technical Leader ~ Gerry Weinberg (@jimkimball)
- Drive ~ Dan Pink (@AgileRamblings)
- Slack ~ Tom DeMarco (@chrisvmcd)
- Kanban ~ David Anderson (@maukoquiroga, @leankitjohn)
- Getting Real ~ 37Signals (@maukoquiroga)
- Waltzing With Bears ~ Tom DeMarco and Timothy Lister (@eikonne)
Any books you feel we missed out? Please do mention them via the comments.