Oct
09

Agile Retrospectives

In yesterday’s post, I told how Rachel Davies encouraged us to reflect and improve using “Retrospectives”.

Retrospectives Great advice, but how do you convince people to hold a retrospective? How do you organize a Retrospective? How do you get useful information? What do you do with what you learned during the retrospective?

The classic book about retrospectives was written by Norm Kerth. It answers all of these questions, and then some more. There is a particular emphasis in the book on creating a “safe environment”, where everybody can contribute without fear. Especially when the project hasn’t gone too well (and you could well learn a lot of useful information), you need to do a lot of work to get rid of the “poisonous” atmosphere that may have built up in the team. I spoke with Norm at SPA2006 and attended his keynote. If I have a team that’s really in trouble, I’d want Norm to come in, because he has the experience and techniques and knows how to deal with difficult situations. And he can tell great stories.

Agile RetrospectivesEster Derby and Diana Larsen have published their “Agile Retrospectives” with the Pragmatic Programmers. As usual with the Pragmatic Duo’s books, it’s a thin (+/- 160 pages) book with large readable fonts and many illustrations. There’s less information (the first 40 pages or so) about how to lead retrospectives than in Norm’s book. This is more a book for people who know what retrospectives are and can get more information from other sources, like the “Retrospective Facilitator’s Gathering“.

As the book says at the end of chapter 3 “Leading Retrospectives”: “You are probably an expert at what you do now. Facilitation draws on different skills than most of us develop working in software. Facilitation also requires a different perspective. It takes time and practice to feel comfortable with new skills.” Effectively facilitating a retrospective (or any other event) takes a lot of skill. Having such a short introduction to the skill of facilitating retrospectives, this book is more aimed at people who already know what retrospectives are and have performed some. There’s not enough information for newbies, who are better served with Norm’s book.

Where the book shines, is in the second part. Here, we find a large list of activities we can perform during a retrospective. Each activity starts with a “Purpose” section, so you can select the right activities for the goal you want to reach. The activities are organized in several sections, for each phase in the retrospective:

  • Setting the stage
  • Gathering data
  • Generate insights
  • Decide what to do
  • Close the retrospective

I found some interesting activities that I can apply and some ideas for new activities. The handy reference format is a useful tool when planning a retrospective. When you run regular retrospectives, participants can get bored with performing the same activities over and over. Having such a wide selection of activities to choose from, makes it easier to keep retrospectives “fresh” or selecting the appropriate activity for the group and situation.
This book is recommended for people with some experience with retrospectives. As with most things where humans are involved, a word of caution is in place: be careful, you’re dealing with people’s emotions and feelings. A retrospective after a succesful project is relatively easy. A retrospective for a challenged or failed project is hard and dangerous. Get a pro or some training before you embark on such a venture.

Retrospectives are absolutely essential to become and stay agile. But be careful out there. “Coach” or “facilitator” is not a term that should be taken lightly. It takes skill and experience.

Sep
04

The McCarthy Show

Jim McCarthy at Microsoft Jim McCarthy presenting at Microsoft

If you haven’t seen it yet, go get the videos of Jim McCarthy’s talk at Microsoft from the podcast page of the McCarthy Show. While you’re at it, why haven’t you subscribed to the McCarthy Show, the show where Jim and Michelle McCarthy talk about “Software for your Head“?

Why should you see this presentation? It’s pre-“Presentation Zen“, pre-agile, yet you’ll find many things very familiar.

The talk is about the “23 Rules” of shipping software (back in the time when at least some people within Microsoft knew how to ship…). How many slides does Jim use? 23. Or 24, because there are really 23.5 rules.

Okay, the slides still contain bullets. I’m not too fond of the yellow and white letters on blue background, in the slides. The flow of the presentation is slowed down a bit by Jim going back to the computer to advance to the next slide. He could have used a remote or someone sitting behind the computer, to keep the flow.

But those are minor quibbles. Watch how Jim delivers the talk.

He starts the talk with “This reminds me of a story about Napoleon. Napoleon, incidentally, is a big idol of Bill’s. Big surprise!”. The story is about Napoleon having only one rule for management, a good introduction to the “23 rules” talk.

