In the last post, we discussed various kinds of software projects. In today’s post we will see which kinds of projects are best suited for agile model.
As we know, small and co-located teams, face to face communication, incremental development etc. are some of the characteristics of agile projects. We had also seen in an earlier post Limitations of Agility – Part 2 (https://ahmedashfaque.wordpress.com/2010/03/04/limitations-of-agililty-part-2/) that if we need to deliver more than 120,000 lines of source code per year then Agile models do not suite. That means Agile models will suite for a project where delivery of less than 120,000 lines of source code is acceptable.
One more requirement of Agile models is that the team should consist of brilliant coders. That means if you can find a team of brilliant coders locally only then your Agile project will be successful.
Now let us discuss some interesting aspects. When a brilliant initiative is taken by some geek or innovator to build a new kind of software product on the lines of path breaking initiatives like Google, Twitter etc. then you really need a team of brilliant nerds to develop the product you have been looking for. Innovation will be hallmark of every aspect of this product. But imagine, you need to develop a back office product like accounting, operations, supplier relations etc. Developing such products is not exciting or path breaking. But the fact is that most of software projects fall into this bracket (more than 90% of all projects). Companies can not operate without these systems and thus they are mission critical projects.
These projects typically are large in size (running into millions of lines of source code). These projects also need to be developed within months. In such a case, the best option is to go for implementation of any good ERP or enterprise class system. If this option is not available or viable then a custom software development project can be taken. To deliver in a short duration, the project should have many people so that it can be delivered within this short time span. Incremental software delivery is not an option here as customers typically require full systems. Even if incremental model can be adopted then these increments need to be large so that a large number of software features can be delivered in each increment.
The scenario looks like to favor a software development model which can accommodate delivery of large sized software products within short spans of time. Currently true agile models like Scrum, eXtreme Programming etc. are not capable of delivering at this scale. So they are out. What about process standards like Unified Process models (like Rational Unified Process or Open Unified Process)? These models can be an option as they are capable of delivering at such large scales. What about Waterfall? Waterfall is also a viable option. To overcome some problems of Waterfall model, it can be modified.
From the ensuing discussion, it can be seen that Agile software development models like Scrum, eXtreme Programming are best suited for projects where much smaller scale software products need to be delivered and where delivering these products can be done in small increments over a period of several years.
Unified process models and Waterfall based models are best suited when large scale software products need to be delivered within short time spans.