2008-06-23

Vendetta

Yesterday, my boss noticed that I have already (6 months into the job) accumulated at least a years' worth of future work in trac tickets under my name. And he helpfully suggested maybe we could reassign a few to someone else. So I helped with the triage, right up until we got to #178. He suggested we give it to Mr. Black, and at that moment my head started spinning around, green foam spraying out of my nose and mouth (this was over IM; I used the old-fashioned emoticon *@#$*$@#*%! to convey my feelings).

"THAT ONE'S MINE!" was the best I could do to justify my response.

Funny, that #178. I filed it myself, assigned it to myself with no milestone or schedule, and didn't cc anyone on the ticket. The comments tell a story: under some conditions, a seemingly simple operation may take several minutes to complete, here's a brief outline of how to reproduce, how to avoid, where to find the brain dead code, some notes on the character flaws that would lead someone to write code that stupid, and where to find the (retired) author should the need arize to brutally murder him. Though #178 is tagged as a defect, it's a completely internal defect -- only other developers will ever be harmed, and only under very limited circumstances. And worse, I figure it'll take 5-6 days of effort to fix. I know there's basically no chance, given the workload and time pressure, that it will end up on the official schedule.

So my boss, ever helpful, heard all that and suggested just resolving the ticket into the 'wontfix' state. And again, I bent berzerk.

Have you seen "Kill Bill"? Suggesting that I 'wontfix' #178 was like suggesting to Uma Thurman's character that she turn the other cheek. "What Would Jesus Do?" says my boss. Whack, there goes his arm. Suggesting that we assign it to Mr. Black was, I believe, the equivalent of saying to her: "Why don't you hire a real hit man to get Bill for you?" Arterial spray everywhere!

I know #178 isn't the only ticket in the world that has this personal revenge characteristic. I carried one around for 6 years at a previous job, titled "majorshano must die". Time estimate: 4 weeks. And it will haunt me to my grave. (maybe I still have a copy of that code around somewhere... if I ever have a few spare weeks...) People kept trying to close it on the basis that after 4 years, it was probably never going to be fixed. And I would violently reopen it, assigned to myself, and show it to new hires when they stumbled over the code. "We know this is a nightmare," the ticket reassures them, "but here's the history..."

Let me tell you about majorshano. I found it a few months into the job. Buried deep under layers of aging enterprise middleware framework and custom C code, I found an ancient (perl 4 era) hacked up version of 'majordomo', in a 90k file called 'majorshano.pl', which had been wired in via an embedded perl interpreter (and called back out into the C middleware via buggy, hand-written XS code). The only good that ever came of majorshano is that it inspired me to write this.

I've had other revenge tickets that actually got fixed, because they had customer-facing implications. And the satisfaction I felt when obliterating those nasty chunks of code from their obfuscated hidey-holes is the same I imagine the heroic samurai feels when he finally drives his katana into guts of the evil ninja who murdered his master-slash-father-figure, and watches the shock of recognition as the life drains out of his eyes. "Hello. My name is dlowe. You killed my father. Prepare to die."

At my current work, this led to the addition of a new ticket type: Vendetta. Now my superiors and peers know what they're dealing with when they look at #178. Want to make me foam at the mouth? Close it or gaffle it. Want to secure my fanatical loyalty? Put it on the schedule (and try to keep people out of the blast radius.)

I know I'm not alone. Whether they keep them in the official tracking system or not, I'm convinced every programmer on every serious project has at least one piece of code that makes them completely, irrationally, overwhelmingly angry. It's not professional, it's personal. And makes good stories... want to tell me about yours?