Another key Kaizen technique is the customization of tools or even the creation of entirely custom tools. In one of the early posts I wrote about how a Japanese automotive supplier was able to switch parts in injection molding in minutes whereas a similar German supplier needed almost 12 hours. The basic setup they were using was quite similar, but the Japanese supplier had made extensive modifications to the basic injection molding machine. For instance, the die (mold) has to have a certain temperature. The German supplier moved the die over to the machine cold and then had to heat it inside the machine. The Japanese supplier had created a custom tool to pre-heat the die (mold) so that it could be switched into the machine at operating temperature.
This is critical in software development also. There are great tools out there, but none of them will ever give you an optimized process for what you are trying to accomplish. Customization of tools is therefore critical. And this is not a one-off exercise but rather a question of continuously making small improvements. Take version control for example. How do you merge branches? How do you deploy from the repository? These are areas where huge quality improvements can be achieved through customization. For instance, any manual step in the deployment process is a step that introduces the possibility of operator error. Given that almost everyone’s repository layout and deployment infrastructure are different, no tool can automate this out of the box.
In some cases it may even pay off to develop a custom tool from scratch. This tends to be the case when you have identified an improvement opportunity that is particular to your process or business and has a small scope. It’s true that you could sometimes customize a larger tool to meet that need, but that often comes at the cost of having to spend time on figuring out how to get rid of or hide the features of the larger tool that you don’t need. Instead, creating a custom tool in a scripting language can be a much better fit.
I have become so convinced of the importance of this Kaizen technique, that I spend time on this whenever I interview folks for development jobs or meet with development teams from our portfolio companies.