Scrum Tool Home

Online Scrum Software Development Blog

Digg This! Post on Facebook! Post on Yahoo! Post on Reddit Post on Delicious Stumble This! Tweet This! Post on Google

Monday, January 31, 2011

A Cure for Task Estimation Obsession

By Alan Atlas

I often see teams obsess over sprint planning, especially the task estimates. I mean really obsess. Two days of planning for a two-week sprint? Believe it or not, it happens. Even as they complain about spending too much time in scrum meetings, they will insist on arm-wrestling over each and every task estimate. For teams that want to take advantage of their scrum experience and streamline their planning, eliminating task estimates can be an option.

Don’t look so shocked. It is possible. One big caveat, though. For those teams that are new to Scrum, I do not recommend eliminating task estimates until you have established a stable velocity.

Once you have a stable velocity, however, you can use the concepts of story points and velocity to eliminate the need for task estimates in sprint planning. The time you used to spend estimating tasks can then be used more wisely to create working software. I will present a series of steps you can take to gradually eliminate task estimation from your sprint planning process.

Background

Before we get started, let’s quickly recall the reasons why we do the sprint planning things that we do. (We’ll want to make sure we can still meet those needs when we’re done streamlining the process.) We plan the sprint in order to create the following:

  1. A shared understanding across the team of the goals of the sprint;
  2. A shared understanding of the work that needs to be done during the sprint;
  3. An environment in which team members know what to do next (or can find out in seconds);
  4. An achievable team commitment to deliver a certain amount of value, expressed as product backlog items; and,
  5. A burndown chart that we can use to track our progress through the sprint.

Task estimates most often contribute to goal five above, and for some teams, to goal four. If we can achieve those two items without creating task estimates, then we are free to choose not to use task estimates at all, aren’t we? If you agree, here’s a way to transition away from doing task estimates as part of your sprint planning.

Step 1. Establish Stable Velocity

Use your normal sprint planning process, whether it takes two days or two hours, for each sprint until you can demonstrate stable velocity. (There are many discussions of how to achieve stable velocity out there; it is too large a subject to treat here. For more on agile estimation, I recommend Mike Cohn’s Agile Estimating and Planning.) Make sure your team passes the Nokia test by producing potentially shippable software each sprint (in other words, you’ve proven that you can calculate your velocity correctly). When you have achieved stable velocity, your team will be able to make, and meet, sprint commitments based solely on demonstrated velocity and story point estimates of Product Backlog items. You want to do this anyway as part of having a good scrum implementation, right?

Step 2: Experiment with a Task-Based Burndown

When you think you’re ready to stop estimating tasks, start to use two burndown charts instead of one. Continue to use your normal work-based burndown, which is based on the task estimates from the sprint backlog. Add to it a new burndown chart, which will be based only on the number of tasks in the sprint backlog, regardless of their estimates. The new burndown chart can be called a task-based burndown chart.

Your familiar work-based burndown chart starts with the total of all task estimates for the sprint and, as estimates are updated daily, the burndown continues to reflect the estimated amount of work left in the sprint.  Hopefully it will usually trend down toward zero. Your new, task-based, burndown chart starts instead with the total number of tasks listed for the sprint. Estimates aren’t updated for this chart, and work is burned down when a task is completed (its value on the burndown goes from 1 to 0).  For best results, make sure your task breakdown results in the smallest tasks possible. The task-based burndown chart reflects the estimated total number of tasks left to do in the sprint and not the estimated work effort left. This works best if you have lots of small tasks, typically ones that can be done in a day or less.

Make sure that both burndowns agree and that both give you the same visibility into your progress during the sprint. If you find that the task-based burndown isn’t useful, take a look at Step 3.

Step 3: Shrink Tasks to Improve the Task-Based Burndown

A good, informative task-based burndown chart depends on there being many small tasks to burn down. Conceptually, if you only had one task per PBI on a sprint backlog, you could have a perfectly good work-based burndown chart because the daily updates of the task estimates are given with arbitrary granularity (Now, if your PBIs really have only one task each, it’s indicative that there is a problem with either your stories or your task decomposition). In contrast, the task-based burndown chart for this sprint would be very insensitive on a daily basis, because the tasks would tend to span many days, and progress would not show until a task was completed. The remedy is to make tasks small. A good rule of thumb is that a task should be something that can be completed in a day or less.

Step 4: Stop Doing Task Estimates

When your two burndown charts convey similar information and when you can deliver on velocity-based sprint commitments, you can stop doing task estimates and do away with the work-based burndown. For some teams this will be easy to achieve and for others it could take many sprints. The key to this is to use the idea of velocity correctly. Note that you will still want to be doing the task breakdowns for now. Eliminating them is a different step altogether.

What did we lose when we did away with the task estimates? Task estimates support planning needs four and five from the list above. We still have a burndown chart that we can use to track progress, so we still support goal five.  We have removed the need to support goal four because our team has demonstrated the ability to make commitments based on story point estimates of PBIs and does not need task estimates for validation.

The only thing we might have lost is tangential support for planning need number two. That is, by not asking for estimates, we may have removed some of the mental pressure and motivation to think deeply, look for issues, recall similar efforts, and in general actively bring knowledge and experience to bear on the problem of correctly planning out the tasks. How big a deal is that? The answer to that question is unique to you and your team.

Saturday, January 29, 2011

The Product Vision

By Roman Pichler

True North

Have you ever worked on a Scrum project where the overall goal was not clear? Where you had a product backlog but the people involved in the development effort only vaguely understood the purpose of the release? It happens more frequently than any of us would like, even on projects with multi-million dollar budgets! Often Scrum’s emphasis on “getting work done” is misunderstood as a rush to develop with not enough thought to where the project should be going. Don’t make that mistake. Every Scrum project needs a product vision that acts as the project’s true north, sets the direction and guides the Scrum team. It is the overarching goal everyone must share – Product Owner, ScrumMaster, team, management, customers and other stakeholders. As Ken Schwaber puts it: “The minimum plan necessary to start a Scrum project consists of a vision and a Product Backlog. The vision describes why the project is being undertaken and what the desired end state is.” (Schwaber 2004, p. 68)

Five Questions

“Vision is the art of seeing things invisible,” observed the English writer Jonathan Swift. The product vision paints a picture of the future that draws people in. It describes who the customers are, what customers need, and how these needs will be met. It captures the essence of the product – the critical information we must know to develop and launch a winning product. Developing an effective product vision entails carefully answering the following questions:

  1. Who is going to buy the product? Who is the target customer? 
  2. Which customer needs will the product address? 
  3. Which product attributes are critical to satisfy the needs selected, and therefore for the success of the product? 
  4. How does the product compare against existing products, both from competitors and the same company? What are the product’s unique selling points? 
  5. What is the target timeframe and budget to develop and launch the product?

Answering these five questions also gives us the information to create a business case. It allows us to decide if and how the project should proceed.

Creating the Product Vision

Since the Product Owner is responsible for the success of the product and its return on investment (ROI), he or she should lead the vision-creation activities through close collaboration with the team (Pichler 2008). For innovative projects, this team may include business and technical people; for instance, marketers, product and user interface designers, and developers. The more innovative and complex the product is, the more important the vision is and the more effort is required to create it. For new-product development projects and major product updates, market research and prototyping activities are usually carried out. Since it may take several weeks or even months to compile the relevant information in this case, running one or more sprints is the best way to carry out the necessary work. Contrast this with a small product update or a maintenance release where creating the vision may only take a few hours or days.

The Heart of the Product Vision

At the heart of the product vision is the description of the selected customer needs and the necessary product attributes meeting those needs. To arrive at this vision, we first select our target customers and then the relevant customer needs, thereby deciding which market or market segment we are going to address. Then we identify the product attributes, those critical high-level requirements the product must fulfill to satisfy the needs.

Product attributes typically comprise both nonfunctional and functional requirements. Nonfunctional requirements include performance, robustness, and usability requirements. Functional requirements describe specific product functions or features, for instance making a call or sending an email. The product attributes serve as a guide for the team; they constrain the solution space – the set of all possible solutions.

Describing product attributes at the right level of detail is a balancing act that requires close collaboration between the Product Owner and the team. Under-specifying attributes causes a lack of guidance and direction. Over-specifying product attributes results in making decisions earlier than necessary and negatively impacts the team’s creativity. The techniques useful to describe attributes include personas and scenarios, use cases, and user stories.

Desirable Qualities

Like any important goal, a good vision equally appeals to our intellect and to our emotions. It should motivate and inspire people. The product vision should be clear and stable; broad and engaging; and short and sweet.

Clear and Stable

