As a creative person (and as a geek), when building something (software or hardware), I often say to myself “For just a little more time and/or effort, I can add this cool feature.” There are many good reasons why this is a bad idea. I would like to lead with the reason that has caused my blog to be stagnant for months, which is that doing more than you have to gets in the way of actually finishing. An artist I almost knew once said “The hard part about painting, is not the painting, but knowing when to stop.”
Since my last post, I’ve started about six posts that I never finished because I just wanted to add this one last point, or tweak that paragraph one more time. The result was no visible work output, which is inexcusable for an Agilista.I hope to change my ways here as I have at my day job. Everything I do has to be at the request of the Product Owner. That’s the balance of power; we the developers dictate how long each story will probably take and how they’ll be implemented, and the product owner dictates the priorities and acceptance criteria. But focusing on the high priority tasks and knowing when to stop are hardly Agile-specific concepts. Here’s some more reasons why it’s so important:
- The more you do, the more opportunities there are to do wrong. Statistically speaking, the more software, the more bugs. The same goes for building houses and first dates.
- Spending time on things that may not be needed means you’re not spending time on things you know are needed
- Even if you will eventually need the unplanned features, you may have forced yourself into a particular implementation that may not turn out to be the best one in the end. In an Agile project, you’re constantly learning more about the requirements, making more implementation decisions, and getting more feedback from the product owner. That’s why Agile preaches making decisions as late as possible. The essence of Agile is expecting and accepting change.
- Even if you have time to do the extra work, there may be higher priority stories to do first.
There. I did it. Guess I’m done!