Jun
10

Improving voter throughput pt. 1

Poll Day

Today, Belgians voted for the Federal parliament. This year, for the first time, I was chosen as part of a 5 person team to man the polling station. So, I spent most of Sunday thinking about and implementing process improvement. This Lean and Theory of Constraints stuff is addictive!

Step 1: What is the Goal?

We want to reduce the waiting time, the time people spend in the queue before being able to cast their vote. The queue length is easy to see, that gives us Visual Control.

Step 2: Where is the bottleneck?

Most polling stations use computers, some use paper ballots. The computer-based voting process has the following steps:Voting process 1

  1. Voter presents ID card and their invitation to vote
  2. Team verifies that the voter has come to the correct polling station and that the invitation matches the ID
  3. Team verifies that the voter is on the register and register their presence
  4. Voter receives their voting token, a card with a magnetic stripe
  5. Voter chooses their candidates for the lower House and the Senate (X 5 polling booths)
  6. Voter inserts their voting token (the magnetic strip contains their choice) into a sealed box. The token is validated and counted during insertion.
  7. Team verifies that the voter is on the register and register their presence again, by second person
  8. Voter receives back their ID card and their invitation, now stamped to indicate that they have voted
  9. Voter leaves.

It was quickly apparent that the voting booths (thick red lines) were the bottleneck: we could fill all the booths with voters, everybody on the team had idle periods, even when there was a queue. We had a ‘bottleneck in waiting‘ in step 3 (thin red line): when a lot of people showed up after a slow period (and the booths were empty), voters had to wait for step 3 to get to the booth.

Step 3: exploit the constraint

So, if the booths are the bottleneck, we will improve throughput by exploiting the booths: try to keep the booths filled at all time. As soon as someone left a booth, the next person in line received a voting token and could enter the booth. During busy periods (of course, voters don’t arrive evenly spaced out over the day), when there was a queue, we achieved very high utlization of the constraint resource.

Step 4: subordinate to the constraint

No problem for the team members behind the bottleneck. They could work at a sustainable pace, as people came out of the booths.

The three people performing steps 2-3-4 worked at the rhythm of the booths. A one-person buffer was created before the bottleneck, so that there was always someone ready to enter a vacated booth. Another one-person buffer was created before step 3, the one task that might starve the bottleneck.

The voting computers are not very dependable. They regularly break down, leading to long queues and in a few cases to delays in voting. Another subordination is to have plenty of people on site or on call who can fix the computers. One of the five computers broke down twice during the day. Whenever that happened, queues lengthened, reinforcing our assessment that the voting booths/computers were the bottleneck. These breakdowns accidentally “lowered the water level to expose the rocks“. Luckily, in both cases, the machines were ‘fixed’ (or just rebooted?) quickly.

Fixing quickly is nice; avoiding problems is better. What are the root causes of these breakdowns and installation errors? In one polling station the computers didn’t work, because “the cables were connected incorrectly”. Is there a way to detect this kind of problems quickly (Jidoka) or to avoid wrong connections (Poka-Yoke)?

One-family flow

Voting process 2There are two one-person buffers, before the two bottlenecks. The rest is flow, following the “flow where you can, pull where you must” adage. We found a way to reduce the load on the minor bottleneck by increasing the first buffer to one family. The electoral register is sorted by address. Therefore, it is very easy to check off multiple people living at the same address. Thus, the person performing step 2 takes on a bit more work (not being the bottleneck, there’s capacity to spare): look ahead in the queue so that people living at the same address are presented together for verification. Thus, the buffer before step 3 is family-sized, the buffer before the booths is still one person. With this improvement of step 3 in place, we could fill the booths up more quickly after a lull, and thus bottleneck utilization went up again.

Step 5: elevate the constraint

Most people use the voting computers without problem. I found them to be a little slow. However, some people have trouble using the computers. This is probably the one time in the year that they use a computer. The display tries to mimic the paper and pen-based voting process, but the UNDO and CONFIRM buttons seemed to confuse people: “Why should we confirm our choice? We’ve already made our choice with the pen“. The mixed metaphor confuses: it’s like paper-based voting (mark your choice with the electronic pen), with which voters are familiar, combined with the undo-ability of an electronic form, with which many voters are not familiar. Of course, we couldn’t do any detailed user interaction studies, what with the confidentiality of the vote 🙂

