Monday, December 17, 2007

Scrum and its practice

In this writing we will create question first and then try to find the answer. So, here we are starting from the first question.

What is Scrum?

Well, this might be the shortest and finest answer; “Scrum is a project management method for agile software development”. But to be more clear we need to know few more things.

SCRUM is a loose set of guidelines that govern the development process of a product, from its design stages to its completion. It aims to cure some common failures of the typical development process, such as:
Chaos due to changing requirements - the real or perceived requirements of a project usually change drastically from the time the product is designed to when it is released. Under most product development methods, all design is done at the beginning of the project, and then no changes are allowed for or made when the requirements change.

Unrealistic estimates of time, cost, and quality of the product - the project management and the developers tend to underestimate how much time and resources a project will take, and how much functionality can be produced within those constraints. In actuality, this usually cannot be accurately predicted at the beginning of the development cycle.

Developers are forced to lie about how the project is progressing - When management underestimates the time and cost needed to reach a certain level of quality, the developers must either lie about how much progress has been made on the product, or face the indignation of the management.

SCRUM has been successfully employed by hundreds of different companies in many different fields, with outstanding results.

You will find many similarities between SCRUM and Extreme Programming, but one of the major differences is that SCRUM is a fairly general set of guidelines that govern the development process of a product. For this reason, it is often used as a "wrapper" for other methodologies, such as XP or CMM (Capability Maturity Model) - that is, it is used to guide the overall process of development when using these other methodologies.

What are the Characteristics of Scrum?

A product backlog of prioritized work to be done;
Completion of a fixed set of backlog items in a series of short iterations or sprints;

A brief daily meeting or scrum, at which progress is explained, upcoming work is described and impediments are raised.

A brief sprint planning session in which the backlog items for the sprint will be defined.

A brief sprint retrospective, at which all team members reflect about the past sprint.
Scrum enables the creation of self-organizing teams by encouraging co-location of all team members, and verbal communication across all team members and disciplines that are involved in the project.

A key principle of Scrum is its recognition that during a project, 60 to 65% of requirements change and that fundamentally empirical challenge cannot be addressed successfully in a traditional predictive or planned manner. As such, Scrum adopts an empirical approach – accepting that the problem cannot be fully understood or defined, focusing instead on maximizing the team's ability to deliver quickly and respond to emerging requirements.

How many phases can be defined?
We can use three phase here:
Planning:
In this phase, the project is planned and high-level design decisions are made. And output from this phase will be taken for next phase.

Sprint Cycle:
The sprint cycle is an iterative cycle of about 3-4 weeks, in which the actual development of the product is done. It starts out with a Sprint Planning Meeting to decide what will be done in the current sprint. Then the development is done. A sprint is closed with a Sprint Review Meeting where the progress made in the last sprint is demonstrated, the sprint is reviewed, and adjustments are made to the project as necessary.
The sprint cycle is repeated until the product's development is complete. The product is complete when the variables of time, quality, competition, and cost are at a balance.
Develop the product further - implement, test, and document.
Wrap up the work - get it ready to be evaluated and integrated.
Review the work done in this sprint.
Adjust for any changes in requirements or plans.

Closure:
In this phase, the product's development is brought to a close, and the product is released.

How many Scrum Roles are there?
Several roles are defined in Scrum; these are divided into two groups; pigs and chickens, based on a joke about a pig and a chicken:

A pig and a chicken are walking down a road. The Chicken looks at the pig and says "Hey, why don't we open a restaurant?" The pig looks back at the chicken and says "Good idea, what do you want to call it?" The chicken thinks about it and says "Why don't we call it 'Ham and Eggs'?" "I don't think so" says the pig, "I'd be committed but you'd only be involved"

So the pigs are committed to building software regularly and frequently, while everyone else are chickens that are interested in the project but are really irrelevant because if it fails they're not a pig, that is they weren't the ones that committed to doing it. The needs, desires, ideas and influences of the chicken roles are taken into account, but not in any way letting it affect or distort or get in the way of the actual Scrum project.
So, Basically People who are interested and do work in team are one type and the other type is who are interested but don’t work in team.

Pig Roles
Pigs are the ones committed to the project and the Scrum process; they are the ones with "their bacon on the line".

Product Owner
Represents the voice of the customer to ensure the Scrum Team works with the right things from a business perspective.

Scrum Master (or Facilitator)
Ensure that the Scrum process is used as proposed. The Scrum Master is the enforcer of rules and sprints of practice. The master protects the scrum team from impediments and distractions. Master’s primary job is to remove impediments to the ability of the team to deliver the sprint goal. The Master is not the leader of the team (as they are self-organizing) but acts as a buffer between the team and any distracting influences.

Scrum Team
A small team of 5-9 people with cross-functional skills to do the actual work.

Chicken Roles
Chicken roles are not part of the actual Scrum process, but must be taken into account. An important aspect of agile approach is the practice of involving users, business and stakeholders into part of the process. It is important for these people to be engaged and provide feedback into the outputs for review and planning of each sprint.

Stakeholders
The people that will enable the project, but not directly involved in the process. This includes Executives.

Consulting Experts
These are people who provide expertise that is not required on every sprint. Often these chickens will become a pig as part of the Scrum Team during some sprints.

