Sunday, February 8, 2009

Fail Fast and Agile SCRUM for Software Development

Fail Fast and Agile Scrum makes Sense for software Development. I am exited with this methodology.
This is one of the best methodology evolved in recent times for Software development and seems software development has attained a new level of maturation.



I want to divide this blog into 2 parts:
1. Fail Fast
2. Agile Scrum
Both have close relation and little distinction.


Fail Fast:
You might have come across Fail Fast Exception in Java API. Similar to that, Projects/Proof of Concepts/Research can be executed in Fail Fast Methodology.
My view of this methodology is plan the project in such a way that if something is not going in right direction or the hypothesis goal of the project is not meeting, then there should be a event/alert with minimum time frame of execution of project. This help in decision of further course of action for project.


For doing this, FMEA can be used as tool.
To give a brief on FMEA:
FMEA (Failure Mode Effective Analysis) is one of the tool of Six Sigma. This tool help us analyze risk and ways in which project can be failed. Below are the steps:
1. List the ways in which a item can go wrong
2. Once you know the way in which item can go wrong, place an action taken for each to counter potential failure.


Advantage of this methodology is:
1. Cost effective resource utilization
2. Quick Delivery of Product.
3. Lesser risk.


Agile Scrum:
This methodology is also in-line with above methodology. Scrum is a iterative incremental process for Software Development. Group of Developer, Business Analyst/End user and testing team are allocated to the project. Time frame for each release can be 1 to 3 weeks.
In order for this methodology to work, below process needs to be in place:
1. Good tracking tool for requirements and analysis.
2. Efficient build and Deployment process for source code and Database change control process.




I don’t know if this is a good picture to depict Agile Scrum but intention/interpretation is ,
1. Train is moving towards ultimate destination I, e Attaining full application goals and maturity level.
2. Developer is busy in dumping the coal in each bogie, correlating to incremental code release.
3. If they miss putting the coal in one bogie, they can put in other.
This methodology enables below:
1. Align Software Development with changing Business requirements.
2. Quick turn around for the business requirements.
3. Need for lesser Documentation due to closer interaction between Developers and BA/Users.
4. Developer are relieved of Release stress I, e earlier in water fall or traditional iterative model, If they cannot deliver code in one release they have to wait till next release(greater than one month) and also project manager pressure.


Downside of this methodology is:
1. No or less documentation.
2. On boarding of new developer/Team member takes longer as there is no documentation of functionality.
3. Project could be in risk due to Developer dependency and longer on boarding of developer.


Conclusion:
Definitely this methodology has its advantages and disadvantageous. Gains out weight the disadvantages. If this methodology can be used with required documentation, good coordination of Business and Development team, efficient build and deployment process, projects will be executed in time and a quality product will be developed.

What is you delivery methodology? Please post your views.