In the interview, Initech seemed nice enough. The managers seemed like nice, normal people, and the company’s vibe seemed quite good. When Terrence was extended an offer, he accepted and joined.
Things immediately went south. A major client cancelled after years of mounting frustration with Initech’s software. A major client, and that affected cashflow enough that Initech was forced to downsize.
The hatchet-job on the staff moved a developer named Boris up to the Lead Architect position. Boris was a weird bloke with odd social skills and a big, greasy lollipop head, but the staff whispered in awe of his “legendary” programming skills. As one co-worker explained to Terrance, “Boris knows everything there is to know about software engineering techniques, he just doesn’t bother to use them.” By skipping over trivial steps, like requirements gathering, documentation, and testing, Boris was able to develop new applications very quickly, and that speed was important if Initech was going to start getting clients again.
Boris took the lead on a new project, code-named “Cloudy Viper”. The name was apt, because without any formal requirements or development plan, its intended purpose was quite murky, and it poisoned any developer not named “Boris”. Turnover hit 60% that year, as Boris burned through the development team, churning out terrible, mostly incomprehensible, and untested (and untestable) code. “It’s important we get core feature working,” he explained before passing the code off to junior developers to make production-worthy.
Over time, the product oozed out and was released to multiple clients, for utterly different purposes. A modular or plugin-based architecture would have been perfect, but instead the big ball of mud was given to all of the customers, with no variation. This meant customers who bought a system to manage their ice cream inventory also had tools to herd cats. The user interface was so hacked together and hostile, some screens required users to manually enter their own SQL into a text box.
As Cloudy Viper poisoned developer after developer, it was only a matter of time before Terrance was exposed to the project. Boris handed him thousands of lines of scripts and includes, some with millions of lines of code, strewn like electronic garbage around a senseless directory system, and a single exception handler in the top-level
Main function, which handled all exceptions for the application and would eventually crash the Visual Studio debugger.
One line stuck out to Terrance:
thechkbox = currRating.parentElement.parentElement.parentElement.parentElement.parentElement.parentElement.children(2).children(0).children(0) thechkbox.disabled = false;
The database backend was a classic example of the Inner-Platform Effect, containing tables of tables and tables of fields and tables of datatypes. Terrance began interviewing with other companies, and along the way, met several other people who used to work at Initech.
They all asked the same thing: “Does Boris still work there?”
“He’s the Lead Architect now.”
“I can see why you’re leaving.”