Thursday, October 22, 2009

Introduction to scrum (software development)

Scrum is a lightweight, or agile, process for project management. Due to the simplicity, it’s quite popular among software teams. It’s so lightweight that you can very easily say “we are doing scrum” when asked by the management. However, it may not help you much if your team is not disciplined to start with.


Scrum is simple, as described here (wiki). You just need to remember three things:


1) Sprint: short, usually a month, time frame for project review and deciding what to do in next sprint


2) Backlog: the list of task items, plus estimations, you have to solve for the whole project, as well as this sprint


3) Daily scrum meeting: 15min. max, daily status report of the team


See, you just need a list of tasks with estimated effort attached, chop them into monthly milestones, and hold a meeting everyday to collect status. Sounds simple, isn’t it?


Scrum even provide a template for the daily meeting. Everyone on the team has to answer three questions:


1) What have you done since yesterday?


2) What are you planning to do by today?


3) Do you have any problems preventing you from accomplishing your goal?


It’s really not that simple when you think again. How do I know and decompose the tasks need to be done for the project? How do I estimate them? How do I pick what items to do in the next sprint? What if the estimation is off by 2x, 3x, or 10x?


Creating software architecture could help you decompose the tasks; timesheet and function point can help you estimate for effort; Risk management should be able to help in picking the right tasks; If the estimation is off by too much, it might be better to start re-negotiation with your client or management early in the project. All these need discipline to generate reliable outcome.


Even you don’t do anything like those mentioned above, a short daily meeting with your team members could still reveal the situation early, i.e., increase visibility of your project.


No comments: