The Agile Implementation

After an introduction to what agile development should be like, here I discuss further about the Agile Methods adopted at execution level within PSI.

1. SCRUM : The basic principle of Scrum is to focus the team iteratively on a set of features to achieve, in fixed- length iterations of one to four weeks, called Sprints. Each Sprint* has a goal, set by the ProductOwner*, who prepares the ProductBacklog* from where features are selected to be implemented in this sprint i.e. a SprintBacklog*. A sprint always leads to the delivery of a functional partial product. Meanwhile, the ScrumMaster* is responsible to minimize external interference, to solve the problems of the team and especially support.  A daily meeting, DailyScrum*, allows the team to make a progress update on the tasks and the difficulties encountered.
scrum-process
When to consider this:  More appropriate in situations where work can be prioritized in Sprint and that can be left alone. No changes (priority shifts) are allowed mid-sprint. Sprints are time-boxed. This approach is apt for new developments.

2. KANBAN: At the core, it’s similar to SCRUM. But less structured. It’s a model for introducing change through incremental improvements. The work is managed on a Kanban board where every work item passes through various columns like InProgress, testing, ready for release and released; from left to right. The only management criteria is “Work In Progress (WIP) for each state. WIP limit is defined, which tells how much work items are allowed to stay in a certain state.
KANBAN
If state is “Full”, no work can enter. The whole team is responsible to clear the filled state. In this manner the team can identify the bottleneck in their progress by looking at the board and will change to avoid that bottleneck. This way WIP limit acts as Change agent in KANBAN.

When to consider this: More appropriate when priority change is very frequent. There cannot be any iteration borders like SCRUM.  Each and every story (feature) leads to working software and optimally to a release i.e. release whenever we have something useful to release or on-demand. This is well suited for Support and Maintenance projects.

3. Extreme Programming (XP) : Within SCRUM XP practices are followed with few changes in process executions. XP mandates a set of engineering practices like test driven development, automated testing, pair programming and so on. XP works in short iterations of one or two weeks long. SCRUM does not allow any change in sprint but in XP if a particular feature has not started can be swapped with other feature of same size. XP teams work by the priority order prescribed by Product Owner whereas SCRUM team are free to decide the order of work items to be developed although they decide as per the priority defined in ProductBacklog only.

When to consider this: Team starts with SCRUM and realizes there is a need to add some engineering practice like TDD*. As soon as they add any engineering practice to follow; shift is made to XP.

Subsequently, any and every approach taken is decided by the nature of the project and the expectations by the client. All in all, any Agile Method enables flexibility and helps experiment over intervals. Also it helps in reducing seven software wastes as below:

  1. Partially done work BY releasing only what is deployable at the end of Sprint.
  2. Extra Features BY moving the low priority items below in the list and getting rid of if not needed.
  3. Lost knowledge BY enabling knowledge sharing being as interdisciplinary teams, scrum meetings. Also team prepares all the required documents however “just in time”
  4. Handoffs BY enabling cross-functional teams over a period of time, scrum meetings to provide regular updates on each task.
  5. Task Switching BY ensuring all the required information is available before starting a work in sprint planning meetings. Proper prioritizing the task. completing a task until DONE
  6. Delays BY ensuring all the required resource availability before the start of sprint.
  7. Defects BY writing good user stories having acceptance criteria. Early feedbacks, sprint demos eliminates defect detention at later stage.

*Sprint is a term used to describe a development iteration (Work) cycle.

*ProductOwner is a term used to describe the person who defines, prioritize the requirement of a product and accept/rejects work results.

*ScrumMaster is a term used to describe the person who is a facilitator among various stakeholders.

*DailyScrum is a term used to describe a daily 15 minutes “inspect and adapt” meeting by Scrum team to discuss things done yesterday and things to be done today and any impediments during work.

*ProductBacklog is a term used to describe the prioritized list of features outlined by Product Owner.

*SprintBacklog is a term used to describe the list of features picked up by scrum team from Product Backlog for a sprint.

*TDD is a term used for Test Driven development.