The product vision must be clear and easy to understand to create alignment and a common purpose, and to avoid misinterpretation and confusion (Lynn&Reilly 2002, Pichler 2008). The English term vision is derived from Latin visio, which translates to “seeing, view, notion, idea.” The product vision should hence allow us to see the future product. The vision should not be fuzzy or hazy.

Vision changes, particularly with regards to customer needs and critical attributes, can cause confusion, de-motivation, and project failure. Small adjustments are usually fine, as long as the product’s value proposition stays the same.

Broad and Engaging

The product vision should describe a broad and engaging goal: a goal that guides the development effort but leaves enough room for creativity; a goal that engages and inspires people, fosters creativity, and generates buy-in.

Short and Sweet

The product vision should be brief and concise (Pichler 2008). It should contain only information critical to the success of the product. The blockbuster products researched by Lynn&Reilly (2002), for instance, had visions with no more than six product attributes. The product vision is, therefore, not a feature list and should not provide unnecessary detail.

The Elevator Test

The classic way to validate the product vision is to answer the elevator test: “Can you explain your product in the time it takes to ride up in an elevator?” Moore (2006, p. 152). Passing this test ensures that your product vision is clear, engaging, and brief (assuming we ride up a building with the right height and don’t get stuck). Notice that the elevator test does not tell us if we have selected the right customer needs and the right product attributes; only early customer feedback can do that.

Business-as-Usual Projects

Even our business-as-usual projects should be guided by a product vision. For example, I manage my own marketing activities using Scrum. I fill my marketing backlog with new items on a regular basis, sometimes as frequently as every other day. It would be an overkill to carry out market research and prototyping activities before I decide what to work on. Instead, I set myself a marketing vision that guides my work and provides focus. My vision is, by design, less substantial than the vision for a new-product development project but it’s still important that I have one.

Summary

An effective product vision guides the Scrum team and aligns stakeholders and customers. Spending time and money on vision creation is a worthwhile investment. As Robert G. Cooper notes: “Too many new-product projects move from idea stage right into development with little or no up-front homework. The results of this ‘ready, fire, aim’ approach are usually disastrous. Solid pre-development homework drives up new-product success rates significantly and is strongly related to financial performance.” (Cooper 2000, p. 3) This does not mean procrastinating the start of development, using an upstream waterfall process that creates a mighty product concept or employing a separate project. The trick is to spend as little time as possible but as much as required; to use Scrum to create the vision; and to ensure that as many of the team members involved in the vision creation as possible also transform it into the actual product.

References

Cooper, Robert G. Doing it Right. Winning with New Products. Ivey Business Journal. July/August 2000.
Lynn, Gary S. and Richard R. Reilly. Blockbusters. The Five Keys to Developing Great New Products. HarperCollins. 2002.
Moore, Geoffrey A. Crossing the Chasm. Marketing and Selling Disruptive Products to Mainstream Customers. Revised edition. Collins Business Essentials. 2006.
Pichler, Roman. Scrum – Agile Projektmanagement richtig einsetzen. dpunkt.verlag. 2008.
Schwaber, Ken. Agile Project Management with Scrum. Microsoft Press. 2004.

Thursday, January 27, 2011

Yin Yang & Project Management

By Jann P. Thomas

The Chinese philosophy of yin yang is based on four laws.

  1. Yin and Yang are opposing. Yin and yang describe the polar effects of phenomena.  For instance, winter and summer would be the yin and yang for the year.  
  2. Yin and Yang are mutually rooted. They are complementary qualities that make up the whole phenomena, just as daylight and night together make up a single day.
  3. Yin and Yang mutually transform. That is, a change in one quality causes change in the other.  For example, snow melting in the spring cause a rise in the river.
  4. Yin and Yang mutually wax and wane. There is a dynamic equilibrium between Yin and Yang; even as winter days grow shorter, the night grows longer.

Agile and traditional management methodologies have a yin yang relationship that is felt quite keenly by many project managers charged with moving a software team toward agile practices. Handed an edict from on high or a mandate from the software team’s own grassroots effort, the manager must figure out how to function in his new reality. Will the developers now have free reign to do whatever they want to do?  Who will be in control?  What is the job of the manager on an agile development team?  How can I move from command and control to cooperation?  Learning agile’s guiding principles and how their inherent balance translates to concrete actions is the first step to a truly productive conversion to Agile.

Balanced Principles

Like the yin yang philosophy, agile also has four guiding principles—principles that are also opposing, mutually rooted, mutually transforming, and mutually wax and wane. These principles are captured in the Agile Manifesto:

We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:

Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan

That is, while there is value in the items on the right, we value the items on the left more.

Let’s examine the yin and yang of these guiding principles and see how it can help guide a project manager in converting to agile.

Individuals and Interactions & Process and Tools

This principle lends itself to several concrete actions. If possible, remove cubicles and have the team together in one shared workspace. Schedule daily stand-up meetings for each team member to discuss what they did yesterday, what they are doing today and what blockers stand in the way of completing work. Remove any blockers or impediments to delivery, whether that means buying tools or putting a process in place to encourage productivity.  

A process? Yes. Agile is not anti-process. For example, take the familiar case of bringing in an enhancement to a product in mid-iteration rather than completing the work originally scheduled for that iteration. To do this effectively and transparently, the agile project manager must create a process for bringing in new, unplanned work. This process must also include recording what tasks were moved out of the iteration to make room for the new work so that the whole team, including the customer, can see and understand not only what changes occurred, but what the costs of those changes were.

To be an agile project manager is to be introspective. A good agile project manager should review and question all of the organization’s existing and developing processes. Is the process appropriate in an agile environment? Does this process help or hinder the team’s efforts to deliver working software? In addition, iteration reviews (retrospectives) give the entire team the opportunity to evaluate any changes they have made to their processes; the team keeps the ones that work and drops the ones that don’t.

Working Software & Documentation

Working software is the goal of every software project. Traditional approaches, such as waterfall and spiral methodologies, rely on the concept that the requirements of the product can be precisely defined before implementation begins. Agile development practices differ in that all software project activities, from requirements to installing production-ready code, are delivered in small time chunks called iterations. An iteration can range from one week to four weeks. The only fully defined requirements are the ones that the development team is working on in a particular iteration.

Agile teams and agile project managers are not opposed to documentation; rather, agile is focused on just enough documentation, just in time to create working software. On agile teams, requirements are developed only when they are ready to be used (just in time), which often results in a smaller set of architectural diagrams, use cases, and functional specifications. The documents that are created and maintained are only those that are necessary for development (just enough). If a document has outlived its usefulness, it is jettisoned by the team. Producing documentation is appropriate as long as it supports the working software.

Collaboration & Contract Negotiation

All software projects have some type of contract, whether implied or explicit.  Implied contracts are used most often for internal software teams; explicit contracts are used for things like hiring an outside software team for a temporary project. The one thing that both of these contract types have in common is a date.  Most project managers are familiar with the three sides of the constraint triangle: scope, time, and quality. If time (completion date) is fixed and high quality a priority, the only area for compromise is scope. Negotiating with the customer or product owner on scope is a key component of agile project management. Only the product owner knows the importance of a feature. Only the product owner can make decisions on the relative position of features and which features must be delivered first. Only the product owner can decide that rework of an existing feature is more important than new feature development. The fact that the product owner is part of the team and can see the work as it is completed allows agile teams deliver value earlier than they could using traditional software methodologies.

Responding to Change & Following a Plan

As anyone who has built a house can attest, having a detailed set of blueprints is only the beginning. Compromises and changes are expected and inevitable prior to final delivery. The same holds true in software. Just as a homeowner would not give the blueprints to a builder and never visit the construction site, product owners for software projects shouldn’t just hand the development team a list of requirements and then never see the interim product.

Agile projects allow the product owner to visualize the progress on his project as code begins to work. The product owner is empowered in agile projects to finalize details as work progresses. Returning to our building analogy, during construction, the homeowners pick out fixtures, choose cabinet colors, and sometimes move walls as they begin to see their home emerge. Similarly, the agile product owner fills in the details of his own requirements (or changes his mind about his requirements) as he begins to glimpse the working software. If the product owner decides there needs to be a change in something already developed and that change is more important than new undeveloped features, the project team makes that change. Agile teams, like home builders, respond to change.

An Agile Coexistence

Just as yin cannot exist without yang, the elements that agile practitioners value (working software, collaboration, change, and interactions) do not exist without their corresponding yang (documentation, contracts, plans, and process). These mutually inclusive agile principles also follow the laws of yin and yang. Agile principles are opposing: there must be a plan but the plan will change. Agile principles are mutually rooted: the contract, whether implied or explicit, will require negotiation, so invite the customer to collaborate with the team. Agile principles mutually transform: the team needs some sort of blueprint of what to build but only as much as makes sense and is reasonable to maintain. Finally, Agile principles wax and wane: all software teams need processes and tools to know their boundaries but individuals interacting daily build the best software.

