Eliminating Software Waste with Kaizen
For the uninitiated, Kaizen is a Japanese word meaning "change for the better" or "improvement." The two parts of the word, which are displayed in the picture, translate into "change" and "good." Kaizen has a similar focus to Agile. It's a philosophy that continuously focuses on daily process improvement. It falls under the Lean methodology and was spawned from the necessity to increase manufacturing efficiencies. The goal of Kaizen is to humanize the workplace, eliminate difficult work, eliminate waste in process, identify areas of improvement, and experiment with solutions to problems. Eliminating waste and increasing efficiency seems like a no-brainer to even the most uninitiated, but this is not as easy as it sounds. It opens many questions, regarding such things as where to start and what to look for.
Before starting down the road of Kaizen, it's important to understand the guidelines or ground rules: Do not accept there is only one way to solve a problem. Make sure all improvements can or will be measured. Reject the notion that "there is no more room for improvement." Gracefully accept the current situation while working toward a goal. Focus on the problems and not the people. Do not judge, criticize, or blame others. Work as a team to find solutions, not as islands.
An easy way to start Kaizen is to look for excesses. Ask any software developer and he/she can undoubtedly rattle off a few items at will. This can be anything from too much code to deployment difficulties to cumbersome inter-department processes. Digging into excess will naturally lead into the review of unproductive areas as well. This should include a review of the meetings held at a company. It's common for companies to accidentally become addicted to meetings. Lengthy compile times, unnecessary deployment procedures, difficult products to support, complicated bug/defect processes, and analysis paralysis are just a small sample of areas where individuals struggle to achieve high levels of productivity.
A successful implementation of Kaizen includes continuous review and repetition of the evaluation process. Most development teams already have a variety of reviews in place. Root cause analysis reports, holding retrospective or post-mortem meetings, and completing code reviews are all areas of continuous evaluation and improvement. Here are a few other areas to place under consideration: periodic review of development efforts, continuous tracking of technical debt, and introducing 20% time to encourage innovation (which can lead to process improvements).
The goal of Kaizen is to eliminate waste, but this may not translate into eliminating a problem all together. Each area should be evaluated based on the value it creates. If unproductive areas are found they should be reduced and/or removed. In business, distractions are a daily occurrence. For Kaizen to take hold and flourish everyone must internalize the concepts and learn to avoid the compromising strain brought on by deadlines and other pressures.