Awful On Purpose
Studying his new work contract, Stewart felt like he'd found a golden ticket. After 2 long and tedious years in the local university's IT department, he was happy for any opportunity to escape that hellhole. TLA Technologies looked like the Garden of Eden by comparison. Instead of being the only person responsible for anything vaguely computer-related-from putting up websites to plugging in power strips-he'd now be working with a "dynamic team of programmers" in a "rapidly growing company tapping into the web development market". Instead of dealing with tools and languages forgotten by history itself, he'd be using "modern, cutting-edge solutions" under "agile and customer-oriented methodologies". And instead of reporting to a pointy-haired supervisor who couldn't tell a computer from a toaster, he'd be working directly under Dave.
Dave was a large part of why Stewart decided to take the job. Like most small company owners, Dave had taken it upon himself to personally interview the new hire-but unlike many of them, he had enough technical skills to make the interview feel less like a trivia game show and more like a friendly talk between fellow programmers. When Stewart's answers had strayed off the beaten path, Dave had been eager to discuss the solutions instead of just dismissing them, and when Stewart had started asking about the inner workings of the company, it'd been difficult for him to stump Dave with even the most precise questions. He seemed to know what his company was doing and what the coders need to deal with. What more was there to ask for from a boss?
Stewart quickly scribbled his signature on the contract and handed it back to Dave.
"Welcome aboard!" Dave stood and extended his hand to Stewart. "You'll start next Monday."
"Thanks for the opportunity," Stewart replied.
Dave smiled. "Hopefully you'll prove yourself out on the battlefield. If you pull that off, maybe you'll stick around for a while!"
In hindsight, the statement should've tripped an alarm in Stewart's mind, but being overjoyed with the prospect of a real job, he dismissed it as yet another cheerful promise. He left firmly convinced that all that glittered in TLA Technologies was gold.
While Dave hadn't exactly lied, there were a few things he'd neglected to bring up during the interview. For example, when talking about "cutting-edge solutions", he hadn't mentioned TLA Technologies was using all of them. No two applications used the same tech stack. Each used whatever was popular at the time, with languages and databases from completely different ecosystems blended together until they worked. Luckily, Stewart got off easy with an only somewhat bizarre combination of a Node.js service running against a SQL Server database.
The reason lay in what Dave had meant by a "dynamic team of programmers". Out of almost 20 developers, only 2 or 3 had any seniority. The rest were interns and juniors who came and went before anyone even learned their names. There was hardly a week that wasn't marked by desks being emptied, only to be filled by new hires within days. Everyone brought their own favorite technology to the potluck-sometimes introducing it through legitimate channels, sometimes sneaking it into parts of the application that'd be deemed untouchable once the original developer left.
There was exactly one person in the company with enough authority to rein the developers in. Unfortunately, Dave spent most of his hours at water cooler discussions, exchanging the latest IT gossip and encouraging the devs to explore new tools. Occasionally, he retired to his office to explain to one of the people he'd just been chatting up that they were "no longer a good fit for the company".
Stewart restrained himself from asking questions for quite a while, until one day he saw an empty desk a little too close to his own.
"Hi, boss," he said, entering Dave's office. "Do you know where Rob is?"
"Who's Rob?" Dave asked in a dry, uncaring voice, barely looking up from his monitor.
"Um ... Rob the front-end developer? He was supposed to finish a feature by today, and-"
"Oh, that Rob. We had to let him go. He wasn't pulling his weight on the new project."
"What do you mean? He's only been on that project for 2 weeks!" Stewart fought the urge to start shouting. "We'd just started introducing him to the codebase. Surely you don't expect-"
"Look, Stewart." Dave interrupted him again. "When we bring a new developer into a project, even an intern like Rob, the customer expects our performance to grow. They want results, and it's our job to deliver them. Unfortunately, with Rob, the entire team slowed down as soon as he started working. I'm sure you understand why it had to be done."
Stewart understood perfectly. With a polite nod, he scooted back to his desk, thinking about an escape plan.
The days kept passing, and Stewart was still gathering the courage to hand in his notice. In the meantime, he struggled to figure out the twisted logic of the service he was working with; one of the previous developers apparently figured that Unix timestamps made great database primary keys. This worked well in development and crashed hard in production. To "patch" it, at every insert, the application would sneak a blank record in between other requests to lock the row for itself. Once it reserved the row, it would then update it column by column-and with some tables having up to 40 columns, that meant 40 UPDATE queries per record.
It was a bizarre, Goldbergian design. Stewart decided to ask Dave to allow him to refactor it into something sane.
"Yeah, that is terrible," Dave agreed. "Why wouldn't they just use an identity field?"
"Exactly!" Stewart felt like he and Dave were finally on the same page. "It shouldn't take too long to fix, and it would certainly be much better for performance and development."
"But the current code works, doesn't it?"
"Um ... for now it does, yes. But it's already a performance killer, and once more people start using the service, it's going to be much worse."
"They aren't using it now," Dave said. "And the client hasn't complained. As a developer, I understand where you're coming from-but as a company owner, I can't agree to spending time on something that delivers no value."
Stewart's eyes widened in shock. It was a catastrophe waiting to happen. At the current rate, the performance would get unbearable in a matter of months. And Dave was just dismissing it like it was nothing? What had happened to the "customer-oriented" company?
"Besides, this is an opportunity to cash in on our support contract," Dave answered, as if reading Stewart's mind. "That's how it works in this business. If it ain't broke, don't fix it-unless the customer's paying."
"I see," Stewart muttered. As he left Dave's office, he decided to take the advice to heart. Not only was he not going to fix the application, but more importantly, he also wasn't going to spend any more time trying to fix TLA Technologies. He walked towards his desk, unlocked one of the drawers, and pulled out a piece of paper that'd been waiting there for far too long.
[Advertisement] Scale your release pipelines, creating secure, reliable, reusable deployments with one click. Download and learn more today!