Imagine you’re driving down the street and you see a sign saying “Road Closed: Parade Today.”
How would that make you feel? If you’re on your commute, you’d be annoyed. If you were late on top of that, you’d be blinded by rage. But if you were on vacation and you had no plan for the day, you’d be like: “huh. what’s the parade for?”
The point is: a surprise when you have a plan is a nuisance. A surprise when you have no plan is an opportunity.
“The surprise is in the pudding” is a phrase our idiomatically challenged French co-founder dropped on us a few weeks ago to describe the phenomenon of nothing working exactly the way you expect it to.
To deal with these waves of uncertainty inherent in their jobs, programmers develop their own individual coping mechanisms (cynicism, whiskey, self-deprecation, cursing fits, fatalism, overconfidence, pessimism, carbs, aloofness).
So what coping mechanisms can an organization develop for unforeseen hurdles?
Typically, a team attempts to create a shared illusion of covering all of the contingencies with predictions before starting the work.
“we know that the problem is scoped to one page, so all we should have to do is update a few page-specific rules”
“we’re already doing this on the profile page, so it should be plug and play”
“here’s a google doc with all of the possible user flows”
“we know what we have to do now, everyone is on the same page”
There is one major pitfall with this approach.
Surprises, which are inevitable in complex systems designed by humans, are treated as setbacks. Even worse, these setbacks pile up during the week. Desperate maneuvering under their weight leads to short-sighted decisions, ill-advised shortcuts, and cutting core functionality.
Here at Splice, we’re trying something. The engineering team is focusing on one problem at a time with no estimates and ignoring the backlog. This is a seemingly naive strategy that leads to some unexpected results.
Over the last couple of weeks, we’ve become more patient and curious when it comes to surprises. This has paid tangible dividends. The surprises that came with deploying a proposed feature mvp internally led to us discovering and shipping just the part that the product truly needed. The surprises in our codebase when trying to do simple tasks led to us prioritizing a sorely needed rewrite and catching a hard to reproduce bug.
However you can do it, encourage curious discovery and exploration of the unknown. Your product will reveal its form as you work on it, so give developers and designers the freedom to discover it.
You may find a pleasant surprise in your pudding.
August 1, 2014