Getting Real is a smart, readable, and mind-bending manifesto dedicated to debunking the misconceptions of death-march, stalinist style software development, and simplifying the inscrutable processes that lead to building high quality software. Inspired — perhaps indirectly, since it is never explicitly referenced — by the Agile Programming movement, Getting Real is at once an operating manual on building great software, and a comprehensive condemnation of the startlingly dumb preconceptions that animate most software development.
The book reads like the Tao Te Ching, the ancient Taoist guide to strategy and survival.
“The tao that can be described
is not the eternal Tao.
The name that can be spoken
is not the eternal Name.
The nameless is the boundary of Heaven and Earth.
The named is the mother of creation.
Freed from desire, you can see the hidden mystery.
By having desire, you can only see what is visibly real.
Yet mystery and reality
emerge from the same source.
This source is called darkness.
Darkness born from darkness.
The beginning of all understanding.” Tao Te Ching - part 1
” The Tao is like an empty container:
it can never be emptied and can never be filled.
Infinitely deep, it is the source of all things.
It dulls the sharp, unties the knotted,
shades the lighted, and unites all of creation with dust..” - Tao Te Ching part 4
“Sometimes the best way to know what your app should be is to know what it shouldn’t be. Figure out your app’s enemy and you’ll shine a light on where your need to go.
When we decided to create project management software, we knew Microsoft Project was the gorilla in the room. Instead of fearing the gorilla, we used it as a motivator. We decided Basecamp would be different, the anti-Project.” - Getting Real, Pick A Fight
“Every time you say yes to a feature, you are adopting a child.” Getting Real, Start With No
“Scope down. It’s better to make half a product than a half-assed product,” - Getting Real, Fix Time and Budget, Flex Scope
“Listen to your code. It will offer suggestions. It will push back.” - Getting Real, Code Speaks
The two works are unabashedly moralistic and enigmatic, using examples from nature and seemingly paradoxical juxtapositions of contradictory ideas to enlighten the reader. And they share the refreshing openness of the enlightened, who know that the secret to enlightenment is that there is no secret: the truth is there, right in front of your nose, even if you can’t see it yet.
Getting Real is as radical a break with conventional wisdom about building software as is imaginable. As an analogy, consider the impact of cargo containers on commercial shipping: instead of hundreds of stevadores carrying boxes of cargo, and manually stowing them in the ships’ cargo holds, today pre-loaded containers are lifted from trucks or trains, by cranes, and stacked on the ships like enormous lego blocks. A handful of trained crane operators can literally do the work formerly accomplished by hundreds. And the ship stays at the dock for a hundredth of the time it would have under the former approach to loading and unloading. Note that this productivity boost is not due to the specific individuals involved being smarter, or better trained: it is the outcome of a completely different approach to the problem, and the application of better building blocks in the processes involved. Getting Real is the same: throw out the preconceptions of striving to get hundreds to take small steps faster, and instead use a smaller group who see the process differently. In the case of Getting Real, however, the process insights rely on better programming tools — like Ruby on Rails — as well as a pervasive and zen-like certainty that less is more, small is the new big, and that anything that detracts from the act of delivering quality software to the user should be deep-sixed.
The book is fun to read, even for people not involved in software development. There are gems throughout, like this one:
The best software has a vision. The best software takes sides. When someone uses software, they’re not just looking for features, they’re looking for an approach. They’re looking for a vision. Decide what your vision is and run with it.
And remember, if they don’t like your vision there are plenty of other visions out there for people. Don’t go chasing people you’ll never make happy.
[…]
Our vision has followed a similar path. They [37signals’ apps] don’t try to be all things to all people. They have an attitude. They seek out customers who are actually partners. They speak to people who share our vision. You’re either on the bus or off the bus. - Getting Real, Make Opinionated Software
The “on or off the bus” reference is taken from Tom Wolfe’s Electric Kool-Aid Acid Test, his examination of the Merry Pranksters, a collection of hippies and beats who traveled around in a bus, experimenting with mind altering substances on an odyssey of self-discovery and enlightenment. Like the authors of Getting Real, the Merry Pranksters knew that there is no middle road: you are either on the bus — acting in accord with the right set of principles — or you are off the bus. No indeterminacy. No hedging. No compromises.
I expect that Getting Real will have a large impact, which is to be expected by the popularity of the author’s Signals v Noise blog and the following that 37signals has achieved through their software, writing, and seminars. When I interviewed Jason Fried, the president of 37signals and the ringleader of this new band of Merry Pranksters, I was struck by the ideas driving the software and their articulation. I concluded by saying this:
[from The New Visionaries: Jason Fried, 37signals]
The impact they [37signals] are having on the world is larger than the success of their apps, like Basecamp. It could be that the larger legacy of 37signals will turn out to be the promulgation of this set of design and life principles that will have a larger impact on the community of developers than the impact of their products on the community of customers.