Right at 5:22: Day One at the New Web Dev Job

DevToolsGuy / Friday, July 17, 2015

To break up the usual code-filled technical blogs you see all day, we’ve got something a little different for you today. Our friend Remy Porter from The Daily WTF has written a guest post about the joys of efficiency in coding. You can read more of Remy’s work at The Daily WTF, and you can find him on Twitter too. Enjoy!


“How may I help you?” the receptionist asked.

George introduced himself, and the receptionist nodded. “I’ll get someone out to escort you back,” the receptionist said. He picked up the phone, dialed an extension, waited for a few moments, then hung up. “Sorry, but Dan isn’t in yet. I’m not sure when he will be.”

“Dan?” George asked. “My supervisor is Sally.”

“Sally isn’t with the company anymore. Dan was promoted up to her job.”

George nodded and grabbed a chair while he waited for Dan. The personnel change at least explained the confusion over his start date. The official offer letter came over three months ago, but a week before his original start date, HR called and told him that it was pushed back by a week. A few days later, it became two weeks. Then three. George whiled away the days freelancing and he wasn’t starving for work, but when Initech finally said, “Yes, you can start,” he was happy at the prospect of a steady job.

According to the clock on the wall, Dan rolled in at “5:22”, or “9:10” according to George’s watch. Dan wasn’t ready to get George situated until closer to 10. For the first hour of the day, Dan shouted into his phone. It wasn’t angry shouting; Dan seemed to operate under the impression that telephones weren’t actually connected to anything, and if he wanted to be heard, he had to shout loud enough that his voice could travel to the person on the other end. Everyone within a dozen yards of his office wore headphones while they worked, hoping to drown him out and be able to concentrate.

George couldn’t help but hear the calls. They were all about placating customers. “Yes, yes we’re aware of that bug.” “I’m sorry, but we consider that a low priority bug.” “Yes, I understand that it deleted six years of work, but we still classify that as minor.” “No, sir, I don’t know when exactly it will be fixed. It’s on the road-map.”

When Dan finally made customers less unhappy and finished deafening his neighbors, he called George into his office. In broad tones, he started talking about the job, and what would be expected of George. “I noticed on your resume that you know VB6.”

“Well, I worked with it once, at an old job…”

“Great,” Dan said, his voice rising back up to telephone volume. “Our flagship app is this little gem of VB6 that needs some TLC.”

“But, I was hired to do web development…?”

“Right, but we need you to do this, and you look like a team player. You are a team player, right?”

Well, George was a team player, but he wasn’t exactly comfortable with the sudden job change. He got much less comfortable when Dan issued him a computer that was so old that Indiana Jones wanted to put it in a museum. Until Dan issued it to George, it had been the backup-to-the-backup-test-server, only to be used in emergencies, when the regular test servers were unusable- which apparently was a thing that happened.

George got really uncomfortable when Dan showed him the bug database, which contained 3,800 entries. And his skin was crawling by the time Dan showed him the code: 5,000,000 lines of nonsense.

Still, it was his first day. George couldn’t walk off the job right this instant. According to the clock by the receptionist, it was “5:22”, so he popped out for lunch, and hurried back so quickly that it was still “5:22” when he returned. With a full stomach, he grabbed a bug and dug into the code.

The first step was to give the code a quick compile- which crashed the VB6 IDE. George killed every running task and tried again. Crash. Reboot. Crash. Reboot, prayer, crash. Reboot, prayer, animal sacrifice, the incantation of a series of profanities, and finally it compiled. He launched the compiled program.

It crashed.

Digging into the code didn’t enlighten him. Dozens of developers had plowed through this field many times, and some of them were the special kind of idiot that writes code like this:

Prefs.UpdateCount = Prefs.UpdateCount + 1 If Prefs Is Nothing Then Err.Raise -100, "No Prefs!" End If

Or:

For x in 1 To 100 Exit For Next x

Once he got past the do-nothing, useless, and stupid code, George discovered something much worse. Some of the developers were geniuses - that special kind of genius that can’t actually just write a few lines to load data from a file, but need to create six different custom classes, with twelve levels of indirection, and for whatever reason, needed to spawn a sub-process to run the job.

The very first bug George picked- marked low complexity- was simply something he couldn’t solve. It was a failure to properly load the preferences file, and George couldn’t even find the code that did the reading, let alone what the problem was. Between digging through broken, do-nothing code, conflicting class definitions, and an IDE that crashed just thinking about the project, he was stymied. It also didn’t help that he couldn’t concentrate- Dan spent the afternoon on the phone with customers, and if the volume of his shouts was any indication, they were in Japan.

George had already made up his mind to give notice, but Dan beat him to the punch. He called George into his office. “George, this isn’t working out. We have 3,800 bugs in our database, and if it’s going to take you this long to solve even the simplest one, we really can’t have you on our team. I expected you to patch at least three bugs today, since it’s your first day, I didn’t want to expect too much. But this is unacceptable.”

“Y’know what? That’s fine.” George stood, wiped his hands of the horrible, horrible code he’d just been struggling through, grabbed his things and left. On the way out, he noticed both his watch and the receptionist’s clock agreed: it was 5:22.