The delivery reminds me of a standup comedian’s act. See for example Rule #14 “Enrapture the customer”. He illustrates the fact that “most software sucks” with a a few self-deprecating jokes and an anecdote about a woman he met on a plane. Jim goes on a rant how bad Windows, Word and Excel are that this woman has to go to college for two years to learn how to use them. Finally, he gives an example from Visual C++ to illustrate how to listen to what a customer really wants. How to make the user go “Wow!”. Great advice, great passion, great delivery.

I’m quite sure that Visual C++ AppWizard was a “Wow!” feature for those people who didn’t really understand C++ or Windows programming (or even programming in general). I remember one ex-project manager of mine actually go “Wow!” when he ran his first AppWizard-generated “Windows app”. “Hey, this Windows programming thing is pretty simple!“, he said. Needless to say that our first Windows development project had a slightly “optimistic” schedule 🙂

There are other strong points in Jim’s delivery. Watch his timing: he knows when to leave a pause, let the audience laugh, think, catch their breath. Watch how he involves the (large) audience, how he asks them questions, especially “Does this problem sound familiar?”. Watch how he modulates the intensity of his talk, sometimes joking, then ranting, telling stories and anecdotes, giving advice…

Dynamics of software developmentAt the time this talk was given, the first edition of “Dynamics of Software Development” was probably out. I had read the book, but didn’t think that I could apply most of the advice contained in the book.

Things only clicked when I read (AND understood, which took some time and re-reading) “Software For Your Head“. Jim alludes to what was to become the “Core protocols” a few times in the talk, for example when he mentions that his team is experimenting with ways to make the environment safe enough for people to express their best ideas.

The second edition of “Dynamics of Software Development” is out. Time to re-read the book and see all the things I missed first time. But first I have to read a few other books. That’s another story, for another day…

Aug
12

We expect nothing less than perfection

Perfect sessions
This month, we’re reviewing the many proposals we received for our Call for Sessions for XP Day Benelux. How does that work, what happens during that mysterious “review period”? Let’s take a look behind the scenes…

Software For Your headAll the session proposals are added to our session review wiki. Everybody who has proposed a session gets access to the wiki. They get one month to help each other to improve their sessions and session proposals, by using the rules of the “Perfection Game”.

The perfection game is a simple format to give positive feedback, which is not as simple as it sounds. This “protocol” (and many others I use) was devised by Jim & Michele McCarthy in their “Software for your Head” book. Subscribe to the “McCarty Show” podcast to know more about these protocols. We had a session about the Perfection Game at last year’s conference.

The rules of the game

If you give feedback, you have to give 3 things:

  • A score out of 10. The number itself doesn’t have a lot of meaning, we use the number to see if we get closer to perfection (10/10) in each iteration.
  • What the proposer did to earn those points. It’s important to let the proposer know this, so that they keep or reinforce their strong points.
  • What the proposer should do to earn 10/10. This has to be clear, actionable advice. This is the difficult part. When they first start using the perfection game, people usually “sugarcoat” negative feedback to make it look like positive advice. E.g. “Your proposal would be perfect if it wasn’t like this“. What can I do with such feedback? Nothing much.

We ask each session proposer to provide perfection game feedback to 3 proposals, so that we get 3 reviews per proposal. Everyone can choose which session they review, first come, first served. We have (at least) 2 iterations of feedback-improvement-feedback.

We don’t talk agile. We don’t do agile. We try to live it.

It’s not enough to talk the talk, you have to walk the walk. A conference about agility has to be agile. The session review process is open, all participants can see everything. That requires a lot of trust and cooperation. We arrange for early and regular feedback; and we act on it. We also review and correct our process.

Perfecting our game

This review process didn’t spring fully-formed from our brilliant minds. We review and improve our process every time we organize a conference.

Our first process was simple and classic: people send in proposals, we select the good ones and reject the bad ones. The problem with that is that people have only one shot at writing the perfect proposal. No iterations, no feedback. We had to reject sessions which might have become a lot better with some feedback. Not very agile.

We then tried a process similar to the one we experienced at the OT/SPA conferences. We wanted to attract local people as presenters. People who often didn’t have any session writing and presenting experience. Therefore, the conference organizers acted as “shepherds” to help the session proposers to improve their sessions. Afterwards, we were a bit uncomfortable with the “shepherding” bit. Did that mean we saw the session proposers as sheep? “Session coaches” is a better description of our job, but still there were two classes of presenters.

