If all the people who care about a problem leave, it becomes harder for the organisation to solve the problem. This is one form of organisational rot.
Most of us are good at one and bad at the other. Eg, my instinctive response has been to quit my job when I’m not enjoying it. And that’s fine, but some of the situations were almost certainly salvageable. And I could have helped. Some people try to fix a workplace indefinitely, even to their own detriment, and even when the situation is probably impossible to fix and they should just get out of there.
I think it’s really important to learn both skills. And remind myself when I’m stressed that they’re both options.
The important thing to realize is that bad developers who are kept around tend to survive because they're well liked by people who make the decisions. If you raise concerns about their performance then you're picking a fight that you can very quickly lose. I've seen people get hung out to dry when they escalate concerns about people like that, and even if they were right it still leaves them in a much worse position for their next job hunt.
In most cases I'd tend to agree with OP that the right move for an employee in that situation is to lay low and start looking. If the situation isn't yet completely unbearable there's no need to just hand in your two weeks' notice, but it's worth looking for the exits.
The reality is many direct managers have little visibility into their reports day-to-day work because they are not hands-on enough. They should be checking the work product. Example: They should at least be looking at PRs and even participating in code reviews themselves. If you proposed this to some "engineering managers" I am familiar with, they would say this is not their job and you are crazy for even mentioning it. (I'd tell them I disagree about that, too.) This is why coworkers need to escalate performance problems: because many of the people making decisions do not know what is going on.
Hear me out.
You're going to then publicly embarrass another co worker. Not a good idea.
I need to clarify though, there's a difference between functional code that could have been written better, and code which does nothing at all .
I was at a company where three or four people literally were writing code that did nothing but was appearing to function correctly. Imagine an API that checks the status of another service, and you just code it to always return 200.
Instead of trying to save an organization from itself, you can just go somewhere else. I did so and I got like a $30,000 raise.
The code aspect is all shades of gray. I've seen code that "functions" but has such unacceptable levels of performance, quality, duplication, security problems, etc. that it would barely qualify as "working" and certainly not maintainable. You can't polish a turd.
Then when I complain later my manager was like, even though the code doesn't do anything it makes our metrics look better.
Imagine seeing
function1(){ ApiCall("1") }
function2(){ ApiCall("2) }
Over and over again.
I'm not trying to change the world, I'm trying to make money so I can save and retire preferably before I turn 50.
If I've learned anything about life is that you need to pick what battles you want to fight.
If option A is argue with numerous people and openly expose multiple layers of incompetence, to the point where my manager and my coworkers are going to hate me .
Compared to, option B , keeping my head down until I can jump ship and then hoping the next place isn't as bad.
I'm picking B.
You gain nothing by going above and beyond your pay grade.
And do you really care if some incompetent hates you? I hate working with incompetent people, so some mutual feelings are perfectly fine. It may even improve the situation, at least temporarily: They'll reduce their interactions with you to avoid conflict, since most people are rather conflict avoidant.
>function2(){ ApiCall("2) }
Quoting from earlier in the thread, see this and tell me the person writing it is competent.
The polite way to put it is "there might be a skill mismatch".
Plenty of people get slowly drifted into programming roles they aren't qualified for.
At the end of the day, I'm not some super hero looking to drastically improve every company I work for.
It's fine to walk out if your not vibing with your co workers. Always say it's about money, you never know who you'll see again.
I can't, nor could I make any sprawling generality about them based on secondhand quips.
> The polite way to put it is "there might be a skill mismatch".
More than polite, it may be practical. Perhaps this person is vastly skilled in some other way and importantly valuable if applied to that work.
> Plenty of people get slowly drifted into programming roles they aren't qualified for.
Like me. I'm unqualified in many ways having no formal education in CS. Yet I've created around 1,000 jobs so far. I've taught CS and lectured on it in college programs. I'm pretty sure you'd consider me incompetent if we met, because we seem to see the world and this work very differently.
> At the end of the day, I'm not some super hero looking to drastically improve every company I work for.
I don't consider it super heroic to simply do your work in good faith, interact professionally with respect for other humans, and strive to leave the world (and every part of it you touch) no worse, if not better. That's just basics.
> It's fine to walk out if your not vibing with your co workers. Always say it's about money, you never know who you'll see again.
Yes, absolutely, change roles when it seems the right choice. That is freedom I wish everyone had, and felt safe in, and no guilt for. Pursue happiness. Even saying it's about money I can't argue with unless doing so obscures some other fact that harms other people.
Exactly!
I do not care about anything in regards to a job outside of my paycheck. I'm not trying to change the world. I have no expectation of anything I'm doing making a real difference.
But ultimately that’s not how it goes in many places.
There are a lot of people who care more about their craft than their ego. And this can be enriching beyond compensation.
In my experience such situations are transitory though and a time comes to move on (gracefully and maintaining accountability for one’s own actions).
My last place was horrendously broken in many aspects, and fired people at the drop of a hat.
Talking about other problems, and suddenly you're 'that' guy. The boss might stop listening even and decide you are the problem, and not the fugly baby.
We should all be working with each other under the assumption we are adults capable of receiving feedback. If a coworker is doing poorly, talk to them. If they wont listen escalate. If escalation doesn't work, its a bad fit.
Worth it if they really deserve it.