Wednesday, June 13, 2007

Cost Accounting, Lean Manufacturing and the Craftsman Within

InfoQ asks the question Does Cost Accounting Cause Crappy Code? They reference a series of posts by Henrik Mårtensson and point out other ways that the Theory of Constraints and Lean Manufacturing have affected recent thinking about software development.

Jason Yip is an Aussie a Canuck with interesting views on how lean manufacturing thinking (specifically Toyota's version of it) can help us better understand software development. Norman Bodek has said that traditional accounting systems form one of the challenges for successful lean manufacturing:
The real challenge for us in America is both an accounting problem, the measuring system which puts pressures on management is in the opposite direction of lean, and how we develop people. In our measurement system, inventory is very powerful metric for managers. Managers know at the end of every quarter, especially if they’re a public company, they have to produce as much inventory as possible. I don’t even have to sell it!
Moving away from cost accounting is a hard sell with management (after all that's what their degrees and MBAs taught them to manage), but I've been delving into Software Craftsmanship: A New Imperative by Pete McBreen and it makes the point that software development is more successfully dealt with as craftsmanship than engineering. One of he key points that I've picked up in my reading around lean manufacturing is that it often does not work in the West because we treat it as an exercise in systems development, or engineering, when in reality it is an extension of the well-developed Japanese approach to excellent craftsmanship ... and lifelong employment with the one company, which makes the enhancing of the employee's skills an exercise in capital improvement. Norman puts it this way:
We [Americans] look at people as if they’re expendable. Toyota develops people and teaches them skills, they realize long term success comes from building up peoples’ skills. We say people are our most important asset, but we don’t mean it.
Now I know that most managers would probably chime in at this point to ask where loyalty to the company has gone - because many well-trained people move on to other companies, taking their skills with them. Pete McBreen addresses this issue by making self-development the responsibility of the craftsman themselves - the only responsibility the company has is to value master craftsmen differently from journeymen or apprentices. The "software development is like movie making" meme (see Scott Berkun, Mike Cannon-Brookes and David Friedman at Inc [from 1995!]) gives us a clue as to how this might be handled, with masters bringing their own apprentices and journeymen onto projects they are hired for.

I was lucky enough to have a master craftsman, Richard Jowsey, for the first two years of my professional life as a developer. Whilst Richard was ostensibly on the project to teach us Omnis7, he taught me far more about how to write code, make it maintainable and how to design systems, especially usable ones. Funnily enough he had a patchwork background with a chemistry degree, followed by a stint as a jeweller, travelling extensively, then a psychology degree and practising as one, before buying his first Apple Mac and getting sucked into writing code for his practice ... followed by a long history of software projects (the last I heard he was running Death2Spam).

Richard's depth of personal and life experience, (obviously) keen mind and relentless drive to enjoy life infected me and gave me the first glimpse of the joy to be hand when working towards excellence in a creative field like software development. The two years that followed taught me how to run a team for a large consulting organisation, but they leached the joy out of my work and led me to strike out on my own with my first company to do web development. It is only now, years later, that I appreciate how much Richard taught me about software craftsmanship. When I challenge myself to walk The Long Road it is encouraging to see what I do as craftsmanship rather than just becoming a bigger cog in the software factory.


  1. I'm actually a Canadian that happens to currently live in Sydney.

  2. Oops ... my apologies.