Tuesday, January 25, 2011

Ready, Fire, Aim: A Rebuttal

By Tom Steele

One popular criticism of the early agile software development movement is often summed up by the phrase Ready, Fire, Aim. The phrase’s intent is to depict agile approaches like Scrum and XP as foolish—something so obviously inconsistent with conventional wisdom that it could not possibly work. At its core, it suggests that lengthy planning (aiming) must come before getting started (firing). Anything else could never work and should be avoided.

Those of us who have successfully adopted Scrum know that rapid and continuous planning throughout the life of a project is much better than any lengthy upfront planning effort. Scrum, through its release and iteration burndown charts, provides the necessary information to properly steer projects toward successful outcomes.

Nonetheless, you may still encounter this anti-agile sentiment from people or organizations reluctant to try Scrum. I would like to share two illustrations that show why Ready, Fire, Aim can sometimes be a good thing.

Ready, Fire, Aim Really Works

Ready, Fire, Aim is a play on Ready, Aim, Fire, a phrase commonly used in conjunction with firearms. Since firearms are used extensively by the military, the first counter story I want to share comes from the US military.

General Norman Schwarzkopf commanded US forces in the Persian Gulf during Operation Desert Shield and Operation Desert Storm. He is credited with taking advantage of technology advancements in weaponry to aide his success during the Gulf War. One such advancement involved putting soldiers on top of buildings in Iraq. These soldiers would remain hidden during daylight hours. At night missiles would be fired from several miles away. After the missiles had been fired, the soldiers on the rooftops would use lasers to guide (aim) them to their targets—truly a Ready, Fire, Aim operation.

A Scrum team is similar to the soldiers on the buildings, constantly guiding their projects to the desired targets.

Confucius Says

My second story illustration is a simple passage from a fortune cookie: You can’t aim a duck to death.

The Scrum/agile interpretation of this phrase is that you will never complete any project (kill the duck) if you never actually get started (aim endlessly). Numerous projects fail before getting started; too much time and money is expended at the onset. This can be especially true in large enterprises where there is a tendency to spend far too long defining and planning projects and never getting them started. The passage also nicely complements the Scrum mantra The art of the possible.

That doesn’t mean that we shouldn’t aim at all. After all, it is also said that a well-aimed spear is worth three. Even (and especially) in an agile setting, everything must be kept in balance. It’s entirely possible for a project to start prematurely and fail as a result. Discussing this possibility with those who are predisposed to mistrust agile demonstrates an appreciation for the motivations of plan-driven project managers. Maintaining the crucial balance between aiming and firing is why we ultimately tailor agile approaches to individual circumstances—why we strive to be as agile as possible.

Conclusion

The next time you are in a situation where you sense uneasiness towards agile or Scrum, consider using these stories as arguments for an agile approach. Introduce Ready, Fire, Aim as a common argument against agile, then share these stories to help illustrate your understanding of their concerns. Though simple and anecdotal, they may cause a skeptic to reconsider any bias against agile software development approaches like Scrum.

Sunday, January 23, 2011

Scrum Games: Participatory Activities that Illustrate Scrum Principles and Practices

By Michael de la Maza

Three years ago I learned how to fly a plane. Before I got into the cockpit, I read books and magazines and watched videos on flying. I spoke to pilots about their experiences. I attended aero club meetings. But nothing prepared me for the vertigo and nausea I felt on my first flight or the terror I experienced when night flying.

Like flying, Scrum cannot be learned solely from a book or from a presentation. It must be experienced. Great Scrum trainers and coaches lead their teams through a wide mix of activities that illustrate Scrum practices and principles to give their teams the opportunity to learn by doing.

One of the key Scrum principles is teamwork: the team cannot be a collection of individuals each pursuing their own interests. This concept is, unfortunately, foreign to many work environments. In contrast, a Scrum team coordinates its activities during various meetings, including the daily scrum and the planning meeting, and through the use of many artifacts, such as the burndown chart.

The ESP (extrasensory perception) game is a very simple game that I have found to be very effective in highlighting the importance of teamwork and in sparking discussions about its value.

ESP Game

The ESP game should be played after the team has gone through a Scrum planning exercise and is familiar with sprints. I have found that at this stage there are many doubts about the necessity and benefits of the various Scrum meetings.  I often find that the team wants to skip or modify a meeting.  The ESP game illustrates the key point that if the team does not explicitly invest in teamwork and communication, it will suffer. The game can also be played during the retrospective meeting by teams that have already implemented Scrum to spur discussion about teamwork and communication.

The ESP game is played as follows:

  1. The participants are divided into pairs. If the group has an odd number of people then the trainer or coach should play.
  2. Each person is given a set of five to fifteen cards. All sets of cards should be the same. These cards can be standard playing cards, planning poker cards, or index cards created for this game.
  3. Each person in each pair selects one card and slides it into the middle. Once both cards are in the middle they are turned over. The players can only show one card at a time.
  4. If the two cards match then each player gets a point.
  5. The game continues until all cards are exhausted.
  6. When all cards match, the game is over. If any cards did not match, then the game is repeated.

During the game, the players are not allowed to communicate verbally or non-verbally. They can only communicate through the cards. The players are not allowed to write on the cards or mark them.

Once all pairs of players have finished (i.e. their cards match for the entire deck), then the pairs can be grouped together to form sets of four people and the ESP game can be repeated. The players receive a point only if all four cards match. Smaller groups can continue to be grouped until all of the players are in one large group.

Note that while there may be many logical ways to sort the cards (in numerical order, in alphabetical order, etc.), the greatest challenge is in agreeing on the order without any sort of meta discussion. If, in the first round, one player sorts the cards in high to low order and the other player sorts them in low to high order, neither player will know whether to repeat the original order or to switch orders in the second round. Typically, one player will eventually follow the order selected by the other player. When the pairs are then grouped together the leader/follower behavior must change because each pair has a leader and, unless the order happens to match, one of them must follow.

Discussion

When the activity is completed, invite the participants to engage in a discussion. Here are some questions that often spark conversation:

  1. What did you learn?
  2. How much simpler would the ESP game be if you could speak with the other player?
  3. In your current work environment do you ever feel that you are playing the ESP game? If so, why?
    - What Scrum meetings and artifacts ensure that you will not fall into the trap of coordinating your work effort by playing the ESP game?
    - What might happen if you eliminate these Scrum meetings and artifacts?
  4. In your current environment...
    - How do people coordinate their work?
    - Is coordination a first-class object?
    - How often do coordination problems occur?
    - Is teamwork highly valued?
    - Is the team in sync?
    - How are promises and expectations managed?
    - How does the team respond to coordination failures?
  5. How can your team improve its teamwork?

Scrum games such as the ESP game serve to illustrate the value of Scrum principles and practices. I encourage you to use them when introducing a traditional team to Scrum. Even high performance Scrum teams enjoy playing these games during the sprint retrospective!

Friday, January 21, 2011

Team Dysfunctions and Scrum

By Plamen R. Balkanski

Scrum implementations, especially in their early days, are expected to, and almost always do, reveal hidden problems and issues within the Scrum team. This article explores ways to overcome some of these all-too-common team dysfunctions.

A Beautiful Beginning

Pat is the ScrumMaster on her organization’s first-ever Scrum team. So far, all team members seem to be interested and are attending all the meetings. Pat has managed to secure a regular meeting room with whiteboards for the daily standups and has also been able to book an appropriately equipped room for reviews and planning meetings. Everyone seems to have caught the spirit of index cards and blu-tac. Overall, Pat feels very encouraged by the energetic culture emerging around her.

The only part that seems a bit off is the team retrospective. She can’t put her finger on the problem; things just seem a little weird. No big issues are being raised during retrospectives, but Pat dismisses it as normal.

Another iteration goes by. This iteration was a disappointment. Only 5 of the team’s 12 planned points were achieved. As a result, the review didn’t go too well . It’s now time for another retrospective. Pat is curious as to whether the iteration’s poor outcome will spark some discussion about the sudden slowdown in velocity.

The retrospective seems to be running smoothly when suddenly Tom, a senior developer, speaks up: “Here’s what really happened. Chris [a test engineer] wouldn’t let the rest of the team do any testing. As a result the team ended up with half of the stories in the final stages of testing just because test engineers would not trust the rest of the team members to provide adequate testing.”

Surprised by the fact that he is being blamed, Chris replies, “No one else is qualified to do ‘proper testing.’ Besides that, this whole Scrum process practically ignores testing. It’s no surprise that quality is going down.”

At this point, Pat interjects. She explains that blaming is not allowed. She accentuates the positives of identifying a problem that the team now needs to focus on resolving. She agrees to research solutions to these impediments. The rest of the retrospective is uneventful.

