Agile: Cheating at Work

I just finished reading an excellent article about a UCLA prof who, for his game theory class, allowed the students to cheat

I strongly recommend reading this because this points to one of the big cultural barriers to using Agile methods effectively: we are focused on individual performance instead of the outcomes of a group (team) of people!

Agile Advice Book

Hi Everyone!  I’m writing a compilation book of the best articles of Agile Advice (as well as some that may not have been so popular, but which I think are important).  I was wondering what you all think are the best articles from our archives so that I can be sure to include them!  The best way to vote, since there are soooo many articles about Agile, Scrum, OpenAgile, Management, Org Change etc. etc. is to simply write a comment on the articles you think are the best and worth including in a book!  You can comment on any of the articles: feel free to brows through the archives, go by subject, do searches, etc.  As well, if you have any suggestions for specific blog posts that you always wish I had written, please comment in the section below.  I will be including three brand new articles in the book that won’t be published here as stand-alone articles.  If there are enough interesting suggestions for articles in the comments here, I will also choose up to three ideas to write about for special inclusion in the book and if you made the suggestion, I will including a credit to you for the question (if you want me to, otherwise you are free to remain anonymous).  I’m hoping to get the first draft of the book out by the end of January since I’ve already put a lot of work into it, and that draft will be available for free here online for a limited time.  The final draft will be self-published and I will provide links here to those who want to purchase it.

Thanks for your loyal readership and thanks in advance for your votes and suggestions!

- Mishkin.

Berteig Consulting is Title Sponsor for Agile Tour Toronto 2012

Agile Tour Toronto is a yearly conference for Agilists.  This year, it is being held on November 26th.  Berteig Consulting is the Title sponsor for the event!  It’s a great event with lots of great people including some of the most respected local Agile talent, all in one spot.  I encourage you to register quickly once registration opens.

The Planning Game – An Estimation Method for Agile Teams

Purpose: estimate the effort for User Stories (Product Backlog Items, Value Drivers)

Prerequisites: all items have a value estimate, each item is written on a separate note card, full team membership is known and available for planning, each team member has a set of planning game cards

Process:

  1. The team goes through all the items and chooses the one which has the lowest effort. Write the number “2″ on this card (usually in the bottom right corner).
  2. The team looks at the item with the highest value.
  3. Each team member thinks about how much effort the team will expend to fully complete all the work for the item. Comparing this work to the work effort for the smallest item, each team member selects a card that represents this relative effort. For example, if you think that it requires ten times the effort, you would select the “20″ card. It is not permissible to select two cards.
  4. Each team member places their selected card, face down, on the table. Once all team members have done this, turn the cards over.
  5. If all team members show the same value, then write the value on the item and go back to step three for the next item. (Or if there are no more items, then the process is complete.)
  6. The person with the highest and the lowest value cards both briefly explain why they voted the way they did. If there is a Product Owner present, this person can add any clarifications about the item.
  7. For any given item, if a person is highest or lowest more than once, then each explanation must include new information or reasoning.
  8. Once explanations are complete, the team members collect their cards and go back to step three.

Notes:
- it is extremely important that the voting for an item continues until all team members unanimously vote the same way (this way team members and outside stakeholders cannot blame any individual for “wrong” estimates)
- in Scrum, it is normal for the Product Owner to be present during this process, but not to participate in the voting
- in OpenAgile, it is acceptable for people serving as Growth Facilitators for a team to participate in the voting
- voting should not include extensive discussion
- if more than one person has the lowest or highest vote, usually just one person shares their reason in order to help the process move quickly
- the first few items will often take 10 or 15 rounds of voting before the team arrives at a unanimous vote
- later on, items may take just one or two rounds of voting to arrive at a unanimous decision
- some teams, where trust levels are high, will discard with the use of physical cards and just briefly discuss votes

The planning game is used at the start of a project with the full list of user stories. In this case, it is reasonable to expect the team to average two minutes per user story, and an appropriate amount of time needs to be set aside to accommodate going through the whole list.

The Planning Game is also used any time that there is a change in the list of user stories: re-ordering, adding or removing user stories, or changes to a single user story. When such a change happens, the team can re-estimate any user story in the whole list. When starting a Cycle or Sprint or Iteration, all the user stories in the list should have up-to-date estimates so that estimation work is avoided in the Cycle planning meeting.

Finally, the team can decide to re-estimate any user stories at any time for any reason. However, it is important for team members to remember that estimation is non-value-added work and the time spent on it should be minimized.

The Skills Matrix and Performance Evaluation on Agile Teams

For a few years now I have been working with managers and executives to help them do Agile-compatible performance evaluations of their staff.  The method that has been most successful is based on a tool that comes from the book Toyota Talent called the “Skills Matrix”.  The basic approach follows these steps:

  1. Baseline the skills within a team for each team member.
  2. Set development goals and action items.
  3. Regularly review performance in relation to the development goals.

Of course, the details matter.  The OpenAgile Center for Learning has published a brief overview of how to use the Skills Matrix and a convenient A0-size pdf that can be used as a template for a team’s Skills Matrix.  I highly recommend using these to get started.  If you are a manager, ask your ScrumMaster or Process Facilitator to arrange and facilitate a team workshop to do the initial population of the Skills Matrix, rather than doing it yourself.  Once that is done you have a baseline and you should take regular digital photos of the team’s Skills Matrix for record-keeping and as a backup in case of disputes.  You should also let the team know that you will be basing performance reviews on how they improve their skills.

The development goals that team members set then should be made such that every team member understands that they have a responsibility to diversify their own skill set and assist other team members in doing this.  As a manager, you should review each team members’ goals for development and provide mentoring support when needed.  At the end of a fixed period of time (quarterly is a reasonable period), you will review each team member’s development relative to the baseline and the goals set.  Of course, normal guidance around performance (or lack thereof) can be given at these regular reviews.

I strongly recommend reading “Drive” by Daniel Pink as an important adjunct to understanding how to do performance reviews for individuals in an Agile environment.  In particular, individual performance reviews should not be tied to bonuses.  If bonuses are used at all, they should be measured and delivered purely at the team level or organization level without measuring individual contribution.

Using planning poker cards to estimate larger amounts of work (projects)

You have been fighting for the right for your SCRUM or OpenAgile team to do the right thing and allow the TEAM to estimate the work for a project instead of having a PM, senior manager or Committee just make something up for team.  Congratulations…

Then you realize.. Oh, Oh.. Now what ?  How am I going to pull this off ?   You will find all kinds of interesting material on the net with complex formulas and calculations.  There are some well written and recognized books about this topic that can help.  *Agile Estimating and Planning by Mike Cohn is a great place to start.

What is important is that the TEAM should estimate the work required to complete a Sprint (or a Project).  The people doing the work, really know best how long their work will take.

Please remember though, estimation is just that, and should not be cast in stone.  The reality is that at this early stage (or even 1/2 way through a project), there are still many unknowns.

I have used the following approach with as many as approximately 20 team members at the same time.  Maybe it will work for you.

The following procedure assumes you already have a team or teams that are familiar with their velocity and capabilities.

Here’s how it works….

At this early stage, their may be some stories, but likely everything is in Epic or Theme sizes.  Perfect.  You don’t need too much detail.

The Product Owner can give a brief overview of the vision.  You might find it useful to have stakeholders there to listen in and answer questions at this early stage.  This will help them to have an idea already of what obstacles they will need to be removing for the team in the future :->

Then, let the team use what they already know….  Planning Poker Cards.  For an overview of the process, here’s a link for a documented procedure from Mountain Goat Software.

Just change the scale of the cards to be 10 times more.  A 2 would become 20, a 20 would become 200.  The team members already know this system.  It will be easy for them to learn.

So, if your usual numbers are  1,2,3,5,8,13,20,40,100, use the same cards for team voting.  The values would just be 10,20,30,50,80,130,200,400,1000..

You will quickly get an overall estimate for each Epic with numbers from the team.  Just add up the numbers to get an overall number and divide it by the overall velocity and you’ll have some idea of how many sprints of work are left.

More importantly, you will also have started the process of communication among the team members and the Product Owner.  The Product Owner will already know which parts of the project may present challenges to assist them in their overall product planning.

Planning Poker Card Values Image

Card Values Transformed

As estimates really are just that, don’t get excited if the numbers aren’t what you deem to be perfect.  You will have an idea based on existing velocity of the “broad estimate” for the project.

Nothing fancy, works quickly, and gets everybody thinking about the big picture.

NO, it is NOT perfect.  That’s not the idea.  Spending too much time on this won’t necessarily give you more accurate results.  I find that letting everyone know it’s not perfect, removes a lot of pressure and keeps things moving forward.  People will STILL do what’s right and give their opinions on issues that really matter to them. Don’t worry about that ! :->

The hardest part is to keep things moving forward, especially with a larger group.  Be prepared for this or this will take far too long.

You may find that the numbers are Not what you expected and may be higher than you had hoped for.  Think about it this way.  If today, the team is telling you based on what they CURRENTLY know that the project will take 6 months to complete, what is the point of saying, NO, the exact amount of scope will get done in 3 months? As agilists, we know better.  Besides, at this point in time, we really don’t know what the work actually is yet.

Try and avoid having only developers, or only a certain group, and please don’t exclude testers or BA’s.  The idea here is that since you are working cross-functionally, you should be getting a cross-functional vote. Depending on your group size, you may have a hard time getting your WHOLE team involved.  Just resist the temptation to only have a few people.  You’re really missing the benefit.

This process has also worked for me half way through a very large project for a new team (it was not possible to do this at the beginning).   I was fortunate to be in a company that had a great attitude towards the results and used the information obtained to re-align their corporate objectives based on the teams’ input about how long epics would take.  That was a great experience and allowed for a very successful project delivery!

Listen to what the team is telling you!  They have all given their input this way.  There is no reason to think they are wrong about the their capabilities or the capabilities of the company to keep up with them.  The team will also automatically factor in the environment they work in and the corporate development culture.

I’ve successfully used this technique with a group as large as approximately 20 people from a variety of teams working on the same project in the same room with a Product Owner and 2 Stakeholders.

That same team also estimated approximately 6 months worth of epics in just under 2 hours. Longer than that would not likely have produced better results.

The goal isn’t to create procedures here, but to find a way to allow the team to estimate work instead of schedules being handed down to them.  More importantly, it will start the goal of communication between the Team and the Product Owner.

Maybe this approach will work for your team.  If you try this, please let me know how it worked out for you either way.

Mike Caspar

References:

Mike Caspar – Mike Caspar’s Blog

OpenAgile – http://www.openagile.com

Scrum – http://www.scrumalliance.org

Agile Estimating and Planning by Mike Cohn

*Agile Estimating and Planning by Mike Cohn


Seven Options for Handling Interruptions in Scrum and Other Agile Methods

Almost three years ago we wrote a brief article about interruptions.  In that article, we described four methods of dealing with interruptions.  I would like to expand on those four methods and add three more to present a comprehensive set of options for organizations struggling with this.

Option One: Follow Scrum Strictly

The rules of Scrum are clear: if it isn’t part of the team’s work for a Sprint, then it shouldn’t be done.  From the moment the team commits to work in Sprint Planning to the end of the Sprint with the Sprint Review, the team needs to be protected from interruptions.  If an interruption is truly urgent enough to warrant the team’s attention mid-Sprint, then the Sprint can be canceled.  This is a pretty extreme result however since it invalidates the team’s previous commitment.

 

The Scrum approach is based on the basic philosophy that Scrum is a system to expose the problems and obstacles in the organization.  This is painful!  In the case of interruptions, Scrum then is metaphorically throwing them back in the face of the organization and saying “this is bad behavior!  Fix the behavior that causes so many interruptions, don’t find a way to accommodate interruptions.”

For example, many teams are faced with interruptions related to their support of the software they are creating.  In Scrum, deflecting the interruptions forces the team and the organization to examine the root causes of the support issues and fix them.  If the team is producing software with lots of defects, then that needs to change.  If the team is producing software that is hard to use, then that needs to change.  If the team is producing software without the appropriate level of user documentation, then that needs to change.  But what doesn’t change is the team breaking the safety of the Sprint defined by the rules of Scrum.

Option Two: Allocate a Portion of Time to Interruptions

Given certain conditions, the amount of interruption of a team can be “stable”. If this is the case, then the team can reasonably set aside a certain percentage of their time to handle interruptions. Determining if this is possible can be done by tracking the occurrence of interruptions and the level of effort to handle them.

 

In a team using this method, there are two ways to allocate this time: everyone on the team gives a certain amount of time each day to handling interruptions OR one or two people on the team are committed full-time for a cycle to handling interruptions. In either case, if the amount of actual time spent on interruptions is less than the amount of time available, then that difference of time must be used carefully. Generally, the best use of this extra time is to work on resolving the root causes of interruptions. For example, if one person of a team is dedicated to dealing with interruptions, and most interruptions come from in-the-field bug support requests, then that person might spend any extra time working on fixing older lower-severity defects.

The amount of time that the team is allocated to handling interruptions should never be exceeded otherwise the team’s commitments at the start of the cycle are not really commitments.

This option is by far the most common systematic approach to dealing with defects

Option Three: Visible Negotiation of Change

Another common method of handling interruptions is the “fluorescent note card” method which requires visible stakeholder negotiation around the impact of interruptions. With this method, any time a stakeholder comes to the team with an interruption request, the ScrumMaster/Coach/Process Facilitator writes the request on a bright colored note card so that it is easy to distinguish it from the other tasks the team is working on in their current cycle.   The ScrumMaster then asks the team to do a task breakdown on the card and using their normal process (whatever that is) estimates the work effort. The requesting stakeholder then has to negotiate with any other stakeholders (and in particular the Product Owner/Growth Facilitator about what work to remove from the iteration in order to make room for the new work. This process works well primarily because it makes the tradeoffs visible. It does not work so well with letting the team make and keep their commitments which can have a long-term impact on trust.

 

This approach requires a few things to be in place to be effective:

  1. A visible task board instead of electronic tools for task tracking.  The visibility makes the change much more immediate and you must have the stakeholders involved right in the same physical space.  An electronic tool makes this too abstract and can lead to some important stakeholders not being properly aware of changes.
  2. A team that is reasonably good at estimating.  By “good” I mean both accurate and fast.  If it takes the team half an hour to do an accurate estimate, then that is already a significant interruption in itself!  A team should be able to look at an interruption, break down the tasks and come up with a reasonably accurate estimate within no more than 10 minutes.  Remember that doing this is already task switching so there is going to be an additional cost to the team.
  3. Finally, and perhaps most importantly, a clear agreement must be in place among stakeholders that this approach to interruptions is allowed and that the consequence of it is that the team cannot be held accountable for their commitments!!!  I cannot stress this enough!

Option Four: Separate Team for Interruptions

This option is fairly self-explanatory and in fact is just a way of saying that you have a separate support group who deals with interruptions.  The more technically capable this group is, and the more authority they have to make changes to the code/database/etc., the more effective they will be at protecting the agile teams from interruptions.

 

In some ways, this is a good approach because it makes the cost of interruptions very visible to the business: how much does your support team cost?  If this cost is growing, then it means that the development teams are creating software that is harder and harder to support.

If you follow this approach, please ensure that you do not rotate development team members through the support team as this damages the team-building process for both the development team and the support team.

(One radical option to try as an add-on to this is to defray the cost of this support team by tying developer’s salaries to the cost of support.  To make this palatable, you might simply say to the development team that any time a support person can be laid off due to improved quality in the product/system, that person’s salary will be permanently distributed and added as a raise to the salaries of the development folks.  PS.  I’ve never seen any organization do this – it’s just a theory.)

Option Five: Extremely Short Cycles

A less common, but interesting method for handling interruptions is to have extremely short iterations. In this method, choose your iteration length to be so short that you can always start work on urgent interruptions before anyone gets impatient! This can be exhausting, but it is one of the best ways to get the team and the organization to understand the large toll that these interruptions take.

 

There is a simple way to determine how long your cycle should be based on measurement.  Choose a “normal” duration (e.g. one or two weeks) and for several cycles track how many interruptions are submitted to the team, and how urgent is the turn-around time on those interruptions.  After several cycles, the team can then adjust its cycle length so that, on average, the team is able to start and finish a cycle in a time shorter than the expected frequency of interruptions.

For example, one team I worked with found that in general, they were getting interruptions that needed to be handled within three or four days, but more urgent interruptions were rare.  They decided to use a cycle that was only two days long so that on average they would complete handling an interruption in three days.  (Interruption comes half way through a cycle and is put on the backlog at the top.  The next cycle they start and finish the interruption.  Elapsed time is three days.)

Option Six: Status Quo / Suffering

There is nothing inherently wrong with continuing with your current approach to handling interruptions.  It probably makes some people miserable, but there are also some people who really enjoy crisis and constant change.  In fact, it may be part of the culture of your organization or something that is strategically important in your particular industry.  That doesn’t mean you can’t be agile, but it may mean that you are making compromises where you are trading off team performance for some other benefit.  it is important that if you choose to continue with your status quo, that you make the trade-off transparent.  Tell everyone on your teams exactly why you are making the trade-off and what is the expected benefit of doing so.

 

Option Seven: Commitment Velocity

The most sophisticated option is based on measuring a special kind of velocity called “Commitment Velocity”.  This is a mechanism that allows both interruptions to be handled mid-cycle and for teams to make commitments that they can keep.  In the simplest terms, Commitment Velocity is the minimum historical slope of a team’s Sprint burndown.

 

For example, if a team in Sprint 1 has 240 units of effort at the start of the Sprint, but, partly due to interruptions, does not finish and then has 40 units of effort left unfinished at the end of the Sprint, then the Commitment Velocity (slope) of the team is 240 – 40 = 200.  In their next Sprint planning meeting, they would plan such that they had at most 200 unites of effort in their Sprint plan.  The team then does their second Sprint and again, partly due to interruptions, they don’t finish everything.  Perhaps this second sprint started with 195 units of effort (<200) and finished with 10 units of effort remaining.  Their new Commitment Velocity is 195 – 10 = 185.  They do a third sprint, but they finish everything.

It is tempting for the team to perhaps take an average – maybe they finished 200 units of effort in their third Sprint so they average 200, 185 and 200 leaving 195.  This is not Commitment Velocity.  By definition, an average means that the team will successfully complete all their work 50% of the time.

Instead, the team maintains its Commitment Velocity of 185 for their fourth Sprint.  By the law of large numbers and the central limit theorem, as the team uses this tool of Commitment Velocity for more and more Sprints, eventually their ability to keep their commitments, even with interruptions) will become closer and closer to 100% certain.

Selecting an Option

Ultimately, the most important thing in selecting one of these options is to do so consciously and in the spirit of learning that underlies agile methods.  Choose  an option and then stick with it long enough to truly understand if it is working for you or not.

There are some things to consider as well:

  • If you are trying to do a dramatic improvement in how your organization gets stuff done, I would recommend choosing either Option One (Follow Scrum Strictly) or Option Seven (Commitment Velocity).  Both of these are options that put pressure on the team and the organization to improve.
  • If you don’t have strong executive support for Agile, then probably Options Two (Time Allocation), Four (Separate Team) and Five (Short Cycles) are going to be your best bet at first.
  • If you do have strong executive support, but you aren’t desperate to improve your organization, you might consider Option Three (Visible Negotiation).
  • Of course, Option Six (Status Quo) is the easiest… I don’t really recommend it though!  Agility requires systematic change to encourage continuous improvement.  All the other options assist with this.

Facing the facts early on. Risk Mitigation can be a powerful motivator.

Recently, I was able to witness a remarkable event in a company that is relatively new to Agile. They have several teams at about Sprint 12, with several new teams just starting up. Many of their processes are waterfall based.

A failed waterfall project was moved to an existing Agile Team.

In the second Sprint, the Team (feeling trust in the organization and the process), came to the Scrum Master and said, “We’d like you to talk to management. We are not sure this project should be using the platform we develop on. We think another team’s platform may be more appropriate”.

The company had spent time developing a “specification document” for this “project” before Agile was introduced. There were detailed specifications as to how the product was to be created and which platform to use. NONE of this was done with the benefit of asking those that would actually be doing the work.

The project was initiated before learning about applying Agile. One developer was tasked with following the specification. After 2-3 months of frustration, the developer left. This left the company in a bad position. Not only was the project incomplete, but there was also no knowledge transfer. The project was basically stopped.

As Agile was now the new target way of doing things, the project (and new developer hired through the previous process) were added to an existing SCRUM team. The team is using one week Sprints.

After only two Sprints (two weeks), the team had recognized the futility of the approach that was “specified” and took this to management.

Traditionally, large organizations staff for projects. In an environment such as this, how could team members be expected to be truthful and honest about the state of affairs? It would mean the end of their jobs or contracts.

The key here is to allow teams to stick together. Not only will you avoid losing all the efficiency the team has built up, but you will also allow them to be truthful about their situation.

If you are a manager reading this, ask yourself. “Do I want to know that things will go wrong at the beginning of the project or wait until 5 months have gone by to be told, ‘We knew it would never work”". Or even worse… “We knew the product owner was asking for ridiculous features that had no Return on Investment for the company, but hey, you hired us for this contract. We just follow instructions”.

As it turned out, the project did continue with the current team, but with some changes to the specification. The parts of the system that were going to be problems in 5 months were re-evaluated and were removed as they really did not have any real value to the company. It was then decided to stick with the same platform.

Discussions did occur regarding moving to the alternate platform, but were deemed unnecessary after open discussion between the teams and the managers involved. Realistic expectations were set based on value to the company.

Sometimes features are absolutely mandatory for the product. This cannot and should not be taken away from the process. What we gain here is that we are able to have a discussion about necessity. In the end, the business has to decide what is valuable, not the development team.

In a case like this, ask yourself, “If my team is very against this, maybe I should at least think about it”.

The company is working in a very short iterative environment, they quickly recognized a flaw in the system design and dealt with it after only 2 weeks into a several month project.

Working incrementally allows the company to “Inspect and Adapt” on a regular basis. This has to include the question, “Does this still make sense?”. If you need to go backwards, let it be to reverse one or two Sprints of work, not months, or even years.

Fortunately, for the company, the product will come out on time, with appropriate technology based on Return on Investment, and likely with significant cost savings over the initial design. This will also allow the team to get started on other high value projects. Talk about win-win.

This project could have gone to another team. It would not have been negative for the first team. The next project would have just come down the pipe for them.

The early signs helped adjust the “expectations” and everyone is moving forward with a clear understanding that they are on a more appropriate path going forward.

For those of you out there trying to convince companies (or yourselves) that Agile is an effective framework, don’t be afraid to talk about “RISK MITIGATION“.

Think about it this way; The company wants to know early on that there will be a problem, not near the end of the project. This is part of the purposeful transparency of any Agile framework.

Mike Caspar
Mike Caspar’s Blog

The Pursuit of True Agility and Jazz Music

A manager I am working with recently sent me this link. I have seen this topic discussed before, but never so nicely worded. Thanks Charles.

It is a discussion about how Jazz music is different than Classical music and how that knowledge could help to understand Agility.

Great post. I think we’ll hang this on the wall somewhere in the team room.

Read more

Scrum Master, Process Facilitator, Growth Facilitator. Managers or Leaders or Neither?

“I now can see why Corporations have such a hard time identifying the Scrum Master in their organizations. Scrum Masters basically don’t fit either category, yet most corporate hiring is done based on hiring of “leaders” and “managers”.”

For the complete text click here

What’s in your Agile Transformation Backlog?

Michael Badali, a good friend of mine, has asked a great question on LinkedIn: What is your Backlog for Agile Transformation?.  From his question:

While I think that Band-Aid off quick is more likely to be successful than Band-Aid off slow, often Agile Coaches & Leaders are put in the position of Kaizen instead of Kaikaku. When asked for a detailed waterfall plan and schedule on how to become Agile… I generally refuse and create an Agile Transformation Backlog – a prioritized list of things that need to be done to become Agile. Please share your prioritized list of things that need to be done to be Agile.