Thursday, March 25, 2010

Life Cycle selection plays a crucial role in Project Success

As software professionals, we often encounter questions on selection of development lifecycle for a given project. Ten years back the industry talked about Waterfall, and at most iterative as recommended model for software development. Today Agile is the talk of the town. Many companies are getting into the bandwagon of Agile. The client, development professionals, and sales professionals in the vendor company have picked buzz word of Agile world. It is good to understand the Agile principle but at times it could be costly to force-fit every situation into Agile. Since Agile is the buzz word today, very often we come across situation of force fitting any development work in Agile model. Is such force fitting beneficial?

Let us look at the Agile development model. Agile is based on 12 principles and six values. The values are Commitment, Focus, Openness, Respect, Courage, and Empowerment. The principles summarize the world of changing requirements, frequent deliveries, working software and bringing all stake holders like product manager, business user, analysts, programmer, and testers together towards the success of project. If you look at the values they can be implemented in any scenario. These values are great and bring unique advantages whenever applied. The principles help in differentiating Agile from life cycle model like Waterfall. For instance, changing requirement and frequent delivery is corner stone of Agile where as Water fall believes in frozen requirements and large delivery. There are situations where these models can have its advantages and can provide superior results. For instance if requirement is frozen, applying Agile will not be beneficial. At the same time if requirement changes are visualized frequently, going with Waterfall method will lead to confusion and mistrust between client and the vendor. Therefore it is useful to have a right Development Lifecycle for a given work.

Two important parameters for selecting a life cycle are Requirement Stability and Technology Maturity. If technology is evolving and so is the requirement, Agile will give the best results. If requirement is frozen or is likely to have minimal changes, technology is proven; it is better to adopt Waterfall.
In my early programming days, “C” was introduced as a programming language. I think the power of C was its simplicity. C has only few concepts (Chapters) unlike languages like COBOL or FORTRAN. Similarly the power of Agile is its simplicity and set of universal values which make the development environments vibrant, brings transparency in interaction. Let us not forget that one can implement these values irrespective of a life cycle chosen for a development work. I have seen these values are proved to be beneficial for project success.

I will recommend you to internalize these value set for your development team. Value is like a religion. It is hard to change as it takes a lot of time to change. So the companies should attempt internalizing these values. The values set should at least contain all the values prescribed by Agile Manifesto. There is no harm in having a larger superset of values specially suited to your organization. Once you are through with them, Agile life cycle implementation will become easier. The simple framework suggested above can be used for selecting a life cycle. These two things can go parallel as a maturity improves. If you have achieved maturity on values and did not get many opportunities for Agile life cycle implementation, you will be better off once a real Agile project appears in front of you. Even though you do not have a chance to have enough projects based on Agile life cycle, the maturity on values will pay for itself.

To sum up, Agile has a strong value set. It is useful to internalize them irrespective of you do Agile project or not. The life cycle should be selected at least based on the Requirement Stability and Technology Maturity. There could be other dimensions for selecting life cylcles besides these two. A right selection of life cycle helps in optimizing the Project value to the stake holders and makes the Project Successful.

2 comments:

  1. Agile has a strong value set as you said. Can we make Agile value set work alongwith Waterfall? What would be that model? I like the Agile way but at the same time can not get rid of Waterfall.

    ReplyDelete
  2. Agile is more of management philosophy. Forrester rearch indicates that only 20% of companies really follow agile out of all who beleive they have been following agile. I personally think some of the value sets you can make work along with waterfall. For instance we have succeefully implemented scrum meetings irrespective of development model being followed.

    ReplyDelete