The Five Stages of Programmer Grief
Based on a true story…
Denial
Bug #621311 had been lurking in the backlog for a number of sprints now. Dev was peripherally aware of it - it had come up in an early planning meeting but was tossed aside with some vague hand-waving. Somehow it had crept back in, but no danger; he would make sure it got de-prioritised at once.
You see, Dev was a clever and experienced engineer. Sharp and business savvy, he knew that nothing good could come of this feature. Nobody would use it. It had no business value. Besides, the kanban board was brimming with more lively and interesting problems to solve. Indeed #621311 would simply have to wait for another time.
Anger
The code was much, much worse than Dev had anticipated.
What once was a bubble of headphone-sealed focus had been infiltrated by restlessness and frustration. Fits of ill-formed rants were spewed on seemingly sympathetic colleagues as Dev flicked, most absent-mindedly, between instant messenger, code editor, terminal and various browser tabs. Some of those tabs had been open for days. None of them had anything to do with task at hand.
A dreary Legacy Dungeon, the code twisted and turned and, with each line, Dev was forced to suppress a desperate impulse to do… something else. Anything. Every function reeked of poor design. Every attempted change would cause the whole thing to collapse fantastically. What a waste of time.
Teeth were gnashing. To his colleagues Dev was having a bad day but, in his own fuming mind, it was much worse than that.
Bargaining
That morning’s stand up had been delayed and Dev paused momentarily before accepting the updated calendar invitation. Had he given up too soon? His initial efforts had surfaced several legitimate concerns. With renewed purpose, Dev grabbed a pen and formed a list. It would be an assault of reason, and reason would surely prevail.
The team mates trickled in for the meeting and Dev dutifully waited his turn to make the plea:
“This feature has several issues. The code is extremely complex - it would be faster to rewrite the whole thing. There are a number of pre-existing bugs - shouldn’t these be fixed by our ops team before we pile on yet more features? At the very least, can we drop it into the next sprint? I mean, considering the schedule for our next major release, couldn’t we wait until then do a proper refactor?”
Depression
The business had spoken. Dev meandered back to his workstation and slumped into the cold rigidity of his ergonomic chair. This job could be so cruel. How could they not understand? A lucid, reasoned attempt to save time and money had fallen on ignorant ears.
Meanwhile, quite predictably, the code, had not budged. Worse still, Dev’s superficial efforts at navigating the labyrinth had left him stranded.
“Oh Legacy Dungeon, how can I ever fathom your tangled depths?!”
He was, after all, a complete fraud. An amateur, an impostor. Perhaps he had been luckier in the past but this time everyone would soon know. He was simply not up to the job.
Acceptance
The same night, Dev’s dreams were markedly empty. He awoke feeling not much different to any other day, except for a calm sense of clarity.
That morning headphones were plugged in. Fluttering fingers scurried over they keyboard. Lines of coloured text flashed into existence then - just as rapidly - vanished from sight, only to reappear moments later in perfect realignment. This was work at the speed of thought.
The twists and turns were still there and the code kept on its nagging resistance. Yet the maze was unwinding gently with every passing hour. There was still a way to go - still room for yesterday’s emotions to rise to the surface - and at times they did, disrupting the flow; it was a difficult challenge.
But before the day was up, it was done.