Sunday, July 19, 2015

Agile, A Double Edge Sword


Agile is a very useful development methodology especially for software development as it gives Project team, flexibility to incorporate early feedback from beginning till end of the project. Unlike Waterfall methodology it is not constrained with rigid phases and provides a good amount of flexibility to Project Managers and team. In waterfall methodology for instance, complete design has to be completed within design phase and any feedback on design from further phases cannot be easily incorporated as waterfall assumes that all phases will be completed in totality. Agile methodology on other hand is more realistic approach and provides flexibility to incorporate feedback throughout the project cycle. Agile methodology also gives flexibility to start early development even when the requirements are in process of gathering. For example, if requirements of only 20% features are known at the beginning of the project, then also team can start development of these portions in a sprint without waiting for 100% requirements to be available. As team can gathers remaining requirements, remaining features can be built in in later sprints, which also enable early feedback mechanism.

Ability to start project with partial availability of requirements is one of the greatest Power which Agile gives to Project Managers.  However this power has to be used with care by Project Managers, else this power can prove to be a weapon for self-destruction. Managers and scrum masters should not confuse partial requirements with incomplete requirements. When I say partial requirements, I mean that if a Team has to build an application which would have features 1 to 10; and if team has full understanding of requirements of feature 1 & 2 then team can start building feature 1 & 2, without waiting for finalization of requirements of all 10 features. However if team has let’s say only 20% clarity of requirements for features 1 & 2, then these requirements are still incomplete to start any development. Any attempt to start development of those features, for which requirements collection is not good enough will result in chaos, too much of rework and slippage of project timelines. Remember, doing development without fairly understanding requirements is like going on a hunt blindfolded. Managers may sometime find “Team Utilization” as a compelling reason to start early development even while requirements understanding is still in a very early stage, but they should remember that starting with incorrect and incomplete requirements will eventually result in too many reworks and productivity loss for rest of the project, which will add up to higher costs and delays. Managers also have to be careful that Agile Methodology should not be used as an excuse by customers or solution owners to give incomplete requirements.

Another difficult choice is whether to do design of backlog items within a sprint or before the sprint in which these backlogs have to be developed. Agile strongly suggests that before a team starts working on a backlog item in a sprint, they should have clear understanding of activities and tasks to be done including what classes and methods to be developed, etc. Team should also know how much time each activity will take, as Scrum Master has to match the effort required to complete the tasks with available capacity of the team. Before design is completed or at least high level design is complete, team hardy has an idea of what all classes and methods need to be written and what will be the exact effort. Only after designing is complete, team can provide a fair enough estimates. Thus it is very important that design is done in previous sprint for those backlog items which are to be developed in next sprint. If team is planning to do design in the same sprint then certainly there will be surprises and heart breaks and team will seldom meet its goals.

Agile methodology provides flexibility in execution with an objective to start early and also to get early feedback. Every methodology including Agile has its limitations or boundaries, If Agile is misused or over stretched and is used as an excuse for not writing clear requirements then consequences  will be disastrous for the project.

No comments:

Post a Comment