Seven Minutes in Heaven |
Steven quietly bowed his head as the planning meeting began. Their leader, messiah, and prophet was Jack, and todays 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 Heavens 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 wont suffer from the legacy of history. Were making a clean break with the past. Ive already gotten a great start on the project.
Steven didnt groan, but couldnt fully suppress his shudder. Jacks 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, hed wrap a conditional block around it, e.g. if VERSION < 1.2 { doThisDeadThing(); } else { doTheProperThing(); }
Jack also tended to over-engineer… everything.
Jacks great start didnt include any e-commerce functionality, but it included Jacks greatest invention yet- JSQL (Jacks Smart Query Language, or as most people knew it, Job Security Query Language). The language itself was simple: JSON documents, loosely modeled on MongoDBs query language, but without any aggregate functions and broken filtering syntax.
Worse than that, they werent 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 didnt work. After a few weeks getting nowhere with the system, Steve decided to bring it up at the next planning meeting. Weve debugged a hundred issues in the JSQL layer- this week. And its not really getting us anything- most of our data is still relational in nature, were just storing it as documents. We should just switch to a normal database design.
But then, Jack proclaimed, our users wont be able to customize everything!
Do our customers really need to define arbitrary data-structures to represent their products? Couldnt we just give them some metadata tables or something?
Maybe, Jack said, the JSQL layer isnt for you. Perhaps you need to work on HARP. Yes, I think youll work on HARP now. Youre more of a UI person, anyway.
Steven wasnt a UI person, but that was okay, HARP wasnt 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, were making great progress, Jack said.
The CEO nodded sagely, as Jack pointed out the many, many completed tasks on the spreadsheet.
Weve made great progress on nothing, Steven said, hoping the CEO would listen to reason. Were building this framework that solves the wrong problem- our real problem is, how do our customers sell things? Instead, were building our own database engine and writing programming languages!
If we didnt do that, our customers wouldnt 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. Lets go and make the best e-commerce app ever!
Jack didnt take kindly to Stevens heresy. Stevens 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 Jacks 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.
Комментировать | « Пред. запись — К дневнику — След. запись » | Страницы: [1] [Новые] |