Death march, death march is no fun...
Death march, death march hurts everyone. For the uninitiated, Wikipedia defines a death march as:
In project management, a death march is a project where the members feel it is destined to fail, or requires a stretch of unsustainable overwork. The general feel of the project reflects that of an actual death march because the members of the project are forced to continue the project by their superiors against their better judgment.
My team is on a death march right now. This project is destined to succeed because we won’t let it fail. However, we’re in a stretch of unsustainable work.
What does unsustainable mean?
A software engineering job is pretty cushy - nice Aeron chairs (unless you have one of those treadmill desks), incredibly forgiving of mistakes, and of course:
So how could this wonderland become unsustainable? During a death march, you do too much of a good thing. Those Aeron chairs that once caressed your back become the bowl, in which your body melts, due to lack of exercise. All those mistakes that were forgiven get forgiven at an even higher rate until your stuck in a web of bad coding decisions that you have to untangle at 4am before launch. Contrary to most manager’s beliefs, pizza should not be injected directly into your veins to keep you working at full strength.
As we pile up the hours, moving way too fast, and giving less fucks than George W., our foundation - codebase, minds, bodies, etc - erodes. No software engineering team can move at the pace management wants if it’s base is not strong.
How did we get here?
If you ask most developers, the answer is “I don’t know.” As individual contributors, we don’t have the organizational scope to understand the root cause. In a word, the cause is mismanagement. The only difference between death marches is where did that mismanagement happen - direct manager, middle management, or all the way from on high. Wherever it happens, there was a failure to manage resources, prevent scope creep, or sufficiently manage risks.
Who does the death march hurt?
Developers - I’m delirious and run down as I write this. Sleep and life deprivation are slowly eroding my mind and body. My soul still good though.
Everyone around developer - all the people around you get an out of shape, unintelligible, irritable version of you. When you were supposed to tell someone “I love you” or “Oh how was your day?” you say, “I hate pepperoni!” or “the cotdam servers are down again, brb”
Management - Loses respect from individual contributors. Management has some degree of control of my most valuable resource - time. When management fails to protect my time, I begin to question it’s capabilities.
Product/Code - Death marches are hotbeds for bad decisions. While the features will be “completed,” a few important edge cases get forgotten. For hyperbole sake, imagine we’re rushing to complete our company’s subscription flow and miss that edge case where the user is charged 10 times for 1 subscription. Whoops.
How do we prevent it next time?
Death marches aren’t always preventable but many of them are. In the moment, it’s hard to see that “it’s just how these things go” isn’t actually why the death march happened.
Management has to do a better job of assessing risk and pushing back on unreasonable requests. It should also take periods of down time to build infrastructure to prepare for any unforeseen insanity.
Developers need to hold management accountable to effectively protect our time. We need to snap out of accepting the timeless phrase "Shit rolls, piss trickles". We should never feel ashamed to question why we’re not sleeping, working on weekends, missing life events, etc. We need to guard our discretionary time at all costs because what we do in that time makes us who we are.
Does anything good come out of a death march?
Yup. Bonding. Shared suffering builds strong bonds.
How do I have time to write this?
I don’t. I’m late for work.
Planning a vacation.