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:
@flowchainsensei ‘Programmers Don’t Read Books — But You Should’ http://t.co/fRhWBN6XNK – @codinghorror
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:
“Which three books would you choose to recommend to software folks who have read very little, yet want to improve?“
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.
I’d include some of those above in my top 3 but real idea generators were:
The Fifth Discipline, Senge (great read on your recommendation).
Getting Naked, Lencioni (validated an approach to business I always felt made me soft).
How to Measure Anything, Hubbard (puts measurement in its place just behind purpose).
Thanks for starting the conversation.
Which three (or so) books would you recommend all your folks to read? So as to help form e.g. the foundations of a common frame of reference?
The books that have spread naturally within True Clarity are 5 Dysfunctions, Getting Naked, Drive, The Chimp Paradox.
We’ve bought all developers a copy of Clean Code (as an experiment/intervention).
I find it hard to have an unambiguous list of 3 foundation books. Instead the list seems to emerge as the organisations mind-set shifts.
So currently either Selling is Human or Getting Naked (I can’t decide which), Obliquity and Slack.
“Flow: The Psychology of Optimal Experience” by Mihaly Csikszentmihalyi. Remarkable book about achieving optimal experience in life.
“Mindset: The New Psychology of Success” by Carol Dweck. Powerful argument for adopting “learning” as a permanent way of being.
“Switch: How to Change Things When Change Is Hard” by Chip Heath and Dan Heath. In a world where the rate of change of change (sic!) is accelerating, knowing how to cause change where it’s needed is invaluable. If the market changes, but your manager won’t let you use continuous delivery (for instance) then how can you do something about that?
I’m a huge believer in books. Learning from the internet, like learning from each other or from a presentation, tend to be heard in the other’s voice. It’s their idea. But learning from reading is experience in your own voice, in your head, and so it’s dramatically more personal. There are multiple pathways into learning, and it makes sense to me to use them all!
Keep up the great blog. Our education system tends to have people invest in their qualification and then think that’s enough. No it’s not! Not in this crazy world! Keep making us think!
Meant to tweet back but was v.busy. Most of mine are there, but I’d add On Lisp http://lib.store.yahoo.net/lib/paulgraham/onlisp.pdf and from far left field, Lewis Carrol’s Symbolic Logic http://www.gutenberg.org/files/28696/28696-h/28696-h.htm
I also like The Firth Discipline and Charles Handy’s work. You ought to take a look at my books “The Music of Business” and “Sex, Leadership and Rock’n’Roll”. Here’s something to whet your appetite from Larry Elliot at The Guardian who said “I have to say it was the first “how to do business” book I have ever managed to finish – or indeed get beyond the first chapter!”
I’m fond of “The Humane Interface”. Jef Raskin’s purpose is to carefully avoid modes and concentrate on making the system so consistent, quick to learn, and easy to use that soon your fingers know what to do and your mind can concentrate on your actual task and not be diverted to focusing on the mechanisms of the system. That’s called automaticity and it is highly useful.
Gerald Weinberg’s “Secrets of Consulting” is a must for anyone trying to foster change in an organization.
Would you let me borrow Principles of Software Engineering Management?
Why, certainly. Go right ahead.
“Mastery” by George Leonard is one of my absolute favourites (just as the Marshal Rosenberg’s book :). I’ve even written an enthusiastic article about it, the Mastery book, I mean: http://www.targetprocess.com/blog/2011/05/mastery-vs-gtd.html. Can’t praise it enough.