Back at her desk, Pat begins to work on solving this problem. She sees this as a technical issue: testing needs to be automated to reduce the workload of testers. She starts reading about test automation and distributes various useful webcasts and studies about it. She even changes the Scrum training to frame it specifically for test engineers. They seem to understand more and more about cross-functional teams and the need of automation. The problem must be solved, right?

Beneath the Surface

Wrong. Let’s step outside of our scenario and analyze what’s happened so far. Though Pat may have solved some of the surface problems, the real issue probably runs much deeper. She has two likely problems: lack of trust and fear of conflict. The test engineers do not trust the rest of the team; perhaps the developers don’t trust the testers, either. Generally speaking, lack of trust is usually caused by an unwillingness to be vulnerable. In these cases, team members are not open with one another and are afraid to talk about their mistakes and weaknesses. At the same time, the fact that the team’s previous retrospectives seemed to be running a little too well suggests that the team might be afraid of conflict. As a result of these two problems, the team is not engaging in open debates and is instead resorting to indirect discussions and shielded comments. Eventually, though, the issues will reach a point where they bubble out of control, causing far bigger problems than if the conflict had arisen earlier, or even better had been resolved in a team debate.

The Calm Before The Storm

During the next few iterations, things seem to be running more smoothly. The testers are no longer questioning automated testing and seem to be spending time finding an appropriate tool to use. Pat still has slight concerns about the way the team reaches quick agreement during planning, although she can easily justify this with the fact that the team is just getting more and more used to Scrum. The team is edging close to completing the list of stories in the backlog, and Pat is ready to focus on the release.

On what seems certain to be the last planning meeting before the release, Pat asks the team to start discussing final steps to produce a deliverable product. Suddenly, people seem a bit uncomfortable. Most unexpectedly Jane, another test engineer, states out of the blue, “The team may think that this product is ready for release, but I’m not convinced that enough testing has been done.”

Chris quickly concurs, “I agree. I will not accept responsibility for this product. I’ve never done less testing in my career nor have I ever seen such a weird way to develop something.”

Peter, a web developer responds, “Obviously, the test engineers still do not trust the rest of the team. How can more testing be done when only two team members are testing?”

Pat leaves the meeting disappointed and very concerned because what seemed to be a maturing Scrum team suddenly doesn’t act like a team at all. She spends the rest of the day reading about teamwork and various ways to improve it. She is beginning to realize that without sorting out underlying problems it will be difficult to improve practices and productivity.

Let’s step back and look at what’s happening. The Scrum team in our story appears to be functioning smoothly but are really hiding their true concerns from each other. A team that does not engage in debate, or in other words, a team that lacks healthy conflict, often also lacks commitment.  Because team members are not airing their opinions in an open discussion, they rarely, if ever, commit to a decision, even though they may demonstrate agreement in meetings. Unfortunately when this is the case, it triggers an even bigger problem: avoidance of accountability. When team members are not committed to a well understood plan of action, they often fail to call their peers on actions and behaviors that seem counterproductive to the good of the team.

Did You See It Coming?

The next morning things seem to become even worse. During the daily standup, Pete, a senior developer, shows obvious impatience while Chris is talking. He even interrupts him to make a point about team members not following practices that he believes are a must. Tom also joins in by ignoring the usual order and stating that he feels it has become more difficult for him to do “proper” development. Being a “jack of all trades” makes it impossible for him to develop expertise. Jane follows to confirm what is obvious to the rest: she doesn’t enjoy working “this way” and she doesn’t see any career progression opportunities with Scrum.
Pat feels betrayed. It seems like the hundreds of hours spent on convincing people and setting up the basics have been for nothing. The team hasn’t been maturing; it hasn’t even formed. Team members were living in artificial harmony by avoiding conflict. Now they feel disengaged and demonstrate no commitment. When a team fails to hold one another accountable, they demonstrate the most damaging dysfunction: inattention to results.

Pat is in an awkward situation because, though she firmly believes Scrum is not the reason for these problems, Scrum has exposed the dysfunctions. Everyone else is convinced that pre-Scrum, no dysfunctions existed. Post-Scrum, the team looks like it’s falling apart. How can Pat change this? How can she resurrect the team and prove to senior management that Scrum is worth the effort?

Can Somebody Please Explain!

I am convinced there is no easy answer to these questions; however I also believe that by following a few simple rules a lot can be done to save a dysfunctional team like Pat’s. While many sources suggest that ScrumMasters always should escalate cases like this to management, I tend to disagree. What if middle management doesn’t want to assist? What if they blame Scrum/you for the problem? What if you don’t want to lose the battle?
I should warn you that this is not something that can change overnight. If your team is experiencing these types of dysfunctions, overcoming them will require patience, good coaching, facilitation skills and then more patience. It will probably be many days, if not weeks, until you see some change. It might take as long as six-to-nine months until you start feeling optimistic about your team.

Are you willing to be vulnerable?

It all starts with trust. Let’s start there. Ask yourself these questions:

  • Are you willing to be vulnerable? 
  • Do you act like you are?
  • Are you communicating enough to make the team aware that you are ready to make yourself vulnerable?

Talk to the team as a whole or individually. You can try a group exercise where you ask everyone to share details they otherwise would not want to. Many examples exist, but common starting points include: What is your biggest strength and greatest weakness? What was your biggest challenge in school? You also need to find a way to get the team together outside of normal work environment. This may range from organizing a night out for the whole team or attending an offsite event. Do what is appropriate for your budget. Whatever you choose, try to do the same activity at least once a month.

How will you know if you have succeeded in building trust?

  • You start hearing team members answering honestly, “I don’t know.”
  • Team members happily share information and offer help

Plain Talking

Politics can keep some teams from ever truly forming. I know that politics are influencing my team when people choose their words and actions based on how they want others to react rather than on what they really think. Another sign that teams are politically motivated is when attention is paid to the speaker’s rank rather than dialogue content. Politics kill progress; therefore, you need to stop political behavior immediately.

Is there a lot of whispering in the team? Do team members who express their opinions met with a negative reaction? If so, you probably have some politics interfering with your progress. Challenge each  team member to think and act as if they hold a position two levels higher in the hierarchy. Encourage honest comments regardless of how ruthless they may sound. Print out posters explaining why politics is bad; put them on the walls around your team or, if allowed, around the whole building. Protect and support your people so that they can speak openly with anyone in the company. Encourage healthy debate by asking open questions, such as: What other options do we have? What would happen if we go with this solution?

How will you know if you have succeeded in eliminating politics?

  • The whispering is gone
  • You can join a team discussion and no one changes the topic

What’s that Smell?

Agreement is good but be careful how you reach it. If you often feel that the team agrees too easily, if decisions are taken too quickly and meetings go too quietly, then perhaps not everything is as good as it looks. Such “easy” decisions are bad for the team because team members who feel they have not been heard will not feel fully involved.

The best thing you can do in this case is to be there as facilitator and ask the questions required to spark a healthy debate. Ask about any weakness you see; question solutions; act as the devil’s advocate.  When a debate is going in the wrong direction, try to bring back the business goal and focus the team on the responsibility and effort required to achieve a great solution. Avoid digging into too much detail – this is where you will usually lose most of your time.

How will you know if you have succeeded in eliminating agreements that smell?

  • You hear team members say, "I may not agree with your ideas but I understand them and can support them."

Group or Team?

According to a popular definition, a team is a small group of people with complementary skills and abilities who are committed to a common goal and approach for which they hold each other accountable. Presumably if a group of people doesn’t meet these criteria it remains just a group of people.
Do you often notice team members not particularly interested in team decisions? Have you seen team members only interested in their propositions and not willing to discuss or support others’ solutions? Do you often hear, “This is not my area. You need to speak to X”? If so, you might be dealing with a group as opposed to a team.

A friend was telling me a story about his son. One day, after a football game, his father asked him who won. The boy answered, “I scored two goals!” His father asked again, “OK. Who won the game?” The boys then replied, “Well, the team lost 2-7, but I scored two goals. Isn’t that the important bit?”

Are members of your Scrum team more interested in their own results than in the team’s? This problem could be caused by your organization's implementation of traditional performance review process, or it could be because team members fail to see benefits in achieving a team goal.

To counteract this tendency, set team goals and make sure everyone in the team is motivated to meet these goals. Sprint targets are good goals to meet but are not always enough. Think about other goals your team could reach. Set performance objectives and individual goals that are aligned with those team goals. If this seems difficult, begin by reading about the review process for agile teams. Note that making some of these changes may be an uphill battle; you may have to enlist senior management support to win. Fight anyway. It’s the best way to avoid ambiguous goals and the resulting inattention to results behavior. Team members will still have goals to work towards but now these goals will not get in the way of team’s targets.