Next, we tried to involve the session proposers themselves in the review and selection process. Sessions were put on a wiki. Session proposers could review each other’s work and update their proposals according to the feedback they received. That worked a lot better. The only drawback was that our review process was a bit too heavy and that a review invites more criticism than constructive feedback.

So, this year, we simplified and replaced the review process with the perfection game. Let’s see how that works. Each year will be different, hopefully better.

Just enough structure. Simple rules, complex behaviour

Cooperation, open space, iterations, self-organizing doesn’t mean there’s no structure. On the contrary, you need enough structure to make this happen. There are rules, simple rules, and participants have to abide by them. Setting up, guarding and updating the rules is the job of the organizers. We own the process, the participants own the content and help us to improve the process.

Jul
23

New books: agile estimating, CMMI and requirements

Some new books arrived

Agile estimation and planningAgile estimating and planning

First off, Mike Cohn’s “Agile Estimating and Planning“.

I enjoyed Mike’s previous book “User Stories Applied”, which contained a lot of useful techniques, each contained in short, practical chapters, with plenty of examples. Agile Estimation and Planning has the same structure and light writing as User Stories Applied.

This book is the perfect companion to the User Stories book: you’ve got a bunch of cards with stories, what now? Your customer wants to know how long it will take, how much it will cost, how many people it will take.

The book starts off with a discussion of the disadvantages of estimating tasks and the advantages of estimating features. Then we see some estimating techniques in “story points” or “ideal days”. I share Mike’s preference for story points: they’re simple and reflect the intrinsic difficulty of the story. Thus, I expect a story’s points to remain constant. All the other variables that influence how long it takes (the skill of the team, size of the team…) are reflected in the changing parameter of velocity: how many points we can implement in one release. The principle (which Mike attributes to Tom Poppendieck): “Estimate size (points), derive duration (man days)”.

Then comes the other important point: planning by customer value. Mike describes how the customer can estimate value and prioritize stories, including some financial measures like Net Present Value. When we know the customer’s needs, we can schedule the stories into releases. Mike adds some extras to the basic agile (XP) planning process: buffering techniques from Critical Chain planning, to reduce uncertainty and planning multiple team projects.

Of course, you have to track and monitor the performance of the team and take the appropriate corrective action, or you wouldn’t be agile. Mike tells you how to do that, too. The book ends with an analysis of why agile planning works and a case study planning stories for a game.

If you’re new to Agile estimating and planning, this book will give you the practical information you need to start applying the techniques. If you’ve been doing this for some years, as I have, much of the material will be familiar, but you will still discover some useful techniques or explanations why it works. That comes in handy when you’re trying to introduce agile estimation and planning in your team or organisation.

Real business requirementsReal Business Requirements

The second book is about “Discovering REAL Business Requirements for Software Project Success“. In this book, Robin Goldsmith claims that many projects get in trouble because they don’t have the real business requirements to work with. The problem is twofold:

  • Real, meaning that we touch on the essence of what the customer needs.
  • Business requirements, meaning that we understand the business needs and its goals, before we decide what part (if any) we will automate. All too often, what we write are Product requirements, the way the system(s) should behave. But have you ever asked yourself if the system was really the best solution to the customer’s problem?

The book gives a lot of techniques to discover the business requirements. You can use these techniques both with heavy upfront requirements efforts or agile story writing.

I think stories are a great way to describe business requirements. You can use them to stage small “plays”, where people acting the different roles go through a certain scenario, based on available stories. As soon as the play reaches a dead-end without a suitable story, you know you need to write another story. That’s just one of the many ways you can both generate and verify requirements.

What I like most about the book, is that it contains a lot of such “tests”. You can use these tests to verify if your business requirements are really business requirements. Hmmm, can you do test-driven requirements discovery? I think so. I’ve been using some of these techniques in a TDD manner: if the requirements test fails, you need to discover some more requirements, until the test succeeds. Red-Green-Refactor, it’s not just for code!

CMMI AssessmentsCMMI assessments

Marilyn Bush’ and Donna Dunaway’s “CMMI Assessments. Motivating Positive Change” deals with performing CMMI assessments to ascertain the state of a process improvement effort, as opposed to performing an audit to rank the company on the CMMI’s maturity scale.