The voting rules were another cause of confusion and questions. You can vote for a party and primary and subordinate candidates. Which options can you combine, which combinations are illegal? Paper-based voting has the same problem. There were explanations in most media before the vote, but I believe a reminder in the polling station would be useful.

Of course, we could always install more booths. That would be expensive and wouldn’t give us much: most of the time there were no queues or queues with only a few people waiting. Waiting time was never more than 5 minutes between entering the polling station and entering the polling booth. I can’t give you exact numbers (only “most”, “some”, “a few”…), because it’s hard to be participant and observer of a process at the same time.

Step 6: And again!

People arrive randomly at the polling station. Very busy moments alternated with idle time. There was no predictable “takt time”. We made good use of this “feature”. During “slow moments”

  • team members took breaks. Because the two sub-groups in the team (before and after the bottleneck) made sure that everybody could perform all the tasks of the subgroups this was never a problem. The other teammembers could still perform all the work, albeit slightly slower.
  • we performed lower-priority “book-keeping” and administration chores.
  • we looked at the process and discussed improvements. And so we kept on improving.

We have applied the Theory of Constraints and a few Lean techniques. Are we satisfied now? No. Lean people are never satisfied! Next time we’ll see more ways to improve voter throughput.

May
05

Je ne suis pas un goulot d’etranglement!

XP Day France 2007 pictures
Here are some pictures of the participants of the “A l’aide mon processus m’étrangle” workshop. As there were only 3 “customers”, each had 8 or 9 ToC consultants to help them. ToC consultants are “cheaper by the dozen”…
TOC at XP day France group 3
TOC at XP day France group 2
TOC at XP day France group 1

Restaurant points

For lunch, we got tickets for the on site self-service restaurant. Each ticket was worth 20 points, which we could spend on food (entrée: 1.5 points, cheese: 2 points, main course: 12 points…) and drink. A planning game at lunch! The coolest part of it was the cashier at the check out: she helped the customers to get the most of their points: “you’ve only spent 16 points, you can get an extra drink or a dessert for that”.

Restaurant ticket

May
04

XP Day France 2007. Day 1

Bottle necks in the morning

I arrived the evening before the conference, to be sure that I was in time for my session, which was scheduled as the first session of the morning. I did the “I’m not a bottleneck! I’m a free man!” for the first time in French. We first played a game to learn how to find the “goulots d’étranglement” the 5 focusing steps to “exploiter le goulot, subordonner au goulot et elever le goulot”. At the “OOMPs” where all session presenters briefly explain what their session is about, I said that the session would include chocolate. That seemed to do the trick, because the session was packed with people.

The participants enjoyed themselves playing the Theory Of Constraints simulation. The goal of the simulation is to build as many as possible pairs of paper hats and boats (Throughput), with the minimum number of pieces of paper (Investment). Our Operating Expenses were quite low: one chocolate per worker. We did two rounds of the simulation. After the first round, the team produced one pair, using 11 pieces of paper. In the second round, after optimizing, they produced a pair again (actually, one and a half pairs, but nearly done doesn’t count) using only 7 pieces of paper. The team worked a lot slower in the second round, because they concentrated on quality.

In the second part of the session, (only) three brave souls came forward to play “customer”. Each got 7 or 8 newly minted “TOC consultants” to help them optimize their process and organisation. The groups struggled a bit to describe and understand the processes, but nobody asked me any questions or asked for help. I think I should have subdivided the session into smaller steps, to force the participants to focus on a small bit of the theory, and provide more examples and structure. Still, I think most participants ended up with a good understanding of ToC and ideas to apply back at work. Pictures of the participants in a future entry.

Stories in the afternoon

SquirrelIn the afternoon, I went to two sessions on user stories and customer collaboration. The first session “Dites-moi, Mr le Client…” was about user stories and the “3 Cs” (Card, Conversation and Confirmation) of customer collaboration.

