Why Software Development Doesn't Need to Be Perfect
It’s a cliché that the perfect is the enemy of good. It’s also a driving principle of agile software development. Delivering software, or even ideas, that are good enough to work with but not “perfect” can encourage collaboration and creativity—and lead to a better solution—as this article, "The Art of the Imperfect Pitch," from the Stanford Graduate School of Business shows. This isn’t always obvious, and it goes counter to the way many of us have learned to work.
One challenge is to create an environment that makes it safe to assert that something is good enough. Deciding that you are done enough rather than waiting for something that is more perfect is a difficult decision for teams to make. But by creating an environment that helps teams be comfortable deciding what is a good enough solution, you can reduce your time to deliver and also deliver more value.
Finding the line between “good enough” and “good riddance” can be tricky. It’s possible to get caught up in the drive to deliver something quickly and lose track of the goal of delivering value. Jim Coplien points out in a recent blog post, "The Tyranny of the Urgent," that while addressing issues in order of priority is important, delivering incrementally isn’t simply about ignoring planning and only dealing with urgent matters. Just dealing with the urgent is a sign that you haven’t done enough planning to make space for good decisions.
Circling back to "The Art of the Imperfect Pitch," we learn that people hang on to the familiar in times of stress. This is not what you want in a fast-moving environment, where people are expected to deliver incremental, innovative solutions. To encourage the kinds of behavior that lead to teams discovering the right solutions, you need to create a safe environment, where people can challenge assumptions and make mistakes while assuming that whatever they thought at the start of a project is likely to change.
Having a clear direction is one way to create the kind of environment that leads to the right kind of “incremental perfection.” In this story from the Harvard Business Review, Thomas Ricks explains how having clear goals helps leaders make clear decisions.
As with many things agile, following rules like the principle of good enough is more complicated than it appears.
How do you manage the balance between delivering “good enough software” at the end of an iteration with quality? Share your thoughts below.