Kaizen, Maintenance, and the Freelance Web Developer
I first heard about Kaizen in a radio podcast called This American Life. Unlike most of my favourite podcasts, this had nothing to do with Web development, technology, or growing one’s own business. This episode was about a product, specifically the NUMMI, a car produced from a General Motors and Toyota joint venture that could have saved the American car industry but didn’t. Kaizen is loosely translated from both Chinese and Japanese as improvement but I see it as much more than that. It is about progressive improvement and improvement as a process and a strategy.
The principal challenges of web development are time, budget and manpower. Generally speaking when a client hires a sole freelance developer, they do not have unlimited time or an unlimited budget to devote to the project. As a result they have limited manpower. This puts the developer in the awkward position where they must explain to the client that are basically getting what they pay for, that one person can only do so much in a given time. Or they can outsource parts of the project if they find reliable and cheap enough labour but there is no guarantee of quality. Frameworks and plugins can also significantly reduce the amount of work to do but then become dependencies that should also be updated and maintained. The client invariably wants perfection and often doesn’t understand the imposed limitations.
Let’s ignore for a moment the idea that perfection is unobtainable. The world of web development is an ever changing and evolving beast that we can only strive to tame. So even if a developer were to succeed in creating something that was indeed perfect, it would only be perfect for a time. And that time would be fairly short. Fashion is another factor. Today’s trend can look outdated in a year’s time. Or worse it can become ubiquitous. The avant-grade becomes stale very quickly.
The obvious solution here is to have someone perpetually working on the site. Bigger companies have this. There are teams who maintain the old and continue to develop the new, to fight bugs and optimise databases. They have people to take care of social networks and SEO. But what about smaller companies? What about the client whose business is powered by a website and cannot afford a team to update and maintain it? What about the freelance developer who would like to be able to do everything but cannot afford to waste time on anything that is not sufficiently paid? The answer here is maintenance and continuos improvement, or Kaizen.
The term Kaizen is most often used when discussing assembly lines. In the case of the NUMMI, each of the General Motors assembly line workers shadowed a Japanese counterpart and learned to do each of the tasks to the best of their ability at a given time. They were encouraged to ask help from senior members and to stop the line when necessary. The result was a quality product, not just one, but a line of quality products. Although it seems a bit of a stretch, I see several parallels here between building websites and building cars. It is easier as a freelancer to accept the impossibilities of imperfection and to use each site as a new canvas to hopefully build a better product. As we grow in this field there is tendency to look at older work and cringe at the code we wrote or the best practices we neglected to follow even a year ago. Given the time and budget constraints, it is almost impossible to meet one’s own high standards. Things that we mean to fix later pile up, and later often never comes. The site is launched, we are paid, the client is happy and we tell ourselves that those edge cases we meant to plan for but didn’t have time probably won’t happen anyway.
Things change when there is a maintenance contract signed at the onset of the project. We tend to comment our code so we can navigate it later. We repair and refactor it so that it works more flawlessly and we become better acquainted with the code we write. In short, we become accountable. Here another metaphor comes to mind. Our work is nurtured and cared for and not just sent out on its own without a proper upbringing. This is not to give the impression that developers are a ruthless bunch just out to make a living and not caring about the result. I have found the case to be quite the opposite. We are proud parents who want to show off our work and solutions as often as possible. We take pride in perfecting and love problem solving and refactoring. We would love the opportunity to care for and nurture our code but we have to make a living too. We, like the General Motors workers, are happier when producing a quality product.
Maintenance is not a sexy word. I get bored just saying it. As someone who works frequently with WordPress sites, it brings to mind the tedium of creating backups, the clicking of update buttons, and the humdrum of bug hunting in a plugin you didn’t build. The good news here is that a lot of this can be automated. The better known CMS’ all have ways of automating updates. The use of grunt or gulp task runners can also automate these mundane chores. But what if you, fellow developer, could be paid to perfect a site or theme you worked hard on while continuously satisfying the client? What if you, dear client, could count on the site you built to get progressively better, faster, and more efficient? In that case I suppose you could call it Kaizen.