How will you know if you have succeeded in creating a team?

  • When the sprint-targets-met rate increases significantly
  • When team members start using “we” more than “I”

Fight the Good Fight

We have looked at a few common scenarios, identified team dysfunctions, and discussed ways to resolve them in a Scrum environment. Naturally, you will need to read a lot more than this one article in order to succeed but I hope I’ve given you some ideas to get you started. Remember that the battle to keep your team functional is one that you will have to keep winning over and over again. In the end, though, it’s worth the fight.

References

The Five Dysfunctions of a Team

Wednesday, January 19, 2011

Scrum Role Playing

By Geoff Watts

Scrum is very explicit in its clarification of roles and responsibilities. Scrum has only three roles; together they cover the responsibilities needed to ensure a successful project. The Product Owner represents the customer and sets the vision, goals and priorities of the project. The PO then works collaboratively with the team to determine the details during each sprint, accepting work as it is completed. The team members are responsible for determining what can be done within a sprint, making a commitment for a sprint’s worth of work and then organizing themselves to deliver the functionality needed. The ScrumMaster guards the team and its process, keeping an eye out for Scrum smells and removing impediments to productivity.

Almost anyone who has been on a Scrum project has noticed the issues that can arise when one Scrum team member wears two hats (for instance, when one person plays both the role of ScrumMaster and the role of developer or when one person plays Product Owner and developer). Doubling up injects a certain amount of implied hierarchy into a self-organizing team and increases project risk by significantly escalating the difficulty of planning and removing some of the checks and balances inherent in a Scrum team. While neither of these dual-hatted roles is impossible to incorporate in a Scrum team, by the same token, neither is ideal.

Another less-than-ideal scenario is having one person play the roles of ScrumMaster and Product Owner. In that case, the same person is responsible for guarding the team and its process as is responsible for the direction and profitability of the product. While this has even more explicit potential for a conflict of interests, the outcome depends on which of those hats is the more dominant. For example, when a ScrumMaster assumes the role of Product Owner, the lack of someone pushing business priorities can result in technology-focused indulgences or a team pace that is too comfortable. In contrast, a Product Owner who assumes the role of ScrumMaster can go too far the other way seeing this as an opportunity to take direct control of their very own development team, foregoing the technological needs of the project and pushing for a very aggressive, and possibly unsustainable, pace. In both cases, being both product owner and ScrumMaster is likely to be a big draw on one person’s time, leading to possible sacrifices in either their stewardship of the team or up-to-date information on the product.

While none of the problems in the above scenarios is insurmountable, arguably the most anxiety-inducing and uncommon dual-role is the combination of ScrumMaster and Product Owner.  Ben Johnson of Man Investments knows about filling this inherently oppositional dual role first hand. He had some very interesting experiences from his time filling both roles on a Scrum project. In his case, the dual role was never intended to be a permanent one, but it did provide him and the team with insights into their responsibilities and processes they might not otherwise have attained.

Working within the Product Management department of Man Investments, the world’s largest hedge fund, Ben’s group’s primary function is to ensure that clients get the correct level of exposure to the underlying investments that their funds promise. In order to do this, Ben’s group undertakes weekly or monthly rebalancing of client funds. Though this rebalancing process involves several systems distributed among Man Investment’s global divisions, one key database system is used to determine the actual transactions required to gain this promised level of exposure. These transactions total billions of dollars each month.
Not only is Ben part of the team responsible for the day-to-day running of this system, he also assumes the role of Product Owner with respect to its ongoing development. As Product Owner, he spends a significant portion of this time collocated with a Scrum team that consists of four full-time developers and two part-time analysts/testers.  The team used to develop using a waterfall approach, which did not fit well with their fast-changing business requirements.  Now, Scrum allows them to wait to capture the more intricate business requirements until the point that development actually starts, making the entire development process less wasteful. A combination of sprint planning sessions and burndown charts has made their work much more visible to the business. This visibility, coupled with the increased throughput of work, has forged bonds with various business stakeholders and has changed the business perception of the development team from “can’t do” to “can do.”

To enhance awareness of the scrum process, the team’s development manager suggested that each team member should take a turn as ScrumMaster, so the team members rotated the ScrumMaster role around the Scrum team. Ben had not been in the Product Owner role for long, and thought taking a turn as ScrumMaster would be a good opportunity to get more involved with the development team, so he included himself in the rotation. If nothing else, he thought, it would force him to be involved at every daily Scrum meeting!

The developers were happy for Ben to take on the role (perhaps because none were too keen on being ScrumMaster themselves!) and Ben feels they made sure he had plenty to do throughout the sprint, as they raised plenty of impediments. At the same time, the developers did express some concerns about the idea of a Product Owner also playing the role of ScrumMaster. They spoke of their worry that the team could be left exposed without anyone neutral guarding the process and that this could lead to the ethos of Scrum dissolving. Ben talked with them about ways to mitigate that likelihood as well as possible warning signs to look out for. They also decided that they would review how it went at the end of the Sprint so that, as a group, they were comfortable with the experiment.

Initially, Ben’s main concern was how to manage the planning meeting. How could he get the best value for the business without pushing the team too much? Would he be able to allow the stakeholders to decide upon the priorities without unwittingly influencing their decisions?  In fact, the planning session went better than he expected. As Product Owner, Ben introduced the high value user stories as he normally would, while, as ScrumMaster, he facilitated the meeting itself. Ben invited a second attendee to the planning session who could represent the business in another Product-Owner-type role to ensure there was a business interest looking at the overall picture in the event that his role as ScrumMaster prevented him from seeing something. In addition, the business was well represented by all of the stakeholders, so it wasn’t necessary for Ben to represent those stakeholders himself, allowing him to function more as a ScrumMaster.
What Ben hadn’t envisioned was the amount of re-planning necessary during the sprint. As Product Owner (and with the stakeholder’s trust), Ben is typically able to make decisions on what to add/remove from the sprint but, since this time he was acting as ScrumMaster as well, Ben didn’t feel comfortable making these decisions himself. As a result, the team had more than one formal re-planning session, which increased the burden on the many business stakeholders.
Time was an area generally that Ben struggled with in his dual role. Being Product Owner is not 100 percent of his remit and, as such, there is a certain amount of juggling he must do, even in a “normal sprint.” With the additional admin work (such as updating the burndown chart and chasing up impediments) that the ScrumMaster role required, this juggling became more difficult, and had a detrimental effect on Ben’s day job. For example, he fell behind in responding to queries and, as such, became somewhat of a bottleneck in another process.

This particular sprint threw up an unusually large number of impediments, many of which revolved around the setup of new PCs, and these were not dealt with as efficiently as Ben felt they could have been. This was partly because Ben was stretched too thin and partly because he didn’t have the same level of contacts in the technology department as the development team did (as these impediments were mainly IT-related).

There were times during the sprint when the team was able to take on extra user stories. With a series of future sprints vaguely planned, Ben would have normally made the call himself as to which stories to add. However, he was conscious of the temptation to cherry-pick his personal favorites and, as such, called more than one formal re-planning session with the business stakeholders. While this ensured the correct result, it was at the expense of considerable business time.

From this experience, Ben learned that formal re-planning sessions should not be organized unless absolutely essential. If you have planned for future sprints, the Product Owner can usually identify the best user stories to bring into the current sprint. At the same time, Ben also became very aware of the importance of having a release plan covering future sprints, both to give the an indication of the future direction and also to give the Product Owner something concrete to work with when an opportunities arises for the team to bring more user stories into a Sprint.

Ben believes his experience as a ScrumMaster gave him a better feel for what is required of a ScrumMaster and how time consuming that role can be. For anyone playing both roles in a Scrum team, Ben recommends that they build out a release plan of future Sprints and time box rigorously. Having people around that can act as both technological and business consciences can be very useful, too, in order to avoid becoming one-sided.

Being successful in this dual role does require a Product Owner who is mindful of the Scrum process at all times. One of the developers, commenting on the success of the dual role, said, “I think it depends on the Product Owner. If they were hard-nosed and didn't care about process, then it would have been a very different matter.”

While it is definitely a less-than-ideal situation, playing both roles is possible and even has some advantages. It was certainly a learning experience for both Ben and the team. Although there is still a doubt as to whether the inevitable conflict of interests could continue to be avoided long term, all were glad that Ben took his turn in the rotation. In the end, both the team members and Ben felt that he gained an appreciation of their frustrations and challenges that he otherwise may have been blind to in the sole role of Product Owner.

Monday, January 17, 2011

How Do We Know When We Are Done?

By Mitch Lacey

"Are you done yet?"

The answer to this question may sink your career, your team and your project. If you respond with a "yes," you may be forced to take on additional work. If you say "no," you may be branded as someone who can't get things done.

