“Are you Greg?” asked the burly man with a scar from eyebrow to chin. “I’m Mark, your manager.”
Greg’s wait in the lobby ended with a jolt of fear- and possibly a broken bone or two from Mark’s handshake. An awkward elevator ride and brief tour ended at Greg’s cubicle. It was a quad- four workspaces sharing a common center. Two corners were occupied, and Mark positioned Greg at the third.
“You’ll be supporting an internal application called PPP- taking over for Lenny, here.” Mark pointed toward one of the other cube-dwellers. “It already works, you just need to keep it that way. Learn the ropes here, and we’ll get you something newer and more interesting real soon. Lenny! Give Greg the PPP source code and backlog.”
Mark left. Through the entire exchange, no one had acknowledged the third person in the quad, who hadn’t looked up from her screen.
With nothing but smiles, Lenny got Greg into source control and transferred the existing backlog of tickets via email. Scarcely an hour into Day One, Greg’s inbox already begged for death.
“Any documentation?” Greg asked.
Lenny shrugged. “Not really. It transfers data from one inventory tracking program to another. Let me know if you have any questions!”
Greg’s morning coffee churned in his stomach as he opened up the code. He spent a few hours parsing its behavior. The trivial funneling Lenny described went more like this:
- Read a packet off a socket.
- Split the packet up using shifts and masks, stuff the pieces into an object.
- Insert the object into
CustomQueue1.
- A separate thread dequeues
CustomQueue1
and copies each of its fields into a struct, converting the numeric fields to strings. - Insert the struct into
customQueue2
. - Yet another thread removes the struct from
customQueue2
andstrcpy
’s its data into an array of char. At this point, the data should match the original packet data from step (1). - Pass the data on to the next program in the chain, one packet at a time.
For no discernible reason, the data got converted and shuffled, crimped and creased, folded and bent around numerous times. Each step provided plenty of opportunities for mangling and overflow. Greg’s cursory glance revealed a few suspiciously absent bounds checks and at least one obvious race condition. Exceptions were caught, but merely logged- bad data was neither repaired nor excluded. It was assumed that each packet was the same size, would come in perfect and go out the same way, all with flawless timing.
Greg shoved his swivel-chair over to Lenny’s desk, arms folded over his chest. “Is this a joke?”
“I wish it were, man.” Lenny shook his head. “They humped this on me when I was a newbie, and now I pass it on to you. I’ve never been allowed to make the changes needed to sanitize it- as in make it sane. All I can do is force the users to resend their data until this festering pile will parse it.”
“Why no changes?”
Lenny chuckled. “You’d have to ask Mark.”
“Well, what data does the destination app actually need?”
“I don’t know anything about the destination app,” Lenny said.
“Who does?”
“Rashmi.” Lenny tossed his head toward the third person in the shared cube. “You’re not allowed to talk to her, though.”
At the mention of her name, Rashmi looked up briefly, then returned her attention to her computer, annoyed by the distraction.
“You have to pretend there’s a wall here.” Lenny indicated the imaginary barrier with a wave of his arm.
Greg gaped. “Are you serious?”
“Never more serious in my life,” Lenny said. “Rashmi is 150% allocated to thirty other projects. If her boss, Chris, finds out you’re talking to her, Chris will yell at our boss. Believe me, you don’t want that.”
Greg rolled back to his own workstation, frowning in puzzlement, until an idea struck. There was no nameplate on his cubicle yet. He opened up his IM client...
In Mark’s office, Greg delivered his first weekly status report with a sense of righteous purpose. PPP had terrorized generations of new hires, but that would all end here and now, with him. He reported the issues with the code, and how he’d rewritten it to cleanly and safely pass the data on that the downstream program needed. “I’d like to get this into staging, so-”
“What about all the support tickets!” Mark erupted like an overdue volcano. “I don’t want- I can’t have you wasting time on the code. I can’t bill these enhancements back to the business! The code works, you just need to keep it working! Lenny didn’t have a problem with-”
The door flew open. If Mark were a volcano, the small woman fuming in the threshold was the high-pressure, magma-filled planet core. She shook a stack of sheets in her white-knuckled fist: a printed chat log. “WHO IS THIS GREG AND WHY IS HE TALKING TO RASHMI?”
Mark blanched, and sank into his chair. High-temperature fury boiled off of Chris as she delivered a string of threats and ultimatums about what would happen to Mark’s operating budget if he kept trying to poach her resources. Mark sat in silence through the whole thing, the pressure building up behind his walls. Once Chris left, that pressure and fury started rolling downhill, right at Greg.
Several figurative burns later, Greg learned to quit innovating, and simply address support tickets without ever patching the code. The pain didn’t last long. Chris, true to her word, vaporized Mark’s budget. He and his entire team were laid off. Lenny and Greg transitioned to far less dangerous places of employment, and much to their surprise, they were actually allowed to talk to people along the way.