Friday, December 25, 2009

Red Flags

During a recent interview, the hiring manager handed me a book called The Toyota Way by Jeffrey Liker. The book presents value as a stream rather than discrete points. Value derives from how much any given step moves you towards the goal. Wasting time faster reduces cost, and doesn't add value.

In Thou Shall Prosper, Rabbi Daniel Lapin highlights the spiritual nature of value. If you put these two together, then we can see that value comes from the spiritual flow of something (parts, information, etc.) from one person to another. People are the most important part of the stream! The greatest gains come from an investment in people. Change people, and the rest follows.

Dr. Liker then explains how Toyota's just in time production. Just in time means making parts just as the next step needs them. You don't build up huge inventories of parts laying around taking up space. So what happens when a machine breaks? The entire production process halts.

Imagine how much that costs? The entire production of a Toyota car stops when a ten cent fuse goes out. The obvious answer, of course, is build up some inventory to keep the rest of the line moving while you fix the errant machine. Obvious, and wrong.

The manager of a Toyota plant has an incentive for preventive maintenance. Something in the electronics blew the fuse. If he just replaces the fuse, that same machine will break down again in a day or two. And it will continue ad infinitum. The cost is down time, parts, and labor every two days for the next three years. That comes to 16,425 minutes.

Now imagine that he spends two hours fixing the broken electronics - eliminating the short. The cost is two hours down time, parts, and labor. That's it. 120 minutes versus 16,425 - which costs less?

Solve the Problem

A huge inventory hides the true cost of the down machine. Just in time forces you to confront the cost face first. In Good to Great, Jim Collins promotes red flags. They signal a problem. And you can't simply dismiss them.

Red flags hurt. Red flags cause pain. Ignoring them costs far more than solving the problem. Just in time creates a red flag. Problems simply can't fester because they'll kill you first. Consequently, you fix them. Even better, you have a measurable way of justifying the right decision. That same red flag hurts your boss too. You help them by solving the problem instead of hiding it.

So how does all of this apply to software development? It's a core tenet of iterative programming. You don't push around an inventory of nuts and bolts. Our inventory is a bit more ephemeral, yet just as real - code. The iterations create red flag moments. When the client says "that wasn't quite what I had in mind," it's a red flag. Plotting progress every day is a red flag.

Iterative development promotes public accountability. Our cost is not in minutes or down time. It's in pride and merit. When a task turns out harder than I expected, that's embarrassing. Red flag. And I don't want it to happen again. The red flag makes me want to fix the problem - otherwise it will happen again.

No comments:

Post a Comment