This innocent question is asked countless times on almost every software project. The way we answer, however, is anything but innocuous. If team members’ answers vary, it can degrade stakeholders’ trust in the project team.

Establishing an upfront, common understanding of "done" can save teams and businesses countless hours of refactoring, process-thrash, unclear communication, and hidden work.

In this article, I describe a done list, how it adds value, and the value it communicates to stakeholders. Then, I present an exercise that will help you build your own done list and manage it over time.

The Story

I once was hosting a story workshop, the precursor to a kickoff meeting for a large, back-office infrastructure project. There were roughly twenty stakeholders in the room: systems engineers, general managers, developers, marketing people, product managers and salespeople. I knew from the beginning that such a diverse group would be a challenge and that I would need to focus the meeting in order to filter out the noise and get the real requirements needed to start the work.

Prior to the meeting, the team and I had met to create our done list. Though I had the list with me, I chose not to share it at the beginning of the meeting. I did this for two reasons: I wanted to ensure people felt open and unconstrained by a predetermined list and I did not want them to get the impression that the done list was up for negotiation.

Two hours into the meeting, we had identified approximately 200 stories. This was a huge success; however, people were starting to get hung up on the order in which the stories would be accomplished. Naturally, the systems engineer wanted to see monitoring, security, and all hardware and network infrastructure built out. The marketing people just wanted a release date. The developers and testers wanted to drill into the weeds to figure out what each story meant.
It was at this point that I revealed the done list as identified by the team. The done list covered what it meant to be done with a story, a sprint, a release to our integration environments and, last but not least, our release to production environment.

The list I presented to our stakeholders in the meeting is shown in Figure 1.

Scrum Team Done List

Figure 1: Sample Done List

Our stakeholders were shocked. They remarked that they had never seen such detail and commitment to a quality release before. After seeing the list, the systems engineers were comfortable with the level of work we were doing to address their needs on each story, sprint and release. The security team was equally pleased to see the level of architecture, documentation and threat modeling that the team was doing.

Equally (if not more) satisfied were the sales, marketing, and general management stakeholders.

The list helped all the stakeholders visualize the team’s commitment to do the best possible work to meet the needs of the business and its customers. To the team, the done list was a way of life—not a checklist to follow, but a commitment to excellence.

The list gives us a way to communicate. When everyone can see what it means for this team to be done with its work, the team no longer hears, “Are you done with this or are you done with that?” Instead they are asked, “Is this story complete? Is the iteration complete? Have you released to your environments?” And everyone understands what an affirmative answer really means.

Exercise!

You will need the following items to perform this exercise:

  1. Your team
  2. Many pads of Post-It™ notes in multiple colors (stickies)
  3. Pens (I find that sharp, permanent markers work best)
  4. A room that the team can utilize for two to four hours
  5. An open mind
  6. No interruptions

The Done List Exercise is constructed of these components:

  1. Brainstorming Session
  2. Categorization Session
  3. Sorting Session
  4. Done List Creation and Publishing

This exercise will help you create your initial done list. Notice I said “initial.” A done list is not created once, buried in a drawer, and never seen again. Teams should schedule time during retrospectives to periodically review their done list and determine whether there are opportunities for improvement or modification. Feel free to revise the list to meet the needs of the team and its stakeholders, but be careful. Too many revisions, too frequently, may create doubt about the validity of the done list in the eyes of the stakeholders. Invest the time to create a solid baseline and modify the list based on the experience and findings of the team.

Remember that levels of done come in various forms, the most common being technical and functional. The story and samples presented here illustrate a level of technical doneness. However, functional doneness is also key and can include items such as:

  • Automated acceptance tests passing (story level)
  • Product Backlog estimated and prioritized (sprint level, product owner deliverable)
  • Team retrospective complete (sprint level)

This exercise can be downloaded for your reference.

Introduction

People often ask me who from the team should participate in this exercise. This question always catches me off guard.

We have been conditioned to work in our functional silos for so long that people often look perplexed when I answer this question. I believe that everyone on the team, no matter what their expertise or background is, can add value and should be involved.

If the team’s project is a backend database system or a three-tier web application, there will be people on the team that have less experience and knowledge of the technology than others. That is just a fact. Keeping team members out of this exercise, though, only deprives the team of the valuable contributions of other team members. It also keeps them from having a valuable team building exercise.

I recommend having the entire team do this exercise, regardless of skills, background or role on the team.

1. Brainstorming Session

Alex F. Osborn is widely known as the father of brainstorming. In his books titled Your Creative Power and Applied Imagination, Osborn outlines the brainstorming technique, a system that uses the brain to "storm" creative solutions to a problem. This creative approach is designed to generate a free flow of ideas. In the brainstorming session there are no right or wrong answers. There is no criticism. There is just the free flow of ideas. The rules of brainstorming, outlined by Osborn, are simple. They are:

  • No criticism of ideas
  • Go for large quantities of ideas
  • Build on each other's ideas
  • Encourage wild and exaggerated ideas

At the beginning of the brainstorming session, set the proper tone. The reason the team is together in the room is to identify everything that it needs to do to ship software, the truest measure of project progress I have encountered to date.

It is important to set the direction of the brainstorming session in the beginning. Start by writing the question the team will answer with its done list on a whiteboard. What question is that? It depends. The most common question is this:

“What do we need to do, as a team, to ship software to our customers/stakeholders?”

Your question may vary, depending on your own team’s unique circumstances; however, the purpose is the same. Make sure the question is on a whiteboard, or any other viewable place in the room, before you continue.

Hand everyone a pen and a sticky pad. I have found that individuals like having different colors; this will ultimately depend on your team members’ preferences.
You are now ready to begin brainstorming. Kick it off by repeating the question you are answering (see above for an example). Have each team member write an answer on a sticky, call out the answer, put that sticky in a pile in the middle of the table, and repeat. Team members can write only one answer per sticky and must call out after each answer is written. As team members start to share their answers, inevitably some will say, “I’ve already written that.” Do not worry about creating duplicate items at the moment. This will be addressed later.

Why the call out? I have found that the call out puts the storm in brainstorm. I have personally identified multiple additional items when fellow team members have called out a done list item. I have also witnessed team members building on each other’s ideas when coaching teams through this exercise. I have run this exercise without the team members calling out what they wrote on the stickies, but it resulted in a stale, unproductive meeting. Calling out will feel weird and uncomfortable for most; however, the feeling will subside very quickly once the team becomes engaged and the meeting begins to flow.

Run the brainstorming part of the session until there are “enough” sticky notes to get started with the next phase. It is generally easy to identify when people are done because you will see the flow of sticky notes begin to dwindle. People will begin looking around the room and at each other, searching for something new.

2. Categorization Session

There should now be a large stack of sticky notes on the table, waiting to be categorized.

Start by querying the team members on how they each think the sticky notes should be categorized.

The most common responses I see look like this:

  • Development
  • Test
  • Project Management
  • Other

The responses above are decomposed by functional work area.

This response makes sense. After all, we have been conditioned to work in functional silos, not in cross-functional multi-discipline teams. Unfortunately, categorizing this way reinforces our functional roles within a team and does not promote cross-functional interaction. It also tends to create a mini-waterfall for each iteration, missing the point of the done list principles and the “potentially shippable” aspect of Scrum. Additionally, customers and stakeholders generally do not care what it means to be done with development or test; they care what it means to be done with a release to production or a release to manufacturing.
If you get those responses, challenge the team to focus on customer value. Delivering stories at the end of an iteration and releasing to an integration environment where customers can use and interact with the software provides value. Even more value is provided if a system is released to a production environment and officially done.

After introducing this line of thinking, the responses I typically see change dramatically:

  • Done with a story
  • Done with an iteration
  • Release to integration
  • Release to production

Once the categories are identified, clear, and understood by the team, create areas on the walls in the room to post sticky notes under each category.
This is a team exercise. Each person will grab some sticky notes (preferably others’ notes) from the table and begin placing each note under the appropriate section. Team members should not spend a great deal of time wrestling with whether categories are right or wrong—at this point, they should just get the notes on the wall. Sorting the notes should take between ten and twenty minutes, depending on the quantity of sticky notes generated.
Once all sticky notes are on the wall, have everyone take a few steps back and look at the wall.

It’s going to look like a lot of stuff.

3. Sorting and Consolidation Session

Once everything is on the wall and categorized, it’s time to begin consolidation, using an approach similar to that advocated by Mike Cohn in his User Stories Applied book.

This is a team exercise. Each person will review the sticky notes on the wall and look for duplicate items. Types of duplicates include exact matches, similar matches and “we don’t know what the heck these are.”

For exact matches, simply take the two matching sticky notes and stick them to each other so that the top one fully covers the one underneath (see Figure 2). Do this only when it is clear that the items are exact matches and that the decision to marry them will require little discussion later in the session.

