The truth is we can’t help but lie to ourselves, and this is actually a good thing. It helps to walk through life with certainty because the truth is that there is no certainty and if we really, truly embrace that as human beings we would never get out of bed in the morning. Survival calls for us to walk around with certainty…but not always.
If we need to tell ourselves lies to do things—and I mean “lies” in the most positive sense of the word—then let’s let those lies be small lies so we won’t suffer the full agony of the truth when it comes out. That’s really what Agile is. We set up horizons that are shorter; we build in smaller pieces so that when we feel we’re off course we know it sooner and we can do something about it. And that’s the important part: to do something about it.
Just knowing what to do—the right thing to do—is not enough. A lot of us know what to do and for whatever reason we just don’t do it.
Rather than building software in the discrete phases of analysis, design, code, test, and deploy, it’s far simpler and less risky to build a system feature by feature—every few weeks more features are added to a functioning system. This is simpler since smaller tasks are easier to work with than larger ones, and less risky because as features are built they’re integrated into a working system so there are no surprises later.
Rather than the big lies developers told themselves in an annual development cycle, they can tell smaller ones when they build in two-week iterations.