Here’s how it happens: one day you come back from lunch to find your manager asking “Can we have a quick talk?” Never a good sign, especially when the talk turns out to be: “So…I have some good news. I’ve put you on Project X” and Project X is one that has never managed to go live. Basically, it’s a revolving door in code form, and guess what, you get the next go-round.
If you are on the average-to-pretty decent side of the developer spectrum, it’s very likely this has, or will, happen to you. It’s happened to me. I hadn’t really thought about it for a while, until I happened to read this observation in an article on software costs:
“However, just being associated with a failed system can taint careers and diminish prospects of any employee when applying for a new job.”
If this has happened to you before, your first instinct will be to find a way to keep Project X off of your desk. That first chat with your manager is your best chance of coming up with an excuse. A seasoned developer is going to be well aware of which projects are circling the drain, and have a good excuse to get a pass on it. Whereas, if you’re inexperienced, you may think, “Great, this one is going to put me over the top! Finally they’ll realize what an asset I am!”
If this is the case, most likely you are delusional. Because you can almost guarantee that the first time you crack Project X open and take a gander at some of the more complex pieces of the application, there will be little to no documentation to let you know what is going on. Then you can have a conversation with your manager to figure out the logic behind this atrocity, and he’ll give you an explanation that begins at the dawn of time and ends with more confusion than what you walked in with.
This is when you realize that the only remnants of a person who had a decent idea of how everything worked are the ripped out pieces of hair imbued in the carpet under your new desk. You instinctively follow suit because they must have been onto something.
Fast forward a couple of months. The legacy development techniques are killer, and the constant stream of bug fixes and enhancements coming through the pipeline leaves you no time to do any meaningful rewrites. The result is that, out of necessity, you end up reconciling yourself to outdated coding practices. You become less valuable for future development positions unless you have supernatural abilities for leaving the past behind and starting with a clean slate.
Does that mean that you’re suddenly a Junior Developer again? Will people decide that you don’t deserve your Senior Developer role because you use development practices made famous in the Bronze Age? I guess you’ll just have to find out.
It’s likely one reason you have been tapped is because, for whatever reason, management realizes that you aren’t going to leave the company. Perhaps you are a diehard loyalist (good for them, not so much for you) or are just in a situation that doesn’t give you much flexibility at the moment. So you’re stuck with a moldering project.
It ends up being like that time you ate too many hotdogs at the baseball game and now you don’t like eating or smelling hotdogs. You become jaded to the idea of being a software engineer. The thought of working on another application or for a software company that could have similar issues brings up the familiar nausea associated with hotdogs. Inevitably, the idea that every application might become a horror show like Project X induces apprehension and low morale when you think about future projects. Colors aren’t as bright, food loses its taste, and applications are bug-riddled nightmares that will always end in sadness.
Even worse is somehow succeeding to the point where you end up owning the product. The good news – you’re a senior developer now. The bad news – you missed the train out of this software nightmare and are now in charge of its success or inevitable failure. You can make those changes you were wanting to make for so long because you’re in charge now. You can retool over-architected processes and business rules to be more efficient and performant.
But you won’t. The application has beaten you down long enough for you to know better. You look up from your desk and the only thing remaining from the other developers on your team is the dust silhouette of where they once sat. And the bright-eyed, bushy tailed developer you once were is long gone, replaced by a developer husk smothered by a stack of bugs that towers above your diminished self-esteem and will to work. But at least you have that “Senior” title, right?