Scrum Tool

Figure 2: Exact Matches

For similar matches, have the top sticky note offset the one underneath. This helps everyone to easily identify items that are similar, but not exact, matches. These items will require further team discussion to determine a clear meaning of the done list candidate item.

Scrum Tool Features

Figure 3: Similar Matches

For matches that make no sense at all, create a new category off to the side and name it “other” or something similar. The team will revisit these items last.

Scrum Software Tool

Figure 4: Cards That Make No Sense

Again, have the team step back and look at the wall. They will probably still be overwhelmed, but they’ll be starting to feel that things are a bit more manageable.
Once all notes are consolidated, the team is ready to discuss what each sticky means.

The process I use for this is relatively simple. As facilitator, start with a set of stickies (I like to start with the exact matches, as they are the easiest), take them off the wall, read them to the team and ask, “What does this mean?” Once the team answers, move on. It is important to time box this activity. If the team cannot come to consensus, or even agreement, shelve the item for later or take a mental break by going for a walk.
If there are team members that do not answer, probe them directly and ask for confirmation that he or she understands what a specific sticky set means before moving on.

After the exact matches are finished, move on to the similar match sets. These are managed slightly differently. Take the set off the wall, read them to the team and ask, “What does this mean?” When the team answers, pick the card from the set that most closely matches the answer they gave or create a new sticky to reflect what was discussed.

After a set of similar items has been discussed, the team should be left with only one card that represents what will be committed to and communicated by the team. Throw out duplicates or consolidate them like their “exact match” counterparts. Throughout the process, new stickies may be created and old ones discarded. This is not only expected, it’s key.

Lastly, move on to the stickies that are anomalies or make no sense. Use the same process of pulling a sticky off the wall, reading it and asking what it means. Follow this by asking, “Does the team need this item on its done list to be done?” If the team responds with a resounding “yes,” move the sticky to its proper category. If the team is so-so about it, or just responds with a plain no, facilitate a discussion that results in a resounding yes or the item being tossed.
Once the team has reviewed all sticky notes, understands what each one means and agrees that all stickies are in the right category, this portion of the exercise is complete.

Question: What percentage of the list your team created is concerned with about writing code? In my experience, writing code1 encompasses about 5 percent of the total items listed to be done.

4. Done List Creation

Teams are generally tired at this point. The entire exercise is a draining experience but very rewarding. Creating and publishing the done list is the easiest part.
Take a digital picture of what is on the wall and put it in electronic format. Publish the list on the internal team website and create a poster that can be hung for all to see. It serves as a reminder of what it means for the team to be done and acts as a powerful communication tool. When stakeholders ask, “Are you done yet,” the team can point to the done list and answer, “We are done with our stories and working on our release” — and the person asking will understand where the team is at.

Keys to Success

Creating and publishing a done list does three things.

First, it helps build a bond between team members. It gives them the feeling that they are “all in this together” and that it is more important to deliver on their commitments than to focus on specific individual tasks.

Second, it provides clear communication to stakeholders, and by implication, drives down the risk of technical (or other) debt being deferred to later in the cycle. If a stakeholder asks the team if the software works, and the response by the team is “sure it works but we don’t have an installer,” the team has racked up technical debt because the component is not truly done.

Through the done list, and through the communication of that list, stakeholders clearly understand that if the team says they will be releasing to production, they will have met a series of requirements that are needed for such a release.

No more will done simply mean coded. On the contrary, done will mean exactly what is published in the done list. Stakeholders will come to expect this level of quality and commitment.

Third, it keeps the team on track and focused. When planning an iteration, the team has a reference point as to what it means to be done. The guesswork is removed, enabling the team to focus on delivery instead of speculation on what could be “if only this or that happened.” The commitment is made, published and adhered to. Remember, a done list is not static. It should be revised as needed (but not too often) and re-published. When used correctly, it provides the team with a common vision on how to achieve the iteration, release and project goals.

End Notes

1. I mean the actual code itself. I do not consider unit tests, acceptance tests or any other code written to support the actual mainline production code that delivers customer value. 

Saturday, January 15, 2011

What is Definition of Done (DoD)?

By Dhaval Panchal

Definition of done is crucial to a highly functioning Scrum team. The following are characteristics that you should look for in your team’s definition of done. Verifying that your team’s DoD meets these criteria will ensure that you are delivering features that are truly done, not only in terms of functionality but in terms of quality as well.

DoD is a checklist of valuable activities required to produce software.

Definition of Done is a simple list of activities (writing code, coding comments, unit testing, integration testing, release notes, design documents, etc.) that add verifiable/demonstrable value to the product. Focusing on value-added steps allows the team to focus on what must be completed in order to build software while eliminating wasteful activities that only complicate software development efforts.

DoD is the primary reporting mechanism for team members.

Reporting in its simplest form is the ability to say, “This feature is done.” After all, a feature or Product Backlog Item is either done or it is not-done. DoD is a simple artifact that adds clarity to the “Feature’s done” statement.  Using DoD as a reference for this conversation a team member can effectively update other team members and the product owner.

DoD is informed by reality.

Scrum asks that teams deliver “potentially shippable software” at the end of every sprint. To me, potentially shippable software is a feature(s) that can be released, with limited notice, to end users at the product owner’s discretion. Products that can be released to end users with two days can be reasonably said to be in potentially shippable state. Ideally, potentially shippable is equivalent to the Definition of Done.

In reality, many teams are still working towards a potentially shippable state.  Such teams may have a different DoD at various levels:

  • Definition of Done for a feature (story or product backlog item)
  • Definition of Done for a sprint (collection of features developed within a sprint)
  • Definition of Done for a release (potentially shippable state)

There are various factors which influence whether a given activity belongs in the DoD for a feature, a sprint or a release.  Ultimately, the decision rests on the answer to the following three questions:

  1. Can we do this activity for each feature? If not, then
  2. Can we do this activity for each sprint? If not, then
  3. We have to do this activity for our release!

Chris Sterling recommends that for activities that cannot be included for a sprint/feature, teams should, “Discuss all of the obstacles which stop them from delivering this each iteration/sprint”

Common root causes for impediments include:

  • Team does not have the skillset to incorporate activities into the definition of done for a sprint or for a feature.
  • Team does not have the right set of tools. (Example: continuous integration environment, automated build, servers etc.)
  • Team members are executing their sprint in mini-waterfalls.
    * Aha! Here’s an opportunity to be more cross-functional and share responsibilities across functional silos.

DoD is not static.

The DoD changes over time. Organizational support and the team’s ability to remove impediments may enable the inclusion of additional activities into the DoD for features or sprints.

DoD is an auditable checklist.

Features/stories are broken down into tasks both during sprint planning and also within a sprint. The DoD is used to validate whether all major tasks are accounted for (hours remaining). Also, after a feature or sprint is done, DoD is used as a checklist to verify whether all necessary value-added activities were completed.

It is important to note that the generic nature of the definition of done has some limitations. Not all value-added activities will be applicable to each feature since the definition of done is intended to be a comprehensive checklist. The team has to consciously decide the applicability of value-added activities on a feature-by-feature basis. For example, following user experience guidelines for a feature that provides integration point (eg: web service) to another system is not applicable to that particular feature; however, for other features within the system that dointerface with a human being, those user experience guidelines must be followed.

Summary

The definition of done is orthogonal to user acceptance criteria (functional acceptance) for a feature. It is a comprehensive checklist of necessary, value-added activities that assert the quality of a feature and not the functionality of that feature. Definition of done is informed by reality where it captures activities that can be realistically committed by the team to be completed at each level (feature, sprint, release).

Thursday, January 13, 2011

Definition of Done: A Reference

By Mayank Gupta

An Agile project has ceremonies (sprint planning, release planning, sprint retrospective, etc.) and metrics (sprint & release burndown charts) designed to ensure that the project is in a healthy state. Unfortunately, many Agile projects fail even after following all the ceremonies religiously. Why? One of the primary reasons is that they are not able to deliver value to the customer at the end of each sprint. They deliver a product at the end of each sprint, but not a product that is potentially shippable. Here lies the root cause of failure. The software these projects deliver at the end of each sprint is half tested, half documented, half refactored and only half ready for release.

An explicit and concrete definition of done may seem small but it can be the most critical checkpoint of an agile project. Without a consistent meaning of done, velocity cannot be estimated. Conversely, a common definition of done ensures that the increment produced at the end of sprint is of high quality, with minimal defects.  The definition of done is the soul of the entire Scrum process.

Before we explore a definition for done, it is important to define another Scrum term: potentially shippable product.

Continue reading this article

Tuesday, January 11, 2011

The Impact of Scrum Mechanisms on People and Task Orientation

By Rahul Sawhney