While we waited for the beamer to work, Francois Beauregard told us the story of the “Squirrel Burger“. The moral of the story being that burger flippers being paid minimum wage are often more professional in dealing with customers that most of us developers.

I think it has a lot do with PROCESS. I define process as “the way we do things around here when we’re under pressure“.

Francois then proceeded to tell us more about user stories. We ended with a (short) exercise where we wrote some stories for an online job site for agile developers and companies.

The session was a bit short to include an activity, but the exercise made me want to write stories again. During next day’s breakfast I wrote a set of stories for the ‘Hourensou’ application. That’s the application that we use for the administration of XP Days Benelux. You’ll see more about that later, because there were some stories like “As a potential XP Day participant I want to register myself and my colleagues online, so that I’m assured of a place before it sells out again.”

The second session treated the subject “How to collaborate with multiple clients?“. Dominic, Nicolas and Virgile set up a situation where there were 11 people around the table to do a planning game: 8 customers, 2 developers and a coach/facilitator. Their goal was to write the stories for a remote pair programming tool. There were two rounds of 30 minutes each. The participants had a lot of trouble to come to a consensus about how to pairprogram and how this translates to a situation where the pair is separated.

Remote pair programming interests me too. I’d like to try it a bit more on a few “after hours projects”. The team that developed the “Sun spots” used remote pair programming (almost) exclusively. Maybe Duncan Pierce can tell more about his experiences? Prod, prod… Wouldn’t that make an interesting XP Day session? Hint, hint…

And relax…

After the sessions we emerged back in the light of a beautiful summer spring day. The sessions rooms were underground, so no natural light during the sessions. To make up for it, we spent enough time outside in the garden/terrace. Conversations and discussions continued over beer, aperitif and dinner, while the presidential debate (“Sarko vs Sego”) raged. I met (again) lots of passionate agilists from France, Luxemburg, Switzerland, Canada and Belgium (!).

Bottles in the night

We ended up in a (typical ?) French bar: the waiter couldn’t remember our order (tip: paper and pencil), he dropped a bottle of water on the table when serving us (it could have been worse: he didn’t drop the beer) and the television alternated between clips from the presidential debate and 80’s MTV videos.

All in all, an interesting and exhausting day. And there was more to come the next day…

Apr
11

XP Day France

The second Paris XP Day will be held on 2-3 May. Last year’s conference was a great success: sold out, lots of interesting sessions (making it difficult to choose the session to go to), meeting French speaking agilists and discussing agile stuff into the night. Not to forget the dinner on a boat cruising down the Seine!

I will host the “I’m not a bottleneck! I’m a free man!” session. In this session, we introduce the 5 focusing steps for process optimization and then apply them to the “real world” work situation of the participants. Now, what’s the french translation of constraint, bottleneck…?

See you there!

Oct
11

Drawing your process. Backwards.

Draw me a process

Rob and I made a small, but useful change to the “I’m not a Bottleneck! I’m a free man!” session at Agile North. During the second half of the session, we ask the participants to draw their process. Many participants have difficulty doing this. Where do you begin? Where do you end? Where are the boundaries? What to include, what to exclude?

At least now we know where to start…

Start at the end

My idea of funWe now tell the participants to start with the customer. Our work only generates “throughput” (value to the company) when the customer pays us in some way for something of value we give them. So, start by drawing the customer.

From the customer, work backwards. What does the customer receive, that they value? A piece of running software? Where does that come from? And so on, up the value stream. We noticed that the participants didn’t get stuck drawing their process. It did take some effort to get started. We are so used to thinking forward. It may take a while before you switch from “The customer gives requirements” to “The customer receives running, valuable features”.

The idea comes from the practice of Lean consultants to walk and map the value stream backwards, from the customer to the source materials. This helps you keep the customer perspective and see opportunities for “Pull” scheduling.

In Will Self’s novel “My idea of fun“, the main character and his evil guru (“The Fat Controller”) take a mental voyage from a cotton shirt they bought, all the way back to the cotton pickers near the Nile. Will Self invented the term “Retroscending” for this exercise. Next time, you think about your software process, try to retroscend.