Working in an Agile team?
Silver Catalyst is a lightweight project management tool for agile teams. Download now!

Rolling Wave Planning and Progressive Elaboration

Posted on August 5th, 2008 in Agile by siddharta || 1 Comment

A general rule of estimating is that the more you know about something, the easier it is to estimate. The less you know, the harder it is to estimate.

As a project goes on, you learn more and more about the project, modules and tasks. So that means the start of the project is when we know the least about the project. Applying the above rule, estimates are least accurate at the start. Yet, thats when almost all the estimates are done!

Continue reading ‘Rolling Wave Planning and Progressive Elaboration’ »

The importance of the team and man-management

Posted on June 4th, 2008 in Management, Agile by siddharta || 1 Comment

If you have been even half alive in India over the past month you would definitely have seen the IPL. I think one thing that the IPL proved was the importance of the team and man-management. It’s not the rock stars that matter, but the team that plays best together. Throughout I was thinking about the agile philosophy of valuing the team over individuals. Check out this fantastic interview with Darren Berry, director of coaching at Rajasthan Royals where he talks about their management style:

http://content-ind.cricinfo.com/magazine/content/current/story/353445.html

Continue reading ‘The importance of the team and man-management’ »

Scrum Cheat Sheet

Posted on May 6th, 2008 in Agile by siddharta || 2 Comments

I came across this really nice Scrum Cheat Sheet on Scribd. Check it out. To get a better view, you can click the rightmost icon on the toolbar to view in full screen mode.

Read this doc on Scribd: Scrum Cheat Sheet
Roles Scrum Team Team is cross-functional and consists of 5-9 people There are no set project roles within the team Team defines tasks and assignments Team is self-organizing and self-managing Maintains the Sprint Backlog Conducts the Sprint Review Artifacts Product Backlog - (PB) List of all desired product features List can contain bugs, and non-functional items Product Owner responsible for prioritizing Items can be added by anyone at anytime Each item should have a business value assigned Maintained by the Product Owner Meetings Sprint Planning – Day 1 / First Half Product backlog prepared prior to meeting First half – Team selects items committing to complete Additional discussion of PB occurs during actual Sprint SCRUM CHEAT SHEET Estimating User Stories A very high level definition of what the customer wants the system to do. Each story is captured as a separate item on the Product Backlog User stories are NOT dependent on other stories Story Template: “As a I want So that Story Example: As a user, I want to print a recipe so that I can cook it. Sprint Planning – Day 1 / Second Half Occurs after first half done – PO available for questions Team solely responsible for deciding how to build Tasks created / assigned – Sprint Backlog produced Product Owner (PO) Accountable for product success Defines all product features Responsible for prioritizing product features Maintains the Product Backlog Insures team working on highest valued features Sprint Backlog – (SB) To-do list (also known as Backlog item) for the Sprint Created by the Scrum Team Product Owner has defined as highest priority Daily Scrum Held every day during a Sprint Lasts 15 minutes Team members report to each other not Scrum Master Asks 3 questions during meeting “What have you done since last daily scrum?” “What will you do before the next daily scrum?” “What obstacles are impeding your work?” Burndown Chart – (BC) Chart showing how much work remaining in a Sprint Calculated in hours remaining Maintained by the Scrum Master daily Story Points A simple way to initially estimate level of effort expected to develop Story points are a relative measure of feature difficulty Usually scored on a scale of 1-10. 1=very easy through 10=very difficult Example: “Send to a Friend” Story Points = 2 “Shopping Cart” Story Points = 9 Scrum Master (SM) Holds daily 15 minute team meeting (Daily Scrum) Removes obstacles Shields the team from external interference Maintains the Sprint Burndown Chart Conducts Sprint Retrospective at the end of a Sprint Is a facilitator not a manager Release Backlog – (RB) Same as the Product Backlog. May involve one or more sprints dependent on determined Release date Opportunity for team members to synchronize their work Sprint Review Team presents “done” code to PO and stakeholders Functionality not “done” is not shown Feedback generated - PB maybe reprioritized “DONE”= Potentially Shippable! FAQ Process Daily Scrum Sprint Review Business Value Each User Story in the Product Backlog should have a corresponding business value assigned. Typically assign (L,M,H) Low, Medium, High PO prioritizes Backlog items by highest value Scrum Master sets next Sprint Review Who decides when a Release happens? At the end of any given Sprint the PO can initiate a Release. Who is responsible for managing the teams? The Sprint Retrospective Attendees – SM and Team. PO is optional Questions – What went well and what can be improved? SM helps team in discovery – not provide answers Sprint Planning Product Backlog Sprint Backlog Sprint Shippable Product Sprint Retrospective teams are responsible for managing themselves. What is the length of a task? Tasks should take no longer than 16 hours. If longer then the task should be Visibility + Flexibility = Scrum Glossary of Terms Time Box - A period of time to finish a task. The end date is set and can not be changed Chickens – People that are not committed to the project and are not accountable for deliverables Pigs – People who are accountable for the project’s success Single Wringable Neck – This is the Product Owner! Estimate Team Capacity Capacity = # Teammates (Productive Hrs x Sprint Days) Example – Team size is 4, Productive Hrs are 5, Sprint length is 30 days. Capacity = 4 (5 x30) = 600 hours NOTE: Account for vacation time during the Sprint! Tools Task Board White Board containing teams Sprint goals, backlog items, tasks, tasks in progress, “DONE” items and the daily Sprint Burndown chart. Scrum meeting best held around task board Visible to everyone broken down further. Who manages obstacles? Primary responsibility is on the Scrum Master. However, teams must learn to resolve their own issues. If not able then escalated to SM. What are two of the biggest challenges in Scrum? Velocity The rate at which team converts items to “DONE” in a single Sprint – Usually calculated in Story Points. Teams not self-managing, Scrum Master managing not leading.

