A long time ago, a developer starting coding up a new project. His name was Frankenstein. He was a clever developer, but not that clever. He wanted to prove how clever he was, that was the first sign he was not all that clever.
He journeyed the vast reaches of the internet. Through StackOverflow, and even the dark reaches of Reddit he journeyed. Cleverer JavaScript he would need for this project. He wanted to impress the others in his Meetup group after all. He found some libraries, he watched a YouTube video, he repeated the lines from the potion that the master had uttered. His Bower.Json file grew larger, he was powerful, the greater his potion, the more drunk with power he became. He could bend JavaScript to his will and he did, the DOM be damned, he was a developer, he could manage this.
As the code grew, he was lead further down the stack, soon he was on the server. The server was easy, he had programmed before. In his journeys he had heard the languages of the foreign masters, their languages with different grammar, different incantations, seemed mysterious, alluring, he could not help himself. Into his text editor, he uttered these languages, mixing them with his own. A Shakespeare of coding he was, he could bend language to his will. His project grew larger, more complex, he stopped understanding all of it, but that was ok, it was on a development server. Nothing bad can happen on the development server, it had served as a mighty cage for his abominations in the past.
Soon his project started doing things that others would call unnatural, the clients however were happy. They did not have a debugger, error reporting was turned off. A true developer never shows his error logs to the clients, lest they ask the mighty code knight to abandon his quest. The beast was contained, it was at home in a dungeon. There was still time to train it, to break it to his will.
Alas a courier arrives to the might developer Frankenstein. The clients for home he began this quest have new requirements, while reasonable, the code monster is not ready for these challenges. The message from his clients show their confidence, they are ready to launch soon. Time is no longer Frankenstein’s friend. He must move faster.
Faster and faster Frankenstein codes. He adds packages, he cowboy codes, not a unit test to be found. His code works, but he is not sure why, the client’s won’t catch on, there is no time. The abomination of code is out of control. He utters the phrase in muted breath as he types “Git Push Origin Master” his monster is now “Master.” All that remains is to deploy, and deploy he does, the clients cheer, the day is saved. His code monster is in production, and his database grows.
Frankenstein is a lazy hero however. Resting on his laurels, he does not nurture the code beast, he allows it to be neglected. Over time this warps the monster, he is subject to outside forces, a version behind, a year behind. Soon Frankenstein’s monster is not his, it belongs to the hackers, to the past. He returns to retrain his monster, but it is too late, the monster no longer answers his call, he forgets the commands to bend it to his will. Frankenstein’s code is on the loose, there is no longer any hope.
He cannot fix the code, for he has not Perl Scripted in 2 years. His shiny JavaScript Framework has lost its luster, abandoned for the new framework du jour. His patrons are angry, their champion has failed them, they now must rely on a monster, that over which no mortal man can reign. Frankenstein retreats, it is not his fault, there was not time, there was not budget. Frankenstein moves to another project, another monster, this time it will be better he tells himself. I am Frankenstein, you are Frankenstein. This time, it will be no different.
photo credit: Frankenstein via photopin (license)