Saturday, February 20, 2010

Waterfall or Scrum???

Some thoughts to help folks decide on Waterfall or Scrum for their project management:

Waterfall method of project management/development involves well defining the problem statement, followed by requirements analysis, design (architecture) followed by implementation.

On the other hand, Scrum based Agile development involves not spending much time in planning or trying to get the overall big picture or defining the overall architecture in precise terms. Agile methods are Lightweight and are considered to be people-based rather than plan-based.

Few characteristics of Scrum process are the following:
- Self-organizing teams
- Product progresses in a series of week-long or month-long sprints
- Problems are solved only for that specific sprint.
- Team is fully shielded from external influences so that they can concentrate on development (no more regular meetings)
- No status reports but a short Scrum meeting daily where team members meet face2face and give their verbal status reports and scrum master tracks the project (this is not a problem solving session)
- Highly skilled team members in their respective areas

Few advantages of Scrum are:
- Completely developed and tested features in short duration
- Simplicity of the process
- Self-organizing
- each team member carries a lot of responsibility
- combination with extreme programming

Now lets talk about the disadvantages of Scrum:
- Undisciplined hacking (no written documentation) (which can be somewhat mitigated by modular programming)
- Since Agile crucifix relies on solving today's problems first, there is no clear big picture of the problem/solution at any point and this could involve a lot of refactoring every time. This might also lead to a compromised or hacked solution or redefinition of problem statement many times to meet the implementation needs.
- Knowledge monopolies - This is because of the absence of documentation and only few people in the organization would know anything and everything about the solution. If they leave there might come a situation where the solution need to be re-written. This could lead to dictators. On the other hand, this is what human psychology wants because this leads to job security =).
- Experienced folks or talented young development staff may not be interested in working because the dictators could be hoarding uninteresting tasks to the team members most times.
- No proper resource management which leads to compromising on the skills of the team members: Since SCRUMs or Agile rely on short sprints, things are not planned beyond the sprint term and when a need arises and if the resource isnt available for that need, its not always easy to find a resource.
- Team members may not have the big picture and direction in their career in the long term as they proceed along the Scrum methods..
- Customers get fed up with never-ending, continuously changing solution.

I m not against agile methods or Scrum methods... What I think is best is a mix of waterfall and agile scrum methods where waterfall is utilized in identified in problem statement, architecture definition and design definition AND Agile SCRUM method is utilized in Implementation and product releases.

Or, one could always adopt their own rules which are nimble and agile .... There are no rules... All rules are meant to be broken..