Posts Tagged ‘planning’

Why is "Agile" planning better than the traditional Gantt approach ?

septembre 10, 2009 2 commentaires

Last sunday, I’ve been discussing with a friend about planning. In his company, they’re doing it the « traditional » way, with a Gantt like approach. The example was of an excel sheet containing two tasks, coding and testing, one after the other. Quite to my disappointment, I was at pain to express clearly the advantages of an « Agile » planning. So, in order to be clearer next time, here is my homework 🙂

Users care for features and nothing else !
Thinking back on this discussion, I think the key point I didn’t express at that time was, as Mary Poppendieck would put it : « These days we do not program software module by module; we program software feature by feature ». It really goes to the fundamental differences between a Gantt like planning and an « Agile » one.

When planning modules by modules, and can have buffers before/after, reorganize your plan, but basically you’re at risk of delivering nothing or something that the users don’t really care about (if you go for partial delivery). And all that, maybe, just because some corner issues (either in terms of functionality or technical) aren’t resolved.

With features planning, you put what the user wants first, meaning there is a high probability of pleasing him. Furthermore, a feature doesn’t dictate a technical scope : even if the technical aspects are not all perfect, you can still release the feature if possible/needed. The full database schema hasn’t to be known/implemented/optimized for having some functionality working…

Finally, an Agile team commits itself for a set of features. Sorting out the difficulties encountered is part of this commitment. When committing to fit to a Gantt planning, it can be done perfectly and still having nothing working or of interest for the users…

Software development tasks cannot be accomplished in isolation
On a more general scope, separating activities in software development is a risky business. What you do on the data base level has impact on the software. DBA and developers have to speak together, they don’t work in isolation. Furthermore, if during testing some feature is missing, the odds are high that both the code and the database will be affected. What do you do if you’re now in the « testing » phase of your gantt planning ? In which cell does it fit ?

Software development is full of uncertainties
Last but not least, a Gantt planning looks horribly deterministic. It looks like all is sorted out, that we know exactly where we go. But software isn’t like mass production : each project is different. What if some functionality isn’t properly described ? What about technical uncertainties ? What if priorities change ? Agile planning – and agile software development – is all about taking these uncertainties in account. The exact tasks to achieve for a functionality aren’t figured out months before working on it (as if anyone could ever do so). The iterations and daily scrum are all about, as well, resolving uncertainties when they appear and when we have the required knowledge.

As usual, all feedback welcome !


Étiquettes : ,
%d blogueurs aiment cette page :