Jidoka is essential

Jidoka

Jidoka is one of the basic elements of the Toyota production System. Jidoka stands for “automation with a human touch” or “autonomation”. The term dates back to the Type-G Toyoda Automatic Loom which automatically stopped when it detected a problem such as thread breakage. That meant that an operator didn’t have to keep watching the machine, but could quickly intervene when one of many looms detected and signalled a problem.

The same principle can be applied to the production line. Whenever a machine or, more likely, an employee detects a problem, they “stop the line” and signal the problem using an “Andon” board. Everybody can see that there’s a problem. The team leader can quickly come and help diagnose the problem and solve it.

The sooner the problem is detected, the easier it is to fix and the smaller the impact.  Thus, one of the important parts of Lean training is to be able to detect problems, raise them quickly, analyse and fix.

Jidoka and software development

Can we apply this production line principle to software development? Of course.

How can we detect problems and defects? One good way is to have a comprehensive suite of unit tests and continuous integration. Whenever we check in, our build server tells us quickly what we’ve broken. The build server serves as our Andon. Patrick Debois has several examples of Andons in his Visu-Wall collection.

Another way is to have a suite of automated functional tests, performance tests, code analysers and other tools that are run by the continuous integration server.

Good testers who are really involved from the start of the project and track the deliverables closely are a great way to implement Jidoka. The really great testers can tell us clearly what goes wrong and how to repeat the problem.

As long as you get fast, high quality feedback that’s something’s wrong, you’re implementing Jidoka.

Jidoka is an attitude

Is that all there is? Of course not. It’s not enough to detect problems, you have to do something about it.

The build broke? I didn’t check anything in, so it’s not my fault.

What do you mean by “It doesn’t work”? It works on my machine!

Who said so? Oh, Bob… He’s so negative, he’ll find fault with everything.

Have you ever heard remarks like that? It’s not enough to detect problems, you have to do something about it. The only correct answer to someone who reports a problem is “Thank you!”. And then your team corrects the problem.

When the problem has been corrected you’ve done half of your job. The other half is asking why your existing Jidoka mechanisms failed to detect that problem in time:

  • Why didn’t any of our developer tests catch the problem in time? How can we improve the tests in that area? Is that a situation that could happen in other parts of our code? Will we detect it there?
  • Why didn’t any of our customer tests catch the problem in time? How can we improve our specifications in that area? Are there other blind spots? How can we improve those specifications?
  • Why wasn’t this case tested? Did we misunderstand what was needed? Didn’t we do what was agreed? Do we risk more of such misunderstandings?

The biggest bottleneck in IT is learning. By reflecting on our problems, we learn to detect issues earlier.

Jidoka requires Transparency, Trust and Collaboration

If Jidoka was just a matter of installing tools and procedures, it would be easy to implement. But it’s surprisingly difficult to implement, because Jidoka requires:

  • To make every problem visible. My pride might be wounded by admitting I made a mistake.
  • To reward people who admit mistakes. Doesn’t that conflict with the Lean idea of “Right First Time”? Shouldn’t we reward only perfect people?
  • To take the time to improve our problem-detecting systems. But there are so many issues to fix and I have so little time!
  • To thank people who make problems visible. Yes, even that curmudgeon who always finds fault with everything. Yes, even that tester who delights in finding “bugs” in my beloved creations.
  • To collaborate as a team to resolve problems quickly and completely. Whoever “caused” or found the problem, our common goal is to create high quality, high value work.

Being really Lean or Agile is hard. Really implementing those Agile Values is hard.

Have you made a problem visible lately?

Have you thanked a tester lately?

Have you improved your Jidoka tools lately?

If not, are you only doing half of your job?

Agile in Paris

Comment appliquer les méthodes agiles dans son équipe

Vous aimeriez appliquer les méthodes agiles. Quelles en sont les éléments fondamentaux ? Comment les appliquer dans votre équipe, sur votre projet ? Comment faire la transition vers les méthodes agiles? Cette formation répond à toutes ces questions. A travers des exercices, des jeux et des simulations vous expérimenterez les techniques agiles. Vous saurez comment, pourquoi et quand les appliquer afin d’améliorer la qualité du résultat et du travail de votre équipe.

Après la soirée Lean à Paris du mois passé, encore une collaboration avec Zenika. En février, avril, juin, septembre et décembre vous pouvez assister à deux jours de cours pour mettre l’agilité en pratique.

Ce cours est basé sur les jeux et sessions que Portia, Vera et moi ont développé et que nous utilisons dans nos missions de coach Agile.

Zenika est un des sponsors des XP Days France, 25-26 Mai à Paris.

A bientôt à Paris, j’espère.

Short English translation

Join me in the Paris training sessions to put Agile into practice. The sessions are based on the games and sessions that Portia, Vera and I have developed and use daily in our Agile coaching work.

Zenika sponsors the XP Days France in Paris on May 25-26. See you there or at one of the training sessions!

