August 6, 2010
I am into software development for last 17 years. Most of the projects I have worked on relies heavily on agile development processes. Over these years, I have always tried to refine agile methodologies to achieve more and more smooth and rapid development experience.
With this experience, we have come out with a lightweight methodology, which has works well for our RAD projects. I will share it here. This can serve as a guideline for our future projects, as well as for new agile project managers. But remember, every project is unique and requires its own customization. Generic processes are to help, not to bind. So, never follow a generic process blindly.
For easy reference, let’s name the methodology we are going to discuss as RADLite. RADLite is similar to other agile methodologies in most of the aspects and hence here we shall be focusing only on the differences.
There are some well known influencing factors, e. g. “requirements evolve over time,” behind agile methodologies, and RADLite respects them. However, RADLite respects the following factors a lot - to achieve more RAD.
Keeping all these factors in mind, RADLite divides a project in phases as given below.
The objective of the inception phase is to arrive at an estimate and go/no-go decision with minimal effort. Inception phase aims to deliver the following.
For a medimu-sized project, these things are typically jotted following a one or two hour discussion among the customer, a functional analyst and a software architect. Many times, only either the functional analyst or the software architect takes the call and then explains the other one.
Note that all these happen before the project is signed off, and hence, no need to devote considerable effort into this. For a medium-sized project, typically, half-a-day to two days should be sufficient.
Agile methodologies suggest to add about 40%-50% contingency to the estimates, and RADLite respects that. However, many of the times the estimate is driven by budget constraint or competition. In that case, limiting the estimates to some feasible figure, keeping in mind feature trade-off is the only way. By the way, feature trade off is not a bad idea at all. Standish Group [2001] research shows that on average only 20 percent of software features in existing applications are “always or “often” used, 16 percent are “sometimes” used, 19 percent are “rarely” used and 45 percent are never used. Great relieving information for we software estimators!
Note that in some projects there might be some uncertainities which may need investment in a feasibility study before the sign-off.
Once the project is signed off, it enters the preparation phase. The preparation phase sets up the platform for the developers, arming them for action - i.e. to gobble up the user stories.
The following jobs are addressed in the preparation phase:
The development phase is sub-divided into three phases, namely must-have, should-have and could-have phase. Each of these phases address their own set of user stories.
Each of these is again sub-divided into these phases:
Development of working prototype is more important in the must-have phase than the should-have and could-have phases. The rule of thumb is that, if the requirements are not clear to such an extent that it may need one of more cycles of revisit, we should have development of working prototype.
RADLite does not deviate here from well established standard methodologies.
RADLite is a methodology successfully followed by me in multiple projects. It’s uniqueness are:
Let me know your views!