To the tune of "You can't always get what you want"
This is a true story. The events described in this post took place in Minnesota in 2016. At the request of the survivors, the names have been changed. Out of respect for the dead, the rest has been told exactly as it occurred.
From time to time, I see posts about how junior developers need mentors - senior developers that can teach them how to do proper development by example. That's not what I got when I entered the IT world a couple of years ago.
I had the opposite experience.
For one of the first projects in my career (this was a few years back), I was asked to temporarily join a team that was lacking the manpower to deliver a product before a deadline. The team was great, but the product was shit. To be honest, this was pretty typical of the company I worked for at the time. In hindsight, maybe this should have been a red flag.
Jeff had something like 10-15 years of Java experience under his belt. He was the kind of guy who'd find a cool new technology and jump on it in the blink of an eye. A couple of months before I joined the team he switched the build tool for the whole project to something more modern. Jeff also loved to socialise - he'd write
"hello, friend" to me on slack in the morning for some chit-chat. Both these things made me look up to him when I first joined.
I was wrong.
You might know this type of developer: the code he writes for the company, as part of a team, does not belong to the company, nor to the team. It belongs to him. If someone changes it - that's a declaration of war. It's a message:
"Your code was not good enough" or maybe
"We don't respect you as a developer". Changing requirements, a bug that needs to be fixed, none of that matters. What matters is that someone tried to encroach on his territory and must now be made an example of.
That was Jeff.
I'd experienced it a few times. The straw that broke the camel's back was this one time when he had the nerve to tell me what he expected me not to work on. So I escalated it to the manager. Things were more peaceful after that.
Sadly, the other issue was that the messages that Jeff was likely receiving in his head were actually true. His code was not good enough. I definitely didn't respect him as a developer. At best, what he wrote was messy and unintelligible. He'd mess up on java basics. He'd write generic classes that could not be used generically. He'd start using a framework that the rest of the team had no experience in and would still somehow manage to be the person with the least understanding of it.
Code review was a pain. At the time, I was still clearly a junior, and yet I was thrown into a situation where I was the one schooling the supposedly senior employee. I remember one particular pull request where for one whole week I'd just check the latest commit every two hours to see if Jeff had finally removed the thread safety issue I had pointed out previously - just to see that he had added another one. At one point I had lowered the bar to the level where ugly and barely functioning but without any glaring race conditions was enough to approve the guy's work because the team had deadlines to meet and it had become all too clear that Jeff simply couldn't do any better.
A team was pushing out shit because the senior was incompetent and the junior (who has at this point fallen into the role of quality gatekeeper out of necessity) was not capable of stopping him. It seemed like the world had turned on it's head.