Bateaux, chapeaux et chocolats

I’m not a Bottleneck in French

Bruno Orsier describes (in French) how he has run the “I’m not a Bottleneck! I’m a free man!” game. He felt a bit uncomfortable to let his colleagues experience Lean and the Theory of Constraints with such a “silly” game: folding paper boats and hats to earn chocolates. Nevertheless, the session was a great success and he sees how the Theory of Constraints tools can be used in his retrospectives.

He follows up with another blog post about the metrics underlying the game. He applies the Throughput Accounting techniques to compute the ROI in chocolates.

Bruno reflects on the game and wonders about the role of the “Production” player: they redo the test work of the tester and count the number of pairs of hats and boats (throughput). The documentation is not completely clear on the subject. A similar question arose in a previous workshop, but this time about the “Requirements” role. The player in that role didn’t really feel part of the process, as they just hand out pieces of paper and count the pieces of paper (investment).

These two players are supposed to represent the customer. They are at the start and the end of the process, where investment and throughput are measured. They don’t really participate in the process, but they track its progress. The “Production” player tests the output like a customer would acceptance test the output of their supplier. During most of the simulation they don’t have a lot to do. How could they make themselves useful?

Don’t read on if you don’t want to spoil playing the game….

Involving the customer

How could you involve the customer more? Here are a few ways to do it in the game:

  • Unite the two customer representatives, one who defines the requirements and the other who performs acceptance testing.
  • The customer representative(s) examines the process and offers improvement ideas. The other players are much too busy to see anything but their own work.
  • The customer representative can be involved in the work, for example by helping with quality control. I usually add a few poorly cut sheets of paper to the stack of folding paper. The customer can help their team by performing quality control on the paper, rejecting any bad raw material.
  • If the quality that comes out of the team is very high, the customer has more confidence and needs to do less testing, leaving them more time to do more interesting and value-adding work.

How do you involve your customer in your work?

Business Value Game at SPA 2009

Business Value in London

Vera, Portia and I will play the Business Value Game at the annual Software Practice Advancement conference. This year’s edition will be in London from 5 to 8 April 2009.

If you haven’t played it yet, this game lets you play in a team of account managers who have to prioritise a portfolio of projects for their development team. To win, you have to make difficult business decisions:

  • Which project goes first?
  • Do I start many projects at once or do I focus on one project?
  • Do I focus on revenue or customer happiness?
  • Can I afford to lose that customer? Can I afford to keep that customer?
  • Do I invest in process and productivity?
  • How do I deal with variance in performance?

In the beginning, the game is very easy. In each iteration we add another twist so that by the end of the game, the players are juggling loads of projects and customers while dealing with unreliable developers who want new tools. Many developers came out of this game with increased respect for the account and product managers in their company 🙂

It’s instructive and lots of fun. If you don’t believe me, ask Laurent Morisseau and the other participants of Agile Open France.

But in the real world…

Of course, the real world is always a bit more difficult than a simulation. After the game, we run a workshop where the participants look at how they can apply the game’s ideas to a range of circumstances: product development, many small projects, large projects, support and maintenance…

See you there if you want to generate more value.

Good == Agile

Agile ==Good

A developer came up to me and told me something strange was happening to him since he worked in an XP team: he’d started to call everything he liked “Agile”. When he saw something he didn’t like, his first reaction was “but that’s not Agile!

I reassured him that this was just a phase. Soon he would regain his ability to be creative with adjectives.

Isn’t that a good example of how Agile is like a sect that brainwashes its members? Or do we call everything that’s good “Agile” and win every possible argument?

Agile == Professional

Recently, I was asked to explain what “Agile Project Management” means. I said I had no idea. Do you have a good definition of Agile Project Management?

To me, there’s only good or bad project management. Similarly, there’s professional software development or amateurish hacking. You take your pick.

As Dave Nicolette observes,  “Methodologies don’t succeed or fail. People do. If you apply a methodology that doesn’t fit the problem, it won’t help you. If you apply an appropriate methodology for the problem, but you use it poorly, it won’t help you. Either way, the methodology deserves neither the credit for success nor the blame for failure.” A professional team will select the appropriate methodology for the domain and context, implement it professionally and inspect/adapt where necessary.

“Agilest” like Dave Nicolette, Jason Yip, Mike Cottmeyer and I are in violent agreement with Glen Alleman. We’re all on the side of professionalism. Glen thinks we use “Waterfall” as a straw man to show how Agile is better. In Glen’s world, waterfall doesn’t exist and is actually prohibited. Good!

Unfortunately, the waterfall (or the Lean equivalent batch mass-production) mentality is still alive and well in many companies Dave and I encounter. Unfortunately, many people prefer to muddle on (or fail) with the familiar methods.

Which side are you on?

So, let’s forget about the red herring of Waterfall vs Agile vs PMBoK vs CMMi vs PRINCE2 vs…

The real fight is professional vs unprofessional.

Which side are you on?