Agile Advice on maintenance projects, Yahoo India tries out Kanban

Posted on March 24th, 2008 in Kanban, Agile by siddharta || 2 Comments

Following on from my previous post on agile for maintenance projects, I came across this post on Mishkin’s Agile Advice (do subscribe to Agile Advice, it’s really good) : Agile Infrastructure Projects - Lessons Learned.

Also, Joe Arnold who manages the Yahoo! India offices says that one of his teams has recently moved to a Kanban process. I’d be very interested in knowing why they made the change and the outcome of this change a few months down the line.

Agile for maintenance projects

Posted on March 14th, 2008 in Methodology, Agile by siddharta || 5 Comments

In the previous post I wrote that Sanjiv Augustine was giving a talk in Chennai. After the talk we had a discussion about implementing Agile in maintenance projects. This is one of those topics that is not discussed very often, but it’s a topic that crops up very often in an Indian context where many teams are working on offshore maintenance projects.

There are two types of maintenance projects that are commonly encountered. One is when you have a bunch of feature enhancements to an existing project. The second is when you get bug reports from the field that are fixed as they arrive.

The first type is quite straightforward to handle — just prioritize your feature request list and handle like a normal agile project.

The second type is a lot more tricky because you are fixing bugs as they arrive. This means that there is no backlog as such. Rather, bugs are worked on as they arrive in a first-come first-served manner. Sometimes you might have a few bug reports come in simultaneously in which case some basic prioritisation is done, but on the whole it is mostly first-come first-served. What is more, there is no specific “release,” but bugs are fixed and then immediately pushed into production.

It is this second type of project that I want to discuss in this post, because my experience has been that iterations are really ill-suited for this sort of development. The problem with iterations is that you need a definite start date and end date, but it doesn’t make sense to wait and collect bug reports, then plan it out and release them all at once at the end of the iteration. It would be much better if you could work on bug reports as they come in, using some sort of queue.

Naturally, the first thing that comes to mind is David Anderson’s Kanban based method which is based on queues and flow rather than iterations. This seems to be ideally suited to the variable input rate that occurs in bug fixing. One caution is that applying this method requires a good understanding of lean and a mature team and is definitely on the “Ri” end of the “Shu-Ha-Ri” scale. If you are interested, Sajiv has links to a talk that David gave at Yahoo! a few months ago.

Another option that Sanjiv mentioned was doing extremely short iterations. By extremely short, I don’t mean 1 week iterations, but more like 1 day iterations(!). The basic idea is that each day you look at the bug reports available, select some to implement that day, then code, test, integrate within the same day. Repeat every day. Some teams do 2 day iterations instead of 1 day iterations, but the idea is the same - plan, implement and integrate over a very short time frame. This may be easier to implement for those who are familiar with Scrum because the basic principles still apply, though over a very, very short time frame. Given the huge popularity of Certified Scrum Master courses and the subsequent familiarity with Scrum, it might be easier for a new ScrumMaster to go this route.

Another challenge with maintenance projects is that you are often not dealing with your own code. You might be working with some messy legacy code with bad design, no unit tests and so on. What do you do then? All I can say at the moment is to check out Michael Feather’s excellent book, “Working Effectively With Legacy Code“. It’s a must read book for anyone doing agile, maintenance or otherwise.

« Previous Entries Next Entries »