XP 2005 TOC Poster 1

Theory of Constraints session at XP2005, participants were given an experiential crash course in the Theory of Constraints. They then had to apply their new knowledge to solve real world problems.

They did this in 3 groups. Each group had a “customer”, the others played “TOC consultant” to help the customer to understand and improve their system.

XP2005_TOC_poster1_small This is the output of one of the groups: it gives an overview of the whole process from requirements, over analysis, development, testing, writing manuals, training and finally putting “stuff” into production.
Click to enlarge the image
(picture courtesy of Marc Evers)

Remarks about the poster

The goal of the system is to “Put stuff into production“. An IT system can only generate value when it’s put into production use and users are actually using it (well). Hence the User Guide and training before releasing. Part of the value in releasing a system is the feedback and ideas you receive to improve the system, hence the loop back to project initiation.

The bottleneck of this system was actually two bottlenecks (indicated as [1] and [2]), which ocurred at different times during the project. Bottleneck [1] holds the system back at the beginning of the project; bottleneck[2] holds the system back near the end of the project. It’s not as bad as a “constantly shifting constraint”, but we need to focus in different areas depending on the phase of the project.

Notice how the part marked with “XP” is between two bottlenecks. This is something that has been observed in many (if not most) XP projects: XP has very effective techniques to exploit, subordinate to and elevate a development team bottleneck. If you apply the techniques, the development team’s throughput improves a lot and it’s no longer the bottleneck. The bottleneck shifts. And who’s the bottleneck then? Usually the Customer (role) becomes the bottleneck, either in keeping the team fed with stories or in accepting the stream of finished features. Or both, as in this case.

XP in a nutshell, from a Theory of Constraints perspective:

  • XP assumes that the development team is the bottleneck
  • IF this is correct, XP increases the throughput of the development team and thereby shifts the bottleneck to the Customer
  • If this assumption is not correct…

In the session we chose one bottleneck to concentrate on, the one the customer wanted to remove the most.

Our newly graduated “TOC consultants” suggested several ways to exploit, subordinate and elevate these bottlenecks, coming up with some novel ideas that their customer could apply to this situation. What are some of the interventions we could suggest here?

  • We have two bottlenecks, before and after “XP”. They are bottlenecks at different times in the project. If they are different resources, they could help each other out: bottleneck [2] resources can help (subordinate to) bottleneck [1] resources at the beginning of the project; and vice-versa at the end of the project. E.g. testers can help analysts at the start of the project by devising acceptance tests; analysts can help testers to perform and analyze acceptance tests.
  • We have a non-bottleneck resource, the “XP” team. They could subordinate to both bottlenecks, by spending some of their slack time in helping the bottlenecks. One way of doing is to assign one person from the development team to “follow the release”. This developer helps the analysts to write stories and clarify acceptance tests. They also help the testers during acceptance, the writers writing manuals, the operators installing the software. Their primary job is to smooth the interface between the development team and the world outside the team. They have a good overview of both the functional and technical content of the release. While this developer works at the end of the release, another developer starts preparing the next release and follows that release through to the end. This is a “rolling wave” planning, which is great for continuity and is a good way of “leveling the load” (One of the 14 principles of the Toyota Way). You do need people in the development team who are skilled at interfacing with other teams, who understand both the functional and technical side of a project…

Business Value for beginners

This previous blog entry exhorted you to go out and talk to your friendly neighbourhood business person.

What will you talk about? A good place to start is to discuss the cost and value of what you’re doing. One of the most powerful tools of XP is “The Planning Game”. You sit down with your customer(s) and decide which features you’re going to implement in the next release. To do this you need:

  • Index cards with a “story” each. The card contains a brief description of a feature, just enough to remind developers and customers of the important points of the feature, which they have discussed before and both understand.
  • Each card contains an estimate of the required effort to implement the story. Different teams use different units for their estimates: mandays, hours, “ideal days”, gummibears… I just use a scale from 1-6 “story points

The index cards are easy to lay out on a big table, you get an good overview, it’s easy to move them around. The aim of the game is to define an implementation plan that will generate the highest possible value with the least cost. How do we do this? We already know the cost (albeit in “points”. What’s that in the “real world”?). What is the value of a story? Well, that’s a question for the business people to answer.

Business people have to estimate the potential business value they can gain by putting this story into production use. How do they do that? I use a very simple process, the same one I use to estimate the cost of the story:

  1. Sort all stories from low to high value, by taking them one by one and comparing them with the stories that have already been sorted.
  2. When all stories have been sorted, check if the ordering seems correct.
  3. Give the lowest value story 1 point. Give the highest value story 5-6 points (or whatever maximum you set on value estimations). Don’t use a range that’s too big:
    • It might give an impression of precision where there is none
    • If some stories are really worth 100 times more than others, why are you wasting time on those stories with ludicrously low value?
  4. Group the remaining stories in groups with roughly equal value and give them values between 1 and 5. Each story now has an estimated “business value point“.
  5. Done!

And now planning becomes very easy… Just pick the stories with a good value/cost ratio.

How long does that take? I just did one for a 2-month release with 4 developers and about 30 stories. Estimating costs took two sessions of almost an hour. Estimating value and planning the release took a little over an hour. Let’s say 3-4 hours to estimate and plan a 2-month release. YMMV.