Shailja Rampal is a Consultant and is managing multiple projects @ PSI. She is a certified Scrum Master.After an introduction to what agile development should be like, here I discuss further about the Agile Methods adopted at execution level within PSI.
1. SCRUM : The basic principle of Scrum is to focus the team iteratively on a set of features to achieve, in fixed- length iterations of one to four weeks, called Sprints. Each Sprint* has a goal, set by the ProductOwner*, who prepares the ProductBacklog* from where features are selected to be implemented in this sprint i.e. a SprintBacklog*. A sprint always leads to the delivery of a functional partial product. Meanwhile, the ScrumMaster* is responsible to minimize external interference, to solve the problems of the team and especially support.  A daily meeting, DailyScrum*, allows the team to make a progress update on the tasks and the difficulties encountered.
Agile Implementation 2
When to consider this:  More appropriate in situations where work can be prioritized in Sprint and that can be left alone. No changes (priority shifts) are allowed mid-sprint. Sprints are time-boxed. This approach is apt for new developments.
2. KANBAN: At the core, it’s similar to SCRUM. But less structured. It’s a model for introducing change through incremental improvements. The work is managed on a Kanban board where every work item passes through various columns like InProgress, testing, ready for release and released; from left to right. The only management criteria is “Work In Progress (WIP) for each state. WIP limit is defined, which tells how much work items are allowed to stay in a certain state.
Agile Implementation 1
If state is “Full”, no work can enter. The whole team is responsible to clear the filled state. In this manner the team can identify the bottleneck in their progress by looking at the board and will change to avoid that bottleneck. This way WIP limit acts as Change agent in KANBAN.
When to consider this: More appropriate when priority change is very frequent. There cannot be any iteration borders like SCRUM.  Each and every story (feature) leads to working software and optimally to a release i.e. release whenever we have something useful to release or on-demand. This is well suited for Support and Maintenance projects.
3. Extreme Programming (XP) : Within SCRUM XP practices are followed with few changes in process executions. XP mandates a set of engineering practices like test driven development, automated testing, pair programming and so on. XP works in short iterations of one or two weeks long. SCRUM does not allow any change in sprint but in XP if a particular feature has not started can be swapped with other feature of same size. XP teams work by the priority order prescribed by Product Owner whereas SCRUM team are free to decide the order of work items to be developed although they decide as per the priority defined in ProductBacklog only.
When to consider this: Team starts with SCRUM and realizes there is a need to add some engineering practice like TDD*. As soon as they add any engineering practice to follow; shift is made to XP.
Subsequently, any and every approach taken is decided by the nature of the project and the expectations by the client. All in all, any Agile Method enables flexibility and helps experiment over intervals. Also it helps in reducing seven software wastes as below:

  1. Partially done work BY releasing only what is deployable at the end of Sprint.
  2. Extra Features BY moving the low priority items below in the list and getting rid of if not needed.
  3. Lost knowledge BY enabling knowledge sharing being as interdisciplinary teams, scrum meetings. Also team prepares all the required documents however “just in time”
  4. Handoffs BY enabling cross-functional teams over a period of time, scrum meetings to provide regular updates on each task.
  5. Task Switching BY ensuring all the required information is available before starting a work in sprint planning meetings. Proper prioritizing the task. completing a task until DONE
  6. Delays BY ensuring all the required resource availability before the start of sprint.
  7. Defects BY writing good user stories having acceptance criteria. Early feedbacks, sprint demos eliminates defect detention at later stage.

*Sprint is a term used to describe a development iteration (Work) cycle.
*ProductOwner is a term used to describe the person who defines, prioritize the requirement of a product and accept/rejects work results.
*ScrumMaster is a term used to describe the person who is a facilitator among various stakeholders.
*DailyScrum is a term used to describe a daily 15 minutes “inspect and adapt” meeting by Scrum team to discuss things done yesterday and things to be done today and any impediments during work.
*ProductBacklog is a term used to describe the prioritized list of features outlined by Product Owner.
*SprintBacklog is a term used to describe the list of features picked up by scrum team from Product Backlog for a sprint.
*TDD is a term used for Test Driven development.
Shailja Rampal is a Consultant and is managing multiple projects @ PSI. She is a certified Scrum Master.[:]