Software Engineering Grief

Human beings resist change. This is not personal opinion, it’s our defense mechanism against uncertainty. If you narrow your target to software engineers and technologists – whom, in almost all cases, are humans – the defense mechanism can become a survival mechanism.

Successful companies rarely rest on their laurels and assume the money will flow in unimpeded by change. Instead, companies constant analyze the current to define their vision for the future:

How do economic and market conditions affect our ability to sell? Would new features or product offerings attract new customers while retaining existing customers? Could we more efficiently increase market share through acquisitions rather than internal product development? Are there partner opportunities beneficial to us? How can we expand the industries in which are products are sold?

And on and on and on, answering the questions lead to devisions about company direction which leads to change: a fast-growing product gets additional resources while a stagnant product is starved or event killed; a nascent market receives R&D funding while expanding an existing market does not. Decisions made well above my pay grade, decisions which make or break senior leaders. Regardless, change is constant.

Change is the one constant in software engineering: programing languages, tech stacks, database types, deployment models, user interfaces, integration patterns, security requirements, process and methodology. What else has changed in your technology career? Eventually your day-to-day work is affected and then what? You’re human so of course you push back.

While change may be better for all involve, rarely does it go smoothly.

Stages

Disregard

Anyone who has written software professionally for a reasonable period has likely suffered through experienced at least one change cycle which may impact how software solutions are designed and implemented. Some are good changes, some are bad, but you don’t know about this one.

It often starts as vague rumors and whispers in the wind that something is being discussed, rumors which may disappear as fast as they appeared in the first place. You hope assume that the talk is scuttlebutt that, for now, is not worth wasting the mental effort to worry about it – especially if you can’t control it – so you decide to keep your head down and continue work on your current assignments. If can’t exist if you ignore it, right?

Deny

The rumors continue and intensify, acquiring a level of specificity that makes the rumors more tangible than your run-of-the-mill rumor, and definitely more tangible than you want to admit. You comfort yourself by believing it won’t impact you, your product, your deliverables because, of course, you’re not the one spreading the rumors. It’s Team X’s fault, why did they make that promise?!? You continue to keep your head down and work on your current assignments, having created your stock answers to reduce the chatter …. assuming anyone’s interested in your opinion in the first place.

Be Angry

The rumors can no longer be denied, and in fact it directly impacts you: your product, your technology, your design, your processes, whatever. It’s become personal and you’ve become the senior citizens admonishing teenagers to get off your lawn: I’ve been writing software this ways for 200 years and you can’t make me change! Unfortunately for you, they can make changes without your agreement, understanding, or approval. You either accept that change is occurring or get shown the door. You’re boxed into a corner, making you even more angry.

Negotiate

After further discussions and exploration, you’ve finally admitted – to yourself, your peers, your leadership – that something o going to change. As now is not the time to change employers, you become negotiator-in-chief, attempting to mitigate the overall impact or, more importantly, the overall impact on you.

Your first concession is accept change to the low-hanging fruit and anything else you find uninteresting, making it appear you’re on-board. Next you’ll offer alternatives to the most onerous or disagreeable (to you) changes in an attempt to soften the impact (to you). Though others may believe you are on-board, you are in fact probing to see where your able to influence the decisions into something more agreeable (to you).

Accept Change

Despite your best efforts to soften the changes, you’ve lost the battle. Even worse, the final agreed-upon changes are even more pervasive and intrusive than feared, and your day-to-day work is substantially changing with a likely impact on your productivity. This does not imply that you’re happy about it, but leadership has the petal-to-the-metal and your ride is just beginning. Bummed but life goes on.

Internalize

It’s time to take a deep breath and move on. You incorporate the change into your daily work, you start to understand and admit the benefits. Publicly you haven’t conceded that change was necessary – it’s still possible that someone will see the errors in their ways – but you are looking forward and no longer reminiscing nostalgically about how things were. It’s time to become part of the solution instead of being the problem child.

Advocate

Over a period of time – weeks or months, sprints or releases – you finally grok the overall benefits to your organization. Not only are you on-board, you are key to explaining and promoting the benefits to your team and anyone else who will listen. New products, faster time-to-market, increased code quality, fewer customer support issues, better data, and in general a reimagined organization. You no longer think about what you’re doing or why, it just is ….ideal until the next change cycle!

So Now What?

Many of you have experienced at least some levels of grief when your organization proposes change which appears to be unnecessary, non-sensical, out-of-character, or just outright wrong, but nothing apparently can cause leadership to pause and reconsider. The decision has been made, go forward and execute. I’ve been there more times than I’d like to admit.

As your career advances, as you are better able to present counter arguments to the proposed changes, you may be able to at least somewhat adjust how the changes impact the engineering staff. That said, some decisions are immutable, no matter how bad they appear to the minions, the only choice is to become a senior leader and have a (remote) seat at the table. And even then, your influence might be neglible.

The choices of last resorts are either to shut-the-fuck-up or find a new job.

Image Credits