← Back

The Kaizen programmer

Kaizen applies the logic of small changes to gradually improve software, productivity, and the quality of professional work.

Coaching

Kaizen is a Japanese concept that can be translated as “small change” or “small improvement,” and in that country it is a whole philosophy of work explaining how a prosperous nation devastated by World War II was able to rise again from the 1960s onward until it became once again an economic and technological power.

Kaizen is also a philosophy of life and a wonderful, simple technique for overcoming procrastination, reducing complexity into small, manageable steps, and improving in any aspect you set your mind to.

In software engineering, we talk about the concept of continuous improvement, which can be our practical application of Kaizen. But what exactly should we improve? For what purpose? And above all, how?

I can say that I have practiced Kaizen for years. For example, each chapter or section of the books I publish I approach in blocks of twenty minutes, and in others I review and correct a text I wrote a month ago, then review it again, improve it, and expand it in a series of tasks and iterations that I usually write down in apps like Wunderlist or Evernote.

Although I consider writing and sharing my experience in my books and articles part of my professional work, it is rare for me to be able to dedicate several uninterrupted hours to it in one day or week; for that reason, I force myself to identify tasks that are short to complete. Precisely because of their size and low complexity, I can do them easily and without much effort, and I end up completing them sooner rather than later. This is how I approach most of the work of writing a new book while balancing it with the rest of my professional responsibilities.

Why do I end up doing these mini-tasks? It is not because I work more than anyone else, not at all. It is because I know that most of them take little time and are usually relatively easy to implement. In other words, they are small improvements and small steps in a project like writing this article: Kaizen in its purest form.

If you have not run in years, do not try to go out and run four kilometers on the first day. Better to walk for a while today, then another day, then next week walk a little faster, in two weeks you may be able to jog, and in a month, by introducing small changes in this new basic and simple routine you are building, you will finally be able to run a few hundred meters. Small changes and improvements to tackle something more complex (such as being able to run five kilometers straight without dying trying).

You may wonder what this has to do with developing software…

Kaizen works because it allows us to avoid the self-sabotage of our own mind when we face complex, heavy tasks that require a lot of effort (or that do not especially stimulate or motivate us). Remember: our brain is designed to keep us in a warm comfort zone (safety), and it is afraid of anything that takes us out of it, even though we know that in one way or another, what we want to achieve (that complex task) will require leaving that comfort zone in the form of effort and headaches.

With Kaizen we avoid that primitive self-protection mechanism that often prevents us from improving (or advancing in our projects), and I would even say that it also affects our life goals.

Does Kaizen have anything to do with programming or modernizing that inherited monolithic, ugly, poorly developed application, or advancing a personal project for which you barely have time, or writing those tests that resist?

Yes, and a lot. Because if we face our work that way, even though the tasks seem small, we will go much further, and we can do it by practicing Kaizen: step by step, small task after small task, a tiny improvement here and another there, and when we realize it, after accumulating hundreds of small improvements (or thousands), our application begins to shine, has a better design, and is better structured.

Moreover, if you work on a complex and fragile application, introducing small changes will give you the confidence that if side effects arise, you will detect them quickly and it will also be easier to resolve them.

It is not about working fewer hours, but about doing it more calmly and advancing with greater confidence. As soon as you have to do something that seems “big,” complicated, and even heavy, all you need to do is break it down into small tasks, smaller the better, set a date, and complete them one after the other.

Developing good software requires taking care of many details: two or three small improvements today can mean dozens over just one month and perhaps thousands over any project.

Over time, I dare say that you develop a kind of “Kaizen mindset,” and you begin to use your Wunderlist constantly because you see opportunities to polish this and that everywhere.

Finally, I suspect that it is much more productive to face work through short periods of concentration (as suggested by the pomodoro technique) than to sit in front of the screen for an entire morning without taking your eyes off it, especially when you have to deal, as I do, with tasks of very different natures.

A book I liked a lot about Kaizen: “El método Kaizen”, by Robert Maurer.