Sunday, September 17, 2006

Flow vs. Function

I have written a presentation comparing flow organizations and functional organizations. You can check it out here if you are interested in this sort of thing.

Wednesday, September 06, 2006

Systems Thinking: Five-Why

In the Systems Thinking series of posts (also including Systems Archetype: Shifting the Burden and Systems Archetype: Shifting the Burden to the Intervenor), I try to show the basics of how complex business systems interact. With the systems archetypes, it is possible to find standard solutions to common problems, but there is still a piece missing.

In a specific case, how do you find the root cause to your problem? Have you ever worked in a project, or workplace, where it feels as if you are spending all your time fighting little fires? Usually, all those little fires stem from a few root causes. Unless you want to spend your time fire-fighting, you had better find the root cause of your problems, and deal with that.

There are many methods of finding root causes. One of my favorites, because it is so simple, is Toyota's Five-Why method. The idea is that when you are faced with a problem, you ask why that problem occurred. When you find the thing that caused your problem, you ask why that thing is the way it is. Do this five times, and you will have found a root cause. Fix that problem, and the other problems will never occur again.

There is of course a snag (there always is), when you trace a problem, any problem, back to its source, you will very often find that the root cause is a management policy (or lack of it). This means that solving the problem will involve some effort on the part of the management, sometimes a lot of effort. This is a good opportunity for you to find out whether your managers are leaders, willing to instigate change in the organization by first changing themselves, or if they are just management drones, interested only in maintaining the status quo.

Here is a classic example, originally from a Toyota training manual (though I pinched it from The Toyota Way):

Level of Problem Action

There is a puddle of oil
on the shop floor.
Clean up the oil.
Why? Because the machine is leaking oil. Fix the machine.
Why? Because the gasket has deteriorated. Replace the gasket.
Why? Because we bought gaskets of inferior material. Change the gasket specifications.
Why? Because we got a good deal (price) on those gaskets. Change purchasing policies.
Why? Because the purchasing agent gets evaluated on short term savings. Change the evaluation policy for purchasing agents.

Seems easy, doesn't it? Now let's try it on a software development problem:

Level of Problem Action

The code base smells. Refactor the code.
Why? Most developers did not know how to write good code, and the project managers pushed them to hurry up. Teach the developers Test-Driven Development, and the project managers about agile development methodology.
Why? The developers and project managers where hired from subcontractors, and nobody checked their level of competence. Change hiring practices, and develop a core in-house staff for software development.
Why? Management viewed developers and managers as interchangeable and easily replaceable resources. Teach management about knowledge workers.
Why? Management uses the Scientific Management paradigm. Teach management a better paradigm for software development (agile, lean, TOC).
Why? Management has never heard of, or studied, anything else. Set aside study time for managers. See to it that they practice what they learn.

Piece of cake, wasn't it?

Here's a suggestion: do your own Five-Why analysis of a problem you are facing, or have faced in the past. Publish it on you blog, or in a comment to this post. If you blog about it, tell me. I'll link to your post.

Tuesday, September 05, 2006

Going With the Flow

So, maybe it's not a full month. Then again, I'm not really back. I am writing this in an Internet cafe in Ho Chi Minh City, Vietnam.

If you want to study one-piece-flow, and want to see why moving small batches around is better than lugging large ones, HCMC is the perfect place. The streets here have more traffic than anything I've ever seen. There are very few traffic lights, and driving on the right side of the road is sort of a very loose agreement. Also, the most common vehicles are scooters and light motorcycles. There are 30 million scooters in Vietnam, and by the look of it, most of them drive by my hotel each day. (I'll upload some pictures when I get back.) One would expect the result to be total chaos and confusion. It isn't!

Actually, the traffic flows like nothing you've ever seen (unless you've been here, of course). There are two reasons for this. The first is that though the streets are packed with vehicles, each vehicle is small and manouverable. The second reason is that the drivers drive very softly. They look ahead, and when they see any tendency to congestion they just slow down, or speed up, a bit, and steers gently to one side. The traffic flow rarely stops. There are two main causes of congestion: cars and tourists. Neither is nimble enough to move with the flow of the traffic.

You might think this has got nothing to do with software development, but it does. Speaking in general terms, the streets of HCMC are a business system, and the vehicles are goal units. In Gothenburg, where I live (well, the city closest to where I live), there are traffic lights in every street corner. Those lights regulate the traffic flow by creating batches of vehicles. The result is that when there are a lot of cars in the streets, queues build up. In contrast, here in HCMC, the traffic moves all the time. There are comparatively few queues.

In Theory Of Constraints terminology, there is little build-up of inventory in the HCMC traffic system. Value is added all the time (i.e. the vehicles are moving closer to their destination all the time). In agile development terms, the HCMC traffic flow with small vehicles and no traffic lights corresponds to using small stories instead of large use cases, and short iterations instead of long ones.

What it comes down to, is that it is all about the flow, always.