Subscribe
About

Seven deadly sins

Take care when adopting the agile approach to software development.

Ziaan Hattingh
By Ziaan Hattingh, MD of IndigoCube.
Johannesburg, 27 Oct 2009

The agile approach to software development is rapidly gaining in popularity, and with good reason, as it addresses some of the classic problems associated with the discipline. However, it takes quite an effort - including executive buy-in, vision, patience and change management - for any company to reap the benefits.

The jury's verdict is in, and it's unequivocal: agile produces better application development results than waterfall, and in an industry where more than half of all software development projects fail in one way or another, it's imperative companies migrate to agile. But it's not easy.

As I work with companies looking to go the agile route, I observe seven common errors they commit - the seven deadly sins of agile adoption:

1. Continue planning as before. Traditional planning is an intensive up-front activity that produces a project plan that usually becomes “cast-in-stone”, and against which progress of the project is tracked. On an agile project, planning is an activity that needs to align with the execution of iterations. Planning in an agile world is much more ongoing and intense, and few organisations are prepared for this when they embark on an agile project.

2. Use existing project governance processes. The governance model used to manage traditional software development projects aligns with the waterfall approach and is totally unsuited to govern agile projects. It often happens that an organisation embarks on an agile project, but continues to enforce waterfall-like governance, which hampers the projects and causes great frustration for team members. Agile projects need a different governance model and this is an aspect of agile adoption that is often overlooked.

3. Insist on detailed up-front requirements specifications. The agile approach is dynamic and accepts that change will happen during the project as business people add and amend requirements. It caters for this by only detailing requirements when they are needed for an iteration of the project. Prior to that, the requirements for the project are only outlined at a high level to understand the scope of the project. Detailed up-front specifications not only delay the start of the project, but they waste a lot of effort on detailing requirements that will change or be removed at a later stage. In addition, they miss out the new and additional requirements that are likely to arise during the project.

The agile approach is dynamic and accepts that change will happen during the project.

Ziaan Hattingh MD of IndigoCube.

4. Undervalue the adoption of iterations. Together with the four phases (inception, elaboration, construction and transition), iterations form the cornerstone of agile, and ignoring their importance will severely challenge any agile adoption. Iterative development is a radical departure from traditional thinking, and in an organisation dominated by the waterfall approach, its adoption is no small endeavour.

5. Test everything once it is complete. Again, this is sequential waterfall thinking, which dictates that everything be tested once the software is complete. If iterative development is done, the testing effort needs to be built into the iterations and every iteration needs to be tested - regression and integration. This implies that testing starts right in the beginning with the first iteration.

6. Stick to using large teams with existing siloed structures. Small co-located teams are the ideal that should be strived for in agile. If this is not possible, the necessary infrastructure will have to be implemented to assist the teams to work together as much as possible. Most organisations today have siloed structures, which does not bode well for agile implementation.

7. Underestimate the need for automation. In a world where working software is developed rapidly, and in short bursts, it places a great strain on certain development disciplines, which if not handled properly, can become a major impediment to successful agile adoption. Aspects like build and release management, and testing need to become much more efficient and streamlined to cope in an agile world. The only way to do this is to automate. Automation is a key, although often neglected, component of successful agile adoption.

To expect a group of people with established processes and behaviour, doing waterfall development, to adopt agile is difficult. Mindsets and experience of the team members will simply work against anything agile almost automatically and without anybody even realising it. Adopting agile requires a mindset change and this is not easy. Get help and guidance - it may cost money, but it will enhance the chances of success and reduce wasted effort.

Share