The company I work for has recently started a major LEAN manufacturing initiative. When I first heard about it, I started having flashbacks to the Six Sigma training in me GE days. While the concept of Six Sigma makes sense, the approach that GE took was completely useless.

Fortunately, LEAN thinking actually makes sense to me. The basic philosophy is optimizing what you have by eliminating all forms of waste.


So can LEAN be applied to software? I believe it can be applied in at least two broad categories.

LEAN can be used before you even write your first line of code. You need to ask yourself if it even makes sense to write the code. Software engineers such as myself often see the answer to all problems in code. It's like the saying "if all you have is a hammer, everything looks like a nail".

Instead of writing the software yourself, evaluate if there is an existing product that will accomplish the same goal. If not, try to break the problem down into smaller pieces, and see if there are existing solutions that may eliminate or minimize the number of pieces that need to be built.

Obviously you'll have to weigh the costs of custom code against the costs of integrating a third party product. When doing so, be careful to not simply compare the amount of time coding. Every line of code will need to be debugged, supported, quality checked, version controlled, and successfully be part of your overall solution.

Once you have made the decision about what code you are actually going to write, you have now entered the second category of LEAN software thinking. You now need to optimize the actual development process. There are several methodologies that attempt to use this philosophy, such as Agile programming.

I've ordered a few books from Amazon so that I can more familiarize myself with Agile and LEAN programming thinking. Stay tuned for some more in depth posts.