What are the common practices of Scrum?

Following are some practices for the Scrum:

Customers become a part of the development team.

Frequent intermediate deliveries with working functionality. – Incremental development and releases (may be internal only) – providing you an opportunity to validate and verify at shorter intervals rather than only at the end; thereby, providing you time to fix, and reducing the cost to fix.

Frequent risk and mitigation plans developed by the development team itself. – Risk Mitigation, Monitoring and Management (risk analysis) at every stage and with genuinely – Make it live, and continuous activity.

A daily status discussion (Standup/Scrum meetings) asking each team member:
What have you done since yesterday? (accomplishments)
What are you planning to do by tomorrow? (to be accomplished)
Do you have any problems preventing you from accomplishing your goal? (issues/concerns/risks)

Transparency in planning and module development – Let everyone know who is accountable for what and by when.

Frequent stakeholder meetings to monitor progress – Balanced (Delivery, Customer, Employee, Process) Dashboard updates – Stakeholders' update – You have to have Advance Warning Mechanism, i.e. visibility to potential slippage / deviation ahead of time.

No problems are swept under the carpet. No one is penalized for recognizing or describing any unforeseen problem.

Workplaces and working hours must be energized. – "Working more hours" does not necessarily mean "producing more output."

How and when to conduct daily status discussions?

A popular time for the daily status discussion is after the lunch break. Doing it in the morning may be troublesome especially if the team is working in a company using flextime. These status discussions don't take long, so one way is to do standup meetings where the team meets in front of a whiteboard. Because people tend to get tired after lunch, having a lively standup meeting at that time may keep their energy up. Because everybody has already been working that day, their minds are focused on the job and not on their personal issues.

What is Solo Scrum?

Scrum is based on small teams. It enhances communication between team members. Nevertheless, there is a huge amount of software that is developed by solo programmers. A software system being built by a single programmer can still benefit from some of the Scrum principles such as: a product backlog, a sprint backlog, a sprint and a sprint retrospective. Solo Scrum is an adapted version of Scrum for use by solo programmers.

Commonly Used Terms
Sprint
The product is developed in a series of 1-to-4-week iterations, or sprints. Before a sprint is begun, a Sprint Planning Meeting is held to determine what features are to be implemented in that sprint. The sprint has 4 major steps:
Develop the product further - implement, test, and document.
Wrap up the work - get it ready to be evaluated and integrated.
Review the work done in this sprint.
Adjust for any changes in requirements or plans.

Product Backlog
A prioritized list of all the desired changes to the product being developed, put together by the product owner. See Figure 2.

Sprint Backlog
A list with items that will be completed in the current sprint, taken from the product backlog.
Daily SCRUM Meeting
A 15-minute SCRUM meeting is held every day. The SCRUM Master asks the three questions, and all members of the team and interested parties take part and give feedback. The meeting should be held at the same place every time, so that people know where to go.

Impediment
Impediments are things that get in the way of the progress of the project. The SCRUM Master is responsible to look for and remove these obstacles so that they do not slow down or impair the project.

3 Questions
The Scrum Master asks the developers 3 important questions at every SCRUM meeting:
What have you accomplished since the last meeting?
Are there any obstacles in the way of meeting your goal?
What will you accomplish before the next meeting?

Product Owner
The person who commissions the project, and defines the requirements and priorities for the product.

Sprint Planning Meeting
A meeting at the beginning of a sprint where the sprint is planned. Items from the Product Backlog are selected to be completed in the sprint, based on the priorities set by the Product Owner.

Sprint Review Meeting
A sprint is closed with a Sprint Review Meeting where the progress made in the last sprint is demonstrated, the sprint is reviewed, and adjustments are made to the project as necessary.

Conclusion
Scrum naturally focuses an entire organization on building successful products. Without major changes -often within thirty days - teams are building useful, demonstrable product functionality. Scrum can be implemented at the beginning of a project or in the middle of a project or product development effort that is in trouble. Scrum is a set of interrelated practices and rules that optimize the development environment, reduce organizational overhead, and closely synchronize market requirements with iterative prototypes. Based in modern process control theory, Scrum causes the best possible software to be constructed given the available resources, acceptable quality, and required release dates. Useful product functionality is delivered every thirty days as requirements, architecture, and design emerge, even when using unstable technologies. Scrum has been used to produce financial products, Internet products, and medical products by ADM. In every instance, the organization was log-jammed, unable to produce shippable products for such a long period of time that engineers, management, and investors were deeply concerned. Scrum broke the logjam and began incremental product delivery, often with the first shippable product occurring with the same quarter.

Refferences: I have just composed these writing for make it more useful for me and may be you. But this reference is really important if you want to know a bit more then this article.

http://www.controlchaos.com/about/
http://www.codeproject.com/KB/architecture/scrum.aspx#DailySCRUMMeeting12
http://en.wikipedia.org/wiki/Scrum_(management)

2 comments:

shamal said...

I've only read till the question "How many phases can be defined?" and enjoyed. I'll read the rest later on when I find time.

Scrum Process said...

Heya¡­my very first comment on your site. ,I have been reading your blog for a while and thought I would completely pop in and drop a friendly note. . It is great stuff indeed. I also wanted to ask..is there a way to subscribe to your site via email?