Motivated teams develop a reputation of achieving goals and surpassing customer expectations. Sustaining this level of teamwork requires a fine balance between people orientation and task orientation. Scrum is a great way to achieve that balance. Let us see how.

Two sides, One Objective

In team situations, there is often a conflict between people orientation and task orientation. If too much attention is given to either aspect, the other could be neglected, impacting the team objective. Scrum mechanisms can help resolve this conflict when implemented in the right spirit and with correct understanding; however, if they are implemented with incorrect or incomplete understanding, they can be counter-productive.

Scrum Software Tool

In the following sections, we will discuss several scrum mechanisms as well as the implications for correct and incorrect implementation.

Implementing Scrum Mechanisms

Product backlog prioritization

If implemented correctly: Product backlog prioritization gives the business the chance to specify how the team can deliver value to the customer. The team concentrates on the most important activities, as defined by the business, and comes out of the planning session with the best possible scope that it can fit into the iteration. If product backlog planning is implemented correctly, team members know that the work they are doing is important to customers and therefore crucial for the business. This motivates them to deliver faster and with better quality.

If not implemented correctly: A clear distinction is necessary between stories that the team needs to deliver immediately and stories that can follow later. If the product owner marks everything in the backlog as high priority (perhaps as motivation to encourage teams to fit more work into the sprints), the teams may come out of the planning meeting with the wrong features in their iteration. Misallocated stories results in a product with features not immediately needed by the end user, which only hurts the business.

Sprint Planning Meeting

If implemented correctly: Sprint Planning meetings give the team an opportunity to display commitment and risk-taking capability. A team whose members jointly give the estimates and agree on them, is more likely to achieve the goal than a team whose members work on the basis of estimations done by someone else. With Scrum, it is the combined responsibility of all team members to meet the commitment. Combined responsibility translates to team members working together during the sprint and supporting each other to meet the sprint goal set at the beginning of the sprint. It is up to the team members, the ScrumMaster and the Product Owner to ensure that the team takes up a challenging goal in the sprint planning meeting. It is important that all team members participate during the sprint planning meeting so that everyone agrees that achieving the goal together is possible. When the team achieves a challenging goal, not only is the task orientation aspect of the project satisfied, but team members get a great sense of accomplishment as well.

If not implemented correctly: If a team sets itself non-challenging goals in the sprint planning meeting (translating into less task orientation), it may feel good in the initial sprints when the sprint goals are met but soon will get bored, as there is no thrill in achieving their goals. Eventually, management or the business will take note of the team’s under achievements, resulting in a bad situation. On the other hand, if excessively difficult goals are habitually pushed down the throat of teams in every sprint, there also will be negative effects on the team, leading to situations like burn-out, non-accomplishment of iteration goals, demoralization, key people leaving the team, and so on. Incorrectly deploying this practice can be a team’s downfall. Teams need to realize this and work towards finding the right balance in subsequent sprints even if they started on the wrong foot.

Daily Scrum Meeting

If implemented correctly: Daily Scrum meetings make visible to the entire team those issues which, without daily scrums, would be partly or totally invisible. Not only do daily scrums help uncover dependencies, impediments, and the real-time status of tasks, they also indirectly show patterns that can help team members realize how they are performing as a group. Individual traits such as performance (good or bad), need for training, ramp-up, and helpfulness are showcased during these daily Scrum meetings. This often creates peer pressure in lagging team members, making them perform better than before, and leads to better team performance from a task-orientation perspective.

From a people-orientation perspective, daily Scrums are a time to address the genuine needs and constraints of team members and for team members to support each other in times of need. Regular contact also brings positive feedback, such as appreciation for things one team member did to support another that might otherwise go unnoticed. This makes even small contributions to the project visible to everyone. As a result, people feel cared for, which helps create an environment that motivates them. Many small contributions add up to a big positive impact on the project.

If not implemented correctly: Task-oriented managers may consider the daily scrum meeting to be a boon. The daily scrum gives these managers real-time information about how team members (read individuals on their team) are performing; it could also give them an opportunity to force their viewpoints upon team members. If the task-oriented manager continues to use the daily scrum as a platform for gathering progress and pushing his viewpoints, the team will be demoralized. Team members may eventually stop attending daily scrums or begin withholding information, either of which would be extremely harmful to team performance.

Retrospective Meeting

If implemented correctly: Scrum teams use the sprint retrospective meetings as an opportunity to fine-tune and make changes to their performance based on experience gained from each sprint. This meeting ensures that team sustains continuous improvements and gives team members a forum to share concerns. It is important that the meeting be moderated well so that the viewpoints of all team members are brought to the table and discussed. From a task-orientation perspective, by looking at both the strengths and weaknesses of the processes that the team followed, this meeting challenges the team to perform at a higher level and achieve better results in each new sprint. From a people-orientation perspective, this meeting boosts team confidence and participation. This happens through sharing and expressing appreciation for the good incidents and help offered / received during the previous sprint. If this meeting is done well, the team takes ownership of action items and implements them in subsequent sprints. The result is an engaged team, in which continuous improvements are sustained.

If not implemented correctly:  If the concept of inspection and adaptation is not well understood by the team, retrospective meetings could turn into a finger-pointing, blame-game session. If discussions in retrospective meetings are used for political gains by some team members, open participation could be hampered and decisions taken in the meeting could be reluctantly accepted. Excessive focus on improvements or on strengths is harmful. While the first could lead to decreased team confidence, the latter could lead to an unnatural stiffness and acceptance of way of working, thereby indirectly discouraging the team from looking at new/better ways of doing things. If retrospective meetings do not have a problem solving focus, they will be perceived as a waste of time, and teams will quickly become disillusioned with the process. That would be unfortunate.

Sprint Review Meeting

If implemented correctly: Sprint reviews give the team an outlet for demonstrating the valuable additions they have made to business owners and other stakeholders. Sprint reviews also provide the team with valuable feedback about the functionality they have delivered. It is important that the feedback be given and taken in the context of functionalities delivered in the current sprint. Positive feedback keeps teams motivated while constructive criticism helps team create better output in subsequent sprints.

If not implemented correctly: As with any feedback, giving feedback out-of-context can be very unhelpful in team situations. For instance, if feedback is generalized, it could either create an impression of excessive under-achievement or unreal over-achievement by the team, which would lead to the degradation of team performance in subsequent sprints. Highly task-oriented customers and management can sometimes be too critical of the team’s achievements. That can be disastrous.

Conclusion

Scrum emphasizes delivering value early and continuously so that customers get the highest return on their investment. Correctly implemented, Scrum mechanisms enhance and sustain team spirit. To derive the most benefit out of these mechanisms, managers, Scrum Masters, Product Owners, and teams need to understand the intent of and need for these mechanisms very clearly so that they can implement them correctly.

Monday, January 10, 2011

Would You Like to Get Benefits from a Software Testing Profession?

By Janet Fleming

This is a good question....initially you have to find out if you have a certain type of personality to perform software testing. You should be organized, logical and thorough. You'll be writing test cases depending on business and functional requirements - or in other words you should do.

Then you've to implement those tests - often repeatedly. Your main purpose is always to ensure that no software goes out to customer without all the bugs found. It's rarely achievable, but should be your main goal. I always love to believe that your 2nd goal must be to have every developer hate you because you keep finding bugs within their code :)

The answer if software testing is a great career option is dependent upon who's asking the question. I'll answer it as if my audience is surely an engineer.

I'm flip, but sincere - my working experience has proven to me that the principle of software development never happens in real life.

Theoretically, software testing is:

  • Validating and recording that software performs the functions it's designed to.
  • Making sure and recording it doesn't do anything whatsoever it is not designed to

This presupposes that you have been told how it's supposed and not supposed to do. The folks you're working for don't always make it happen - they could not necessarily trust you not to run away with their secrets.

Because software programs are a business (except when you are doing work for the military) business rules apply a lot more strongly than engineering principles. Software testing is expensive, and so the decisions about objectives and how much to do can be extremely based on ROI considerations.

Within the end-user relationship, the user's perception is just not necessarily directly related to the physical world, and it's also the user's perception of whether your system works that truly rules within the minds of management, whose job is purely to ensure no one is complaining regarding the software.

Therefore, the truly practical explanation of software testing may be summarized as 3 goals:

1° Verify the consumers that use software believes it's doing whatever they want it to complete

2° Verify that this software doesn't do anything immediately detectable that is not desirable for the user.

3° Verify that any undesirable activity has a good enough period that the software look to execute effectively long enough for you to make it to another round of VC financial commitment or sell the business :)

And you? Do you consider Software Testing could be the right career path?

About the writer: Janet Fleming is writing for the easy software testing course blog, her personal and non-commercial in nature hobby website to offer free advice for software testing rookies/pros to enable them to get a new work.