Many of the obstacles for a succesful assessment are the same as for a retrospective: the need to create trust, to create (and maintain) a constructive atmosphere, to ensure that we work to improve the next project, not to complain (or blame) about what happened in the previous project and to avoid people “gaming” the system to look good. With an assessment, the dangers are even greater, because there is always that maturity ranking. All too often, the maturity level, not the process improvement, becomes the goal. This and many other potential problems are recognized and addressed by the book. Some claimed benefits sound quite familiar:

  • Assessments effect change by involving and motivating organizations in efforts of self-analysis. Or, as the cool kids say: “Hansei”. It is stressed that all workers involved in the work should be involved in process improvement and assessments.
  • Assessments effect change because they help the workers in an organization understand that Processes, not People, need to be fixed. It’s never a People Problem, it’s always a Process Problem; how very Toyota Way!

Agile Retrospectives

I think using CMMI assessments to motivate people to perform process improvement is a bit of an uphill battle:

  • the idea of ranking practically invites gaming
  • the staged representation “forces” a certain order in your process improvement efforts. I prefer to attack bottlenecks or to improve flow by removing muda when I see them.
  • a “real” assessment is quite a heavy, resource-intensive process. We need something that can be done a lot more frequently, to get faster feedback and to keep people motivated by seeing regular improvement. Something like Retrospectives. Buy Norm Kerth’s book if you haven’t already and look out for Esther Derby’s new book.
  • there is a lot of confusion about what CMMI actually is. Is it a model, a process improvement technique, a process?

CMMI and agility

Ohmygod, Pascal is straying from the one true Agile path. It starts with doing waterfall projects; before you know it, he’s onto the hard stuff, like CMM!” 🙂

Is there a conflict between agility and CMMI? A bit, but not a lot, I think. But I need to learn a bit more about CMMI. For me, CMMI is not a process. CMMI is a set of questions about process and how to ask them (assessments and appraisals). Processes or methods like XP, SCRUM or any give the answer to a lot of these questions. For example, Philips showed that you can be easily appraised at CMM Level 2 by applying XP and Scrum.

One can disagree with the questions or the fact that they are grouped in maturity levels (I prefer the continuous representation), but I think we can all agree that any method should be able to answer questions like “How do you discover and manage requirements? How do you plan? How do you manage risk?…”. As long as they are open questions…

My view is contradicted by what’s written in “CMMI SCAMPI Distilled” [Ahern et al] on pages 32-33, where they compare hacking, agile and “Planned development”, as represented by CMMI and SCAMPI (based on the work of Boehm and Turner). Phrases like “CMMI can be applied to a large class of software-intensive efforts. As projects become more complex and increase in size, Agile methods are less applicable and a planned delivery approach contained in CMMI is often the preferred approach.”. So, CMMI is a method now?

/me confused… I’ll let you know when I’m less confused.

Apr
27

What do you really want ?

Mastering the Requirements ProcessI’ve been away at a “Mastering the Requirements Process” course led by Suzanne Robertson of the Atlantic Systems Guild.

I’m looking for a method/process/techniques to gather (or “trawl for” as Suzanne calls it) requirements, to integrate with my customer’s existing process. The “Volere” tools seem quite suitable, especially the techniques to define the context, goal and business events. I often see teams jump directly into defining the product, “what will the system do?”. Before thinking about what, you have to know why.

What is the context and goal of the business in your current project? Do you know? Have you asked? Is success of the project defined as how close you come to the business goal?

What could happen if you don’t have the answers to these questions?

Your product scope might become too large. Feature upon feature gets added to the product. On what basis? How can you decide if this feature should be in or out of the project? How can you prioritize requirement, unless you have some way of guessing how much they contribute to the business goal?

People might disagree about whether the project is succesful. There is a danger with saying “a good product is one that conforms to requirements.”. What kind of requirements? Product requirements? What good is a product that does everything we agreed it would do, unless the product requirements are linked to business requirements. Have you ever been in a project where the customer was dissatisfied, even though you implemented all the requirements? Maybe you misunderstood each other. Maybe you had a different definition of success.

Start asking those business questions today. That means you have to understand the lingo. At least ask “why?” a lot…