Fail to Fail and You’ll Fail to Improve

There are two critically important elements to agile software development that are often either overlooked or ignored.

  1. Continuous Improvement
  2. A Willingness to Fail

Any team committed to being agile will seek continuous improvement through regular retrospectives. There’s always room for improvement. Who among us believes that he is the best he can be — there’s nothing to improve? [If you find such a person, you likely don’t want him on your team.]

What can you improve?

  • Quality
  • Team Dynamics
  • Time to Market
  • Total Development Cost
  • Miscommunications
  • Meeting Durations
  • Number of Meetings
  • User/Customer/Client Engagement
  • Refactoring Efforts
  • Technical Debt Load

I could go on but you get the idea. There’s never a shortage of improvements to be made. If you can’t find anything to improve, either you’re not looking hard enough or you’re delusional.

This leads to the next important element – a willingness to fail.

Fail” might be too strong a word for some as it conjures up the image of a failed project. No one wants their project to fail but that’s not the point at all. The idea is to seek out small failures quickly. After all, big projects fail one small failure at a time — if those small failures go undetected and uncorrected!

Face it, your team is not perfect. Mistakes will be made, poor decisions will surface, and communication errors will occur. Obviously, the team will do it’s best. Obviously, they’ll do everything they can to prevent small failures. But, they won’t be — and can’t be — 100% successful. That’s life.

Expect the unexpected.

Learn to embrace failure as learning experience. The best way to learn is by doing. Take small chances and see what happens. At best, the risk will pay off. At worst, the team will learn and improve.

One aspect of this to be watchful of is repetitive failures. If you see the same type of failure happening over and over again, you have a serious problem. That’s an issue for the next retrospective.

So, being agile means admitting to imperfections and striving to fix them. Some managers have a hard time with this concept. No one wants to report failure to the boss. So we plan, review, adjust, plan, review, approve … and think about it some more. Those cycles could have been used by the team to learn and improve. What a waste.

Updated: July 19, 2012 — 9:16 pm