XPDAY7: Why do Agile projects fail?
With the wind blowing in one direction, an iceberg moves in the opposite direction. Why is that? The wind only affects the tip of the iceberg visible above the water. The iceberg’s direction is influenced by what you can’t easily see. The majority of the iceberg lies beneath the water and is affected by the currents moving in a different direction to the wind. Your project is the iceberg. Your visible controls – time, cost, quality, scope and resources – only affect the tip of the iceberg. There’s a lot more going on beneath the surface where the project is massively influenced by emotion, culture, learning through reflection, improving through adaptation, and sharing knowledge and building a sense of team through collaboration.
They described 4 failure modes:
- Inspect and adapt gone wrong.People don’t apply before inspecting and adapting. The cycle should be apply – inspect – adapt. When you learn to drive you learn lots of different techniques – how to turn, starting on a hill, reversing around a corner, parallel parking, etc – because they all work together and are known as ‘driving’ and you will draw on them every time you venture out and drive your car. Omitting practices is akin to “Oh when I learned to drive, I never got that whole left turn thing, so I just drive straight ahead now”.
- “You can’t handle the truth”.People are often not able to deal with the results of the process. Everything becomes visible, good and bad.
- Interpersonal team dynamics (communication and grouping).A team operates within a socially complex domain where cause and effect cannot be predicted. It’s not possible to anticipate what will influence the ‘system’ and, because people are non-deterministic, it’s not possible to know how the ‘system’ will react. Only with retrospective coherence, can we look back and, knowing how things evolved, have things make sense. You’re unlikely to achieve success if you focus on predicting what’s above the water.
Listen to Joseph talk at Cincom Smalltalk about the process of software development and some of the issues that come up.