Bob the "programmer"

I realize that the preceding may, in fact, make me appear to be a hot-head. In fact, I may be a hot-head. But I think if there’s one thing that we should value, it’s our time. I spent an hour trying to “clear the cache” because he uploaded a file to the wrong directory. Never mind continuous integration, he created a new site on the test server (HTF was anyone supposed to know? WTF?). And then when I’d spent my time figuring all this out, I see that his fix wasn’t to move the link outside of the loop, but to delete the loop. Who thinks that way? I mean, seriously, how could anyone with more than 12 hours experience do that?

And, mind you, there are coding “standards” that include automated tests, defect-tracking, and CI. It’s not like this is the first time he’s heard me get angry at the ‘works fine on my machine’ excuse.

…for sufficiently small values of "programmer"

So we’ve got a page that allows clients to edit email addresses. Turns out that if there are no email addresses associated, the “Add an email” link doesn’t show up. I glance at the page and see that the button is inside the loop that’s iterating over the emails (this is ColdFusion, so what this means is that I see something like: <cfloop query=”emails”>…email output stuff … <a href=”./add_an_email.cfm”>Add an email</a></cfloop> (trying to get this system moved over to REST may be covered in another frustrated blog post at a later date)).

So I ask “Bob” to move the link outside the loop.

Twelve hours later:

Larry: What’s the story?

Bob: Fixed.

Larry: Great! *click* Hey, Bob, I still don’t see the link.

Bob: Yeah, ColdFusion must have the old version cached.

Larry: Really? I thought CF was really good about picking up changes.

Bob: Maybe it has something to do with timezones. I’ve seen it before.

Larry: That just seems incredible. You’re sure you made the change?

Bob: Yeah.

Larry: And you tested it?

Bob: Yeah. Works fine on my machine.

Larry: When you’ve seen it before, how long does it take to come online?

Bob: A day or two

Larry: WHAT? That’s incredible. I had no idea. *speed dial* Hey, Carol, reboot the test server, we need to clear the cache.

Carol: What time is it in Hawaii?

Larry: 8:00 PM. Yeah, I guess it’s kind of late there in New York, huh? *click*

— this morning —

*click*  … pause …

*ftp* … double checking …

*svn checkout* … incredulous review …

Larry: Bob, can I have a word?

Bob: How you doing this morning Larry?

Larry: I’m a little stressed out. Let’s try to establish some common ground. Can you FTP onto the site and confirm that the file there is the old one?

Bob: Why’s there only one file there?

Larry: What are you talking about?

Bob: There’s only one file on the site.

Larry: Um … Do you think it’s possible that you uploaded the file to the wrong directory?

Bob: Let me check.

* 5 minutes pass *

Larry: Bob, why’s it taken you 5 minutes to check out the name of the directory to which you FTPed?

Bob: Checking * 3 minutes * Oh, I see! You expected it in /TestSite. I uploaded it to /TestSite2!

Larry: WTF is /TestSite2? No, don’t answer that. WTF did you mean when you said you tested it?

Bob: Works fine on my machine.

Larry: You’re talking about the version 67 in Subversion? Do you have that open on your machine?

Bob: Hold on

* 5 minutes pass *

Larry: WTF is taking you so long? A Subversion checkout takes 5 seconds!

Bob: Hold on * 1 minute passes* Yeah, got it.

Larry: Did you delete the loop?

Bob: Huh?

Larry: You deleted the loop. It looped over email addresses. Instead of moving the link outside the loop, you just deleted the loop!

Bob: OK

Larry: No, it’s not OK! WTF do you mean OK? Every f***ing [original did not have asterisks] client has more than one email address!

Bob: OK

Larry: STOP SAYING OK! WTF were you thinking? No, don’t answer!!! WTF did you mean by ‘works fine’?

Bob: It worked fine on my machine

Larry: NO IT F***ING DIDN’T! YOU DELETED THE F***ING LOOP!

Bob: I didn’t understand what the page did.

Larry: IT WAS A F*** LOOP! YOU”RE SUPPOSED TO BE A PROFESSIONAL PROGRAMMER! YOU DIDN”T “GET” THAT A LOOP WAS NECESSARY? I GOT CAROL OUT OF BED AT 1 IN THE MORNING AND SPENT AN HOUR BETWEEN LAST NIGHT AND THIS MORNING BECAUSE YOU FTPED YOUR WRONG F*** PAGE TO THE WRONG DIRECTORY!

Bob: Control your temper, man.

*Larry’s brain explodes and he dies*