It doesn’t cost a lot of effort to estimate your stories’ business value, but it has some interesting advantages:

  • Planning becomes a lot easier
  • It makes everybody think hard about the value of each story.
    • Some features turn out of to have little or no value. Why should we waste our precious time on them?
    • Some features turn out to have a lot more value than technical people would expect.
  • Tracking value sends a powerful positive message: we are adding value to the organisation. IT is not a bottomless pit where you pour resources in. IT is a system that generates value for a given investment.
  • It clearly delineates the responsibilities of developers and business people
    • The developers are responsible for keeping the cost of the stories low
    • The business people are responsible for finding and selecting high value stories
  • You will know it’s time to stop the project when the added value of the next release is low.

XP 2005 TOC Poster 2

XP2005_TOC_poster2_small This is the output of the second group. The “bottleneck” of this system is easy to spot: everything has to go through 2 people. The stacks of work in front of each person indicates how much work in progress accumulates in front of each resource.
Click to enlarge the image
(picture courtesy of Marc Evers)

Some remarks

The goal of the system is to “add functionality” to an existing system. This functionality creates value only when it’s delivered to the customer. But that seems to take an inordinately long time, as the snoozing customer would indicate.

The bottleneck is the Development Manager (DM), with the Project Manager (PM) as bottleneck-in-waiting. All the work has to go through these two people. In the case of the Development Manager, all work goes through them several times: the DM carefully prepares and assigns the work to the developers, helps them design and develop and then the work has to come back for review(s).

How can we improve this situation?

  • Currently, the PM explains the required functionalities to the DM. The DM then explains the functionalities to the developers. We could exploit the DM by having the PM explain the functionalities to the DM and developers at the same time. This could help break the “barrier” which now exists between business and development.
  • If a few developers have more experience, they could subordinate to the DM by helping other developers and reviewing their code.
  • We could elevate the constraint by hiring someone else to take on some of the duties of the DM or by training the most experienced developer(s) to take on some of the DM work.

However, these interventions might not be easy. It’s a stressful, difficult job, being the bottleneck. But it also make one very important. Having to delegate some of the work might be seen as “not being up to my job” or reduce the bottleneck’s importance.

The “barrier” in the system could be caused by the DM wanting to “shield” the team from the rest of the organisation. This way, the DM controls everything that goes in and out of the team. Some of the TOC interventions might reduce the amount of control the DM has. This too might be a touchy subject.

I do have a question about this diagram. How does the software get from the developers to the end user? We saw that the code goes back to the DM, for review. What happens next? Is there a Q/A procedure? Does the software get packaged, distributed or installed?


On being called a freak

It’s not every day one gets called a freak.

But it’s all in a good cause, including the bullying 🙂

But then, being called a “dude” more than makes up for that. When I grow up, I want to pursue the “Dudist Way”. But first, I have to finish the “Toyota Way“.

But seriously… We need to make an effort to be taken more seriously. All that “freaky”, extreme, surfer-dude stuff is great to attract the “innovators”, the people who are attracted to new, shiny toys. But that phase is over, as Jutta Eckstein said at XP2005.

So, who do we approach now?

  • Project Managers? Yes, but only the ones who have a problem. Those “who don’t have problems” don’t need us, they’re doing fine. Do you know a project manager who has difficulties ascertaining the true state of their project? Who has trouble meeting their deadlines? Who has quality or morale problems? Brittle software? Requirements shifting like sand dunes? Talk to them. Ask them “what’s your worst problem?” See if you can find a potential solution and try it out.
  • IT Managers? Most of those that I meet don’t have any problems. Well, except customers… If we didn’t have those, life would be great. Yes, but the dole pay sucks.
  • IT Architects? They’re too busy inventing Rube Goldberg contraptions in their ivory towers to have problems. No problem, no sale.
  • Marketing Managers? Yes. Talk to them and ask them what they would wish from IT. A way to really steer the content of the software, without spending countless hours listening to technical mumbo-jumbo? A way for customer feedback to be translated quickly in changes to the product? Being able to see and show running, stable systems almost from day one of the project? Who knows, you might be able to grant them one wish…
  • Sales Managers? Yes. Talk to them and ask them what they would wish from IT. Being able to know when the software will be released and what features will be in it, so that they can make reliable promises to their customers? A way to delight their customers by responding rapidly to their wishes and frustrations? Create value by early delivery? Having confidence in the consistent quality of the system? Who knows, you might be able to grant them one wish…
  • Finance Managers? Yes. Talk to them and ask them what they would wish from IT. Would they like to make regular small IT investment decisions instead of pouring sacks of money into mega-projects that (might) deliver a long time in the future? Would they like more insight in the state of the project to make their investment decisions? Would they like to see the system delivered earlier, so that they earn (part of the) value sooner? Would they like better insight in the costs and value generated by projects? Who knows, you might be able to grant them one wish…
  • Human Resource Managers? Yes. Talk to them and ask them what they would wish from IT. A way to keep people motivated and working at their best? A way to build and sustain high-performing teams? Who knows, you might be able to grant them one wish…
  • The CEO? Yes. Talk to them and ask them what they would wish from IT. A way to have IT strategy and execution integrated with the rest of the company’s functions? Integrated and clear investment plans that show how IT delivers value to the company? Reliable execution of the company’s plans? Having a clear insight into the real state of each project and being able to react when new information is gained? An organisation that keeps improving? Who knows, you might be able to grant them one wish…

Do you want an agile business? Agile Software development is not enough.

alladin_and_genie Go out and talk to the business people in your organisation.Which wish will you grant?