After several months of frustration at the day job, I think I've finally started to understand why I'm so disappointed by what I find in the source code of the company's big CMS. At first I thought it was the excessive obfuscation of functions and classes that make understanding an object's true definition rather difficult. Then I started to think it had to do with the hundreds of auto-generated files that were made by some sort of rapid-modelling software I've yet to learn about. Finally I thought the dismay was the result of the friction between the Japanese and German teams that have been working on this software since 2011. All of these certainly play a role in the frustration, but I've come to the realization that my rages against the machine are due to the story the software tells. Or rather … the lack of story.
Earlier today I was having a conversation with my wife, a linguist, about the consequences of languages going extinct. We both see this as a "bad thing", but for different reasons. Reiko sees the disappearance of a language as a lost branch of communication, which makes it difficult to understand how languages have evolved over time to become what they are today. While I agree with this line of reasoning, I see the silencing of a language as the loss of culture and — more importantly — the loss of stories. Theories explain that language was developed primarily to convey information between people, and the most informative of all information usually comes in the form of a story.
Software is usually written in very short-lived languages, and also tells a story to the people who want to better understand the origins and future of a project.
Some of my favourite open-sourced projects all have stories to be told, as do the smaller closed-source tools written for business. Many projects start out the same way, with positive overtures and incredible flexibility. Just about anything is possible with software in the first few dozen iterations. A classic example of this would be RoundCube, a webmail client that hasn't received nearly as much attention as it should have given its lofty goals. Looking through the source, particularly at the oldest files, will reveal the decisions that went into each function, each class, and each bug fix. Even when the code is uncommented, these details can be teased out. Is there drama within the development community? It'll be there in the code. Are there tiny alliances and niche groups? It'll be there in the code. What's coming in future versions of the software? The answer will be right there in the code.
The multi-million dollar CMS at the day job does not tell a story, though. There is no cohesion between the functions. There is no love from the authors. The people working on this project neither believe in its goals nor particularly care what happens in the future because the code does not tell any meaningful story beyond "This is what happens when you use drag-and-drop code-builders" … and that is no more interesting to read than an advertisement for adult diapers.
Luckily the corporate CMS is not something I'm responsible for developing or maintaining, as it seems to be geared towards fulfilling the needs of the few at the expense of the many. And, now that I may have finally come to terms with the 680 megabyte mess that is that system's source code, I hope I can get on with my day with less frustration and disappointment.