I think I want to start a movement.
Actually, I’d be resuscitating the good parts of a movement that happened a long time ago.
I would call the movement the Slow Code Movement.
Or perhaps the Artisanal Code Movement.
Its fundamental principle would be that no one has ever really valued any product that was mass-produced quickly.
Yet that’s what we’re asked to do in software circles every day.
Think about it. Everything that you value or love intrinsically was made carefully or thoughtfully. This goes for cars, coffee mugs, clothing, beer, paper, your Grandmother’s spaghetti sauce, tools, kids’ artwork, campfires, flight plans and babies. These valuable things were created only after a fair amount of thought and vision was put into them.
Now think about the software that you were asked to write most recently—or perhaps better yet, a couple of years back. Do you even remember what it was supposed to do? Do you recall what the urgency was for? Did it matter that you released it during the last week in July instead of the first week in February the following year?
Or perhaps you run a VC-funded startup, and you’ve bought into the culture that says you must rush to market, and that a moment spent thinking is a moment you could have been pivoting, or crushing it, or other very important things. But what has that bought you? It sure bought your VC firm a lot!
Obviously there are some industries where there is no wiggle room. But there are vast numbers of industries where there is plenty of wiggle room. And there is open source, where there’s all the wiggle room in the world.
And yet we, as an industry and as a practice, flail around, flinging code about us as we hurtle down hill and around corners without brakes, in the name of agility and nimbleness. (I do not think those words have come to mean what you think they mean.)
That doesn’t mean always designing big up front. Novelists frequently write books without plotting the whole thing. Nor does it mean anticipating the impossible. But perhaps it does mean metaphorically laying a dropcloth, taking a couple of deep breaths, pausing to think, infusing calm into your department, crafting words and ideas as much as code and taking that extra moment to create something worth making.