It seems to be accepted as the norm these days that software development projects are a big gamble. You may succeed, but all the planets have to be in perfect alignment to achieve it - and what is meant by success is also open to interpretation.
I find myself in disagreement with the status quo however, the dice can be loaded in favor of a form of success, as long as the right attitude and culture is in place – and that ‘success’ is understood by all to mean the same thing.
There are many different paths that can be chosen during development of a new product. Once a decision is made to walk down a less desirable path, every other step from that point forward, no matter how sure footed, is at a disadvantage because it is still headed toward the bad side of town. The only way to correct this situation is to double back (i.e. throw work away) and take a more appropriate path.
Success can be as hard or as easy as you want it to be, but if you don’t instill and install the right culture, you just won’t get it.
Agile values and principles help like minded individuals to understand the common parts of what make up the right culture, but the agile label itself is under threat from misinformation and misunderstanding. The lowest common denominator that underpins any successful project is working code – and in order to understand what a healthy culture means, you have to understand what it means to be responsible for delivering it. If you have this prior context, agility speaks for itself.