Seven Minutes in Heaven
Steven quietly bowed his head as the planning meeting began. Their leader, messiah, and prophet was Jack, and today's sermon was was the promise of Heaven- Heaven being the codename of their ground-up rewrite of their e-commerce solution.
Jack sat at the head of the table, in front of the projection screen. Behind him glowed the Spreadsheet of Pending Tasks, and the cells surrounded his head like rectangular halos. His eyes glowed with the power of his vision. "In Heaven, our customers will be able to customize everything. Everything!"
Jack had lead the development on Heaven's predecessor. Like Heaven, it was endlessly customizable. It was also slow, buggy, impossible to maintain, utterly incomprehensible, and tied to a deceased proprietary technology stack. Jack had climbed the mountain and brought back word from management: a total rewrite.
"We made some mistakes in our last version," Jack admitted, "but this new version won't suffer from the legacy of history. We're making a clean break with the past. I've already gotten a great start on the project."
Steven didn't groan, but couldn't fully suppress his shudder. Jack's coding style had a lot of quirks, but his worst quirk was that he never deleted a line of code. If a line of code were no longer used, he'd wrap a conditional block around it, e.g. if VERSION < 1.2 { doThisDeadThing(); } else { doTheProperThing(); } Jack also tended to over-engineer" everything.
Jack's great start didn't include any e-commerce functionality, but it included Jack's greatest invention yet- JSQL (Jack's Smart Query Language, or as most people knew it, Job Security Query Language). The language itself was simple: JSON documents, loosely modeled on MongoDB's query language, but without any aggregate functions and broken filtering syntax.
Worse than that, they weren't really using a NoSQL database. Jack had read that NoSQL was highly customizable, and decided to implement his own NoSQL database" on top of MySQL. This mostly meant a table with the columns: PK_ID, KEY, VALUE, PARENT_ID. PARENT_ID, of course, was a foreign key back to PK_ID, which allowed him to build arbitrary document structures if you nested the relationships deeply enough.
It was ugly, it was slow, and it didn't work. After a few weeks getting nowhere with the system, Steve decided to bring it up at the next planning meeting. "We've debugged a hundred issues in the JSQL layer- this week. And it's not really getting us anything- most of our data is still relational in nature, we're just storing it as documents. We should just switch to a normal database design."
"But then," Jack proclaimed, "our users won't be able to customize everything!"
"Do our customers really need to define arbitrary data-structures to represent their products? Couldn't we just give them some metadata tables or something?"
"Maybe," Jack said, "the JSQL layer isn't for you. Perhaps you need to work on HARP. Yes, I think you'll work on HARP now. You're more of a UI person, anyway."
Steven wasn't a UI person, but that was okay, HARP wasn't the UI layer.The Heavenly Application Rendering Platform "simplified" user interface development. Like JSQL, it was its own language, a declarative language that mixed presentation and behavior into the same big ball of mud, then shoved that ball of mud against the rest of the application code until bits of it leaked over everything. Changes to HARP could successfully break JSQL. Steven found this out when he broke JSQL repeatedly.
The project ground on, weeks turned to months, months to more months, and after nearly a year of work, the application had exactly zero e-commerce functionality. Steven had tried to sneak some in when Jack forgot to assign him tasks on building their Inner-Platform, but Jack broke the functionality when he completely re-wrote HARP over one weekend.
This lack of progress got the attention of the CEO, who rounded Jack and the project team up for a meeting to identify the problem. Jack once again took a seat at the head of the table, with his Spreadsheet of Pending Tasks giving him the managerial aura he wanted to project. "As you can see from the burndown, we're making great progress," Jack said.
The CEO nodded sagely, as Jack pointed out the many, many completed tasks on the spreadsheet.
"We've made great progress on nothing," Steven said, hoping the CEO would listen to reason. "We're building this framework that solves the wrong problem- our real problem is, 'how do our customers sell things?' Instead, we're building our own database engine and writing programming languages!"
"If we didn't do that, our customers wouldn't be able to program their own stores," Jack said.
"Why would they want to? Making everything customizable just gives our users more ways to break everything. What business wants to program their own storefront? They want to buy something ready to go and tweak the look and feel!"
"Our users should be able to customize everything," Jack said.
The CEO nodded sagely. "Yes, I like the idea of everything being customizable. That sounds great, guys. Let's go and make the best e-commerce app ever!"
Jack didn't take kindly to Steven's heresy. Steven's eternal punishment (or, at least his punishment until he found a new job) was the Sisyphean task of trying to roll e-commerce functionality into Heaven, only to have Jack's every check-in break his changes entirely. By the time Steven left for greener pastures, Heaven still had no core functionality, but had grown an impressively bloated database engine.