Friday, February 10, 2012

Agile is simple but not easy: advice for agile beginners


As we prepared for yesterday's user story mapping session at Agile Winnipeg, Jon Labun and I reflected on agile stories that we've been a part of or heard about. A common theme emerged - agile is simple but not easy. We touched on this in the presentation and argued that user story mapping should be a central part of your agile practices in order to make many things 'easier'. Many agile stories start off well with organizations and teams wanting to give agile a try, but then fail to put in the investment to understand what being agile is about. The teams assume that agile is simple but lack the knowledge of how all the pieces fit together and end up running a project that is just an agile facade - agile words on the surface, but traditional methods (or no methods) underneath. It isn't the fault of agile that the projects end up in trouble or fail. 

Some common problems:
  • Unending backlogs that are hard to visualize and prioritize
  • Definitions of done that don't include testing & deployment
  • 20 page requirements documents for one user story
  • Incorrectly assuming that agile means 'no planning'
  • Planning at the task level vs. the story level
  • Testing after development is done rather than throughout the project.
  • Out of control scope
  • Out of control change management
  • Never ending projects
  • Significant quality issues
  • etc
If you are beginning your agile journey then welcome to the club! It can be a lot of fun and very rewarding. But please, please, don't start without gaining some knowledge first. The agile community has a good head start on you and can help you through some initial hurdles to make your 'simple' journey a little easier. Please do read some articles and books, listen to podcasts etc, but your best learning will come from interactions and conversations with others who are further along the journey. Here are two important pieces of advice for you:

1) Find your local user group and support it with your attendance. Bring real questions and ask the group to help you find some answers. If you are in Winnipeg, visit www.agilewinnipeg.com. If you are elsewhere, consult the Agile Alliance's list of local user groups.

2) Attend conferences. Many of the successful agile teams I know point to ideas and practices they learned at conferences as crucial steps in their organization's agile journey. But don't expect to only 'attend' sessions - plan to interact with the audience and speakers during the sessions and also over lunch, dinner, drinks, or even indoor sky diving. There are several great conferences you can attend, but I'll highlight one in my region - PrairieDeveloper Conference in Calgary, Alberta from March 12-15. Regardless of your location, this is a can't miss conference with 80 sessions + full day workshops. See you there?

To paraphrase Mike Cohn, the agile community has helped me up my game - now up yours.

* P.S. Prairie Developer Conference is more than just agile of course, bring your whole team, your IT pros, your managers, etc.

Sunday, January 29, 2012

Multitasking game - Hands/Numbers/Song

Most of us find ourselves multitasking at some point and are possibly even proud of our multitasking skills. Here is one game that was created by Alan Cyment with collaboration from Tobias Mayer and introduced to me by Gerry Kirk and Yves Hanoulle at SDEC11 that allows you to simulate the costs of task switching. I've since used it elsewhere and the results were quite effective for shaking the multi-tasking misconceptions.

(Note: Alan added a comment to this blog and I've incorporated some of his new ideas and changes - thanks Alan!)

The Game

Materials needed

  • 6-20 people (note - if you have more than this, just split into multiple groups. In theory you can handle as many people as you have space for)
  • One facilitator
  • One stop watch
  • White board / Easel or equivalent to record a few scores.

Suggested questions to ask before the game

  • Who values multitasking?
  • How many projects are you working on right now?
  • Can we juggle tasks well?
  • Who is great at multitasking?

Practice / Warm-up

  1. Have each person pair up and then line up in two lines facing each other like this:
  2. A1 A2 A3 A4 A5 (A1 faces B1, A2 faces B2, etc)
    B1 B2 B3 B4 B5
    • If you have an uneven number, you can ask one person to be your time keeper. If you have some sceptics or others who don’t want to participate, you can ask them to be observers ;). However, you need at least 3 pairs and more is better.
  3. Have each pair practice the Hands activity as below
  4. Now switch pairs by having everyone in line A move one spot. A5 will have to move all the way to A1. Your line should now look like this:
  5.   A5 A1 A2 A3 A4 (A5 is paired with B1, etc) 
      B1 B2 B3 B4 B5 
  6. Have each new pair practice the Numbers activity below
  7. Now switch pairs again by having everyone in line A move one spot. You should now look like this:
  8.   A4 A5 A1 A2 A3
      B1 B2 B3 B4 B5 
  9. Have each new pair practice the Song activity below

Performing the game

  1. This game will be performed in two rounds
  2. Round One:
    • You as the project manager will tell the teams which activity (project) to work on.
    • You will bark out instructions ("Shout-Driven Develolpment") and they are expected to switch tasks on your command. For each activity they need to switch to perform the activity with the pair they practiced that activity with. (This will involve a lot of movement.)
    • When each pair resumes an activity that they have already started they must pick up where they previously left off.
    • Your time keeper should record the time when the whole team (all pairs) have finished each activity.
    • Keep asking the team to task switch every 2-10 seconds (be random!) until all pairs have completed the activities.
    • Record the completed time for each activity.
  3. Round Two:
    • You as the project manager will tell them the priority of the activities (projects). You will ask them to complete Hands first, Numbers second, and Song third. You ask them to complete each activity (project) before starting the next.
    • Your time keeper should record the time when the whole team (all pairs) have finished each activity.
    • Record the completed time for each activity
  4. Your results should look similar to the results in the image below. Note: we played this game twice after adding more people - the purple numbers are the results of the second game.

Additional Tips and or Alterations

Alan Cyment commented on this blog (see below) with some alterations and changes that he is using. Take a look at some of these additional tips and ideas:
  • Have the group decide how to rotate partners instead of defining the rotation for them.
  • Run the sequential round first and then the multitasking round.
  • Have the group choose their own song instead of Happy Birthday.
  • For larger groups, ask them to put their hands up when they complete each 'project'. This will help the time keeper to understand when each project is completed amidst the chaos.
  • Instead of acting as the project manager, act as the product owner who represents three different customers/stakeholders.

Questions:

  • What did you think of the game? 
  • What are some conclusions you can draw about how you are currently working? 
  • Notice that in the second attempt you completed all three tasks before you completed the first one in the multi-tasking round. What do you think about that? 
  • For the two rounds, notice your time to market.
  • How different was the quality of your product in round one and two?
  • What did you notice about your stress level in round one and two?
  • What does this game teach us about sustainable pace?
  • Describe your discipline level in each round. How much did your team cheat or ignore the manager's orders?
  • How does that affect how you will work? 
  • What happens when you task switch? 
  • What are the costs to juggling tasks? 
  • How can we change the way we work to take advantage of this? 
  • What are the barriers to making this happen? 
  • How can you respond to someone who is asking you to switch to another task or to split yourself between two or more projects?

The Activities:

Hands:

  • Clap your own hands / Clap your both of your partner’s hands 
  • Clap your own hands / Clap your partner’s right hand 
  • Clap your own hands / Clap your partner’s left hand 
  • Clap your own hands / Clap your right hand to your left foot 
  • Clap your own hands / Clap your left hand to your right foot 
  • Repeat once

Numbers:

  • First person holds up 1 finger / second person claps once 
  • First person holds up 2 fingers / second person claps twice (up to five) 
  • Then switch roles and repeat once

Song

Sing/say the Happy Birthday song alternating each word. One person says the first word, your partner says the second, you say the third, etc:
  • Happy birthday to you 
  • Happy birthday to you 
  • Happy birthday dear <name> 
  • Happy birthday to you 
  • Repeat once

Additional Resources:

Stats

From QSM 1, Systems Thinking (Dorset House, 1992). Jerry Weinberg:
  • # of tasks = 1 - Time spent on task = 100% 
  • # of tasks = 2 - Time spent on task = 40% 
  • # of tasks = 3 - Time spent on task = 20% 
  • # of tasks = 4 - Time spent on task = 10% 
  • # of tasks = 5 - Time spent on task = 5% 
  • # of tasks = more than 5 - Time spent on task = random.

Links on Multi-tasking

Links on combatting multi-tasking

 Subscribe to Winnipeg Agilist by Email

Tuesday, January 24, 2012

Sea Star Wars: A lesson in organizational change

Sometimes in order to make a change happen, all you need to do is change the environment.

This summer I witnessed a great example of this in a small but fantastic aquarium in Ucluelet, BC. When you see a sea star in the ocean or at the aquarium, you rarely or if ever see them move. However, the staff at the aquarium instigated a sea star race by changing the environment. They put the feared Morning Sun Star in the same tank with other sea stars including the very large Sunflower Sea Star. Once the other sea stars detected the presence of the Morning Sun Star they all started to move away from it as fast as they could. The sudden reactions and speed of those sea stars was a sight to see – a turtle would have been proud!

If you have analysts, developers, testers and users who don’t communicate very well you can help encourage better communication by changing the environment. Create a co-located space and then have them all work in that space together. The environmental change forces them to acknowledge each other’s presence and begin working together. Instead of “Hey, there’s a dangerous Morning Sun Star in here and I have to run away before it eats me”, you should get reactions like “Hey – there’s a user in here, I guess I’ll show them the changes I’m making to this screen to get some feedback”.


Subscribe to Winnipeg Agilist by Email

Wednesday, January 18, 2012

SOPA Blackout

I couldn't find a SOPA gadget for blogger, so in solidarity with all the other blackouts today here is a link to an article on why SOPA should concern you:

http://blog.reddit.com/2012/01/technical-examination-of-sopa-and.html

Here is the conclusion of that article:

"In Conclusion

It is my strong belief that both PROTECT IP and SOPA:
  1. Will not stop the piracy they are targeting
  2. Contain language that is highly ambiguous and extremely broad making them ripe for abuse, and
  3. Introduce regulation and enforce censorship on what should be a free and open internet."

Sunday, January 15, 2012

Estimating tasks in hours is local optimization. Stop doing it!

This weekend I was listening to Eliyahu M. Goldratt's "Beyond the Goal" where he expands on the Theory of Constraints. In chapter three I listened to him explain how estimating in hours is in fact local optimization and therefore "idiotic". Here is a portion of that chapter loosely transcribed:
"The way to ensure that the project will finish on time is to ensure that every task will complete on time. This is the local optima policy that leads to a huge conflict. Placing a person on such a project jeopardizes the most important thing for them - their own image.

Suppose you are this person and you are asked how much time will this task take? You are extremely reluctant to give any number. And when you give that number the Project Manager will try to squeeze it. Why are you reluctant? Because you know that the number you give is an estimate but that it will be converted to a commitment - because the project needs to finish on time.

So what situation does this place you in? This common procedure of turning estimates into commitments puts you into a huge dilemna. Why? The objective of every person is to be regarded as a reliable person by your boss, by your peers, by people. But what is the meaning of being reliable? For example, if you give a commitment and you don't meet it - once is ok. But if you give a commitment and many times don't meet them do you expect to be regarded as reliable? Of course not. So one of the conditions of being a reliable person is to meet your commitments.

Also - if you are fighting for something (an estimate) and then it turns out that you have exaggerated by a mile? If it happens once, fine. If it happens frequently, then you will get the name of someone who exaggerates wildly - so kiss goodbye the image as someone who is reliable. In other words, another consideration for being a reliable person is to not be considered as someone who exaggerates. Now look what is happening when I come and ask you how long it will take to finish this task?

Now look - whatever you do, you are doomed. This is a huge personal conflict. How do we in reality deal with this conflict? Let's face it - this conflict is so important we must find a way to break it. We want to not only be reliable, but to be considered reliable. How do we do it? We cheat.

So we finish our estimates on the nose and sometimes a little more. They become self fulfilling prophecies. If there is a danger of finishing too quickly we add some more tests, do a more thorough job, we add another function in, we check things a little more thoroughly, and we finish on the nose. Do you see what's happening?

Due to the result that our local optimization turns any estimate into a commitment, we have developed the habit of giving estimates which includes in it the safety. If murphy (i.e. Murphy's Law) doesn't hit, we waste the time rather than giving it to the next link in the chain or project. If we do give it to the next link then we are declared as exaggerating and next time they won't give us the extra time. So look what a horrible situation this is. And this... is what kills the project. This is totally idiotic"
When you read this story the first time you will likely notice there are several examples in there of how not to run a project, of poor leadership, and his concluding statement is a little harsh. As many commenters have pointed out, this style of project management is not similar to how we typically run agile projects. However, at the core of the story is the desire of each person to be reliable by meeting hourly estimates whether they are created by the team, by yourself, or by someone else. When I first listened to this argument I was fascinated by that part of it. So, if that part of his argument is correct, then what alternatives do we have if we need to estimate? (This paragraph has been updated based on the comments - thank you)

If your project requires an estimate:
  • Stop estimating tasks or user stories in hours - hopefully the argument above has already given you enough reason to at least consider this 'radical' change.
  • Don't estimate user stories in hours or convert relative points to hours. OK - I do understand that it can be valuable to look historically at hours vs. points, but don't use this conversion for guessing how long a task or user story will take.
  • There is some evidence that due to variability, counting the number of stories completed in an iteration is of equal value to counting the number of points completed in an iteration (velocity). This would help keep the focus off of hours per user story or task.
  • Where possible, avoid asking how many hours are left for a task or user story. I understand why and how this information can be valuable, but understand the risk you take when you ask this question. 
  • If possible, estimate at higher levels (epics) rather than lower levels (user story).
  • Give broad project estimates with ranges like 1-2 months, 3-6 months, 1-2 years instead of doing detailed estimates. Most projects don't need a detailed estimate in order to determine if they should be completed or not. For many projects on our list we already have a good enough guess about their size to understand their value compared to the cost. (Unfortunately, as a consultant that usually doesn't include the projects I work on).
  • This logic also suggests that relative estimating might be dangerous. I still have to think about that one as there are significant benefits to exercises like planning poker even if estimates are not created as output.
If your project does not require an estimate:
  • Do a little song and dance!  
In either case, continue to break down your project into smaller projects and small deliverable pieces of value and working code. Build the high priority pieces first in an iterative  fashion. Make a decision about whether the project is done after each completed story or each iteration to avoid the problem described above - the temptation to finish on your estimated completion date. Continue measuring your progress using completed stories but consider using cycle time (average time to completion for all stories) vs. velocity (average number of points completed in a given time frame) to avoid some of the local optimization that could occur for each user story.

For further reading on the Theory of Constraints, check out any of Goldratt's books. I highly recommend starting with The Goal which is also available on iTunes Canada as an audiobook for $2.95.

Subscribe to this blog by Email