Manualization

In order to automate a process, you should first know very well how to do it manually. Only when you have a good understanding of individual steps, inputs, and outputs it's possible to write a computer program or set a production line that automatize the manual work. After hundreds years of automatization, most of our production systems are made automatic and no person fully understands how these systems really work. While some head engineers might know the big picture and some line workers the intricacies of particular work operation, nobody understands all the details of the complete system which makes it close to impossible to replace a production or software system with another system developed from scratch. Only when you try to recreate an existing system you'll understand and appreciate the many little decisions that creators of the original system did in order to make it useful for the end user. Replicating these little details requires ten times more effort than replicating the backbone of the system, and that's what forgotten by people advocating systems' rewrites. At Zemanta we are in the process of repurposing a piece of our system for a different use case. This alternative use case is different enough to warrant development of entirely new system, but not different enough that we couldn't support it using our existing system as we already do. Such situation is very dangerous because it's tempting to either continue abusing existing system by adding more functionality to it supporting the new use case or try to rewrite it from scratch (or trying to do both simultaneously, which is even more dangerous). When thinking about solutions to this thorny problem, I've come to realization that the best way forward seems to be to do something engineers aren't very used to do - to make the system more manual. While traditionally the goal of engineering is to replace work of humans with automated process, it might makes sense sometimes to manualize the process instead to better understand it and make it simpler first, before we start a new round of automatization.