How do you avoid joining companies with bad engineering culture?
Posted by mr_poopybuthole69@reddit | ExperiencedDevs | View on Reddit | 57 comments
I spent 5 years at a large local telecom company after university. It was honestly a great place to start because I got strong mentorship, learned a lot, and built a solid technical foundation.
Eventually I felt like people still saw me as “the junior,” so I decided it was time to move on. I joined a sub company of a very well known enterprise software organization, something similar to an SAP style corporate environment. The interviews went great, but after joining, the reality has been pretty rough.
There’s almost no documentation, and the only “docs” we really have are Jira tasks. It’s hard to understand the full system or even trace how things are supposed to work. Tests are flaky, integration tests are run locally, there’s commented out code everywhere without explanation, and a lot of the system feels like workarounds built on top of older workarounds. Whenever these things come up, the answer is usually “we’ll fix it later,” but that never actually happens.
What frustrates me most is that during technical discussions people often agree on hardcoded solutions that require rebuilds and redeployments for things that should clearly be configurable. I’ve raised concerns multiple times, but nobody really seems to care.
At this point I feel like I’m no longer learning good engineering practices, and I’m worried my skills are stagnating. I’ve started looking for another job, but now I’m paranoid that the next company will be exactly the same.
For people who’ve worked at multiple companies, how common is this kind of environment? Are there certain types of companies that tend to have healthier engineering cultures? Do consulting companies generally have better engineering practices, or does client pressure usually make things worse? And how do you evaluate code quality and engineering culture during interviews before joining?
ElliotAlderson2024@reddit
All of them are bad AI slop factories now.
drnullpointer@reddit
It will sound counterintuitive, but given two companies, one that gas good engineering culture and another with poor practices, everything else being equal, I will prefer to work with company with poor engineering culture.
I find that if they have trouble, I am the guy to help them fix their problems.
On the learning side, I learn a lot more by bootstrapping the culture and overcoming adversity than if I was just complying with an existing orderly process, without influence or understanding how it was set up and why it was set up this way.
My job is more secure when I am being seen as higher worth. If I was working for a top team at a top tech company, I would just be a regular guy. Where I work I am an excellent engineer (at least in the word of other people).
And if the two companies pay the same, then what does it really matter to you? Be honest with yourself.
It is fine to prefer an orderly workplace. But I think it is not the only valid way to look at the problem.
mr_poopybuthole69@reddit (OP)
I get what you are saying, I was like that when i joined, but the resitance is ridiculous. Ive made 3 PR's with fixes or improvements already implanted and if gets denied without any discussion. It doesn't even get denied, it's the same like our codebase, "ill do it later".
T0c2qDsd@reddit
Fixes on “other’s” codebases (a weird idea in itself, imo, if the company owns all the codebases) can appear to be a power move or calling out someone else’s work. I’d avoid it in a vacuum if you aren’t savvy to the culture.
But also, I mean, I’ve used “I’ll fix it later” as a polite way to say “Your approach is wrong/incomplete, you don’t understand the constraints here, kindly fuck off.” I’ve leaned to be more direct, but I used to assume everyone got that sort of more subtle ‘no’.
That being said, I’ve found variations on the boy scout rule are great and rarely see opposition. Touching something? Make sure it is at least as clean as it was before, or cleaner! Etc.
Unhappy-Ladder-4594@reddit
Poor engineering culture is often caused by poor overall management culture, which is not something that can be fixed by anyone in engineering.
drnullpointer@reddit
Yes and no.
Yes, poor engineering culture is *almost always* caused by poor overall management.
No, you are not helpless. Things can be fixed, even poor management. It usually is pretty hard. But not as hard as people think. Managers are just regular people with different kinds of problems. If you can understand what kind of problems they are having and can offer realistic solutions and demonstrate you can actually achieve them, you can suddenly gain a lot of traction.
Arnechos@reddit
This applies only when they want to fix it which isn't the case most of the time
Super-Practice1586@reddit
Yeah, exactly that logic only applies when you will get credit for fixing the problem. In my case the things were expected to run smoothly and be delivered within a strict time constraint (sprints of death FTW). The huge technical debt was your problem, you need to deliver features not problems. And... that's why I'm leaving my current gig in couple of days lmao
seanlabor@reddit
Interesting take, but do you not think there is also enough work in places with good engineering practices?
drnullpointer@reddit
As I wrote at the end, "it is fine to prefer an orderly workplace".
Opheltes@reddit
I'm currently interviewing to be the engineering manager on a team that has no CICD, no testing, no agile development, no jira, no work backlog, no code reviews, and I was not given a certain answer on whether or not they have source code control.
Why would I seriously entertain such a thought?
1) I trust myself. I can fix bad engineering practices and grow good culture. I've done it before.
2) It's a Fortune 50 company. Instant name recognition.
3) I asked three times in the interview process is management was on board with me fixing this team. I was given a very enthusiastic yes. I wouldn't touch this thing with a ten foot pole otherwise.
SpiritedEclair@reddit
I ask them. I literally ask them in interviews about how they do things, well I ask the manager probing questions and I can usually gauge the sitch.
T0c2qDsd@reddit
I do this too, although as someone who likes fixing problems, I’ve got a medium tolerance for these sorts of things… as long as there’s leadership buy-in that things need to change.
kylife@reddit
Can you share some example questions? Like when do they address tech debt? How high would they estimate their bus factor is? How do they knowledge share?
ShroomSensei@reddit
Some of my favorite questions:
- can we walk through the SDLC of a feature from end to end? Ideation from a customer to actually being fully released in production.
- what’s the composition of the team id work with daily?
- what’s some of the biggest problems the team is facing today?
SpiritedEclair@reddit
I ask them to walk me through their post mortems, how they do prioritization, and how they make technical decisions mainly.
Nofanta@reddit
Avoid Indian management is the easiest way.
kevinossia@reddit
Target large Silicon Valley tech companies where software is the product and engineers are treated as a profit center not a cost center.
That’ll get you most of the way there.
jmonty42@reddit
While that will get you most of the way there, those large tech companies can have a LOT of variability between different orgs and teams.
greensodacan@reddit
This has happened to me. You can't make people change their priorities as an individual contributor. Sometimes leadership can do this because they decide who works there, but "misalignment" is a legitimate reason to let people go. You can also use that when interviewing, "I wasn't comfortable with the company's values" and "I wasn't growing" are extremely professional reasons to move on.
It's very difficult to spot these situations in advance. A question I've used is "If you were a restaurant, what kind would you be? Would you serve fast food? Gourmet? Be a cheap sit down place? Someplace you'd celebrate an anniversary?" If anything, it triggers healthy discussion.
In the end, think of it as having a probationary period for the company, just as they would have one for you. Getting hired only suggests it's a good fit, it's not a guarantee. It sounds like you're doing the most professional thing by trying to move on sooner rather than later.
redditSuggestedIt@reddit
If someone said this resturant bit in an interview i would die of cringe on the spot
greensodacan@reddit
So your company is like a trendy neighborhood coffee shop, neat! 🥐
MiraLumen@reddit
OK, so the thing is in the bad companies you are getting very good experience to see how bad decisions turn our later. What it cost at the end. So in your early career I think its good to see some sh-t. If you can't determine wheather the engineering culture and engineering stuff is good in the company before hire, that means you don't have enough experience and it would be fine to fall in another not-so-good place and see bad examples. As soon as they pay, and generally adequate people - bad products is a good practice.
Free-Huckleberry-965@reddit
You're assuming lying doesn't exist. You can't always suss out culture in an interview setting.
tlagoth@reddit
I’d rephrase “you can’t always” to “you almost never”
Free-Huckleberry-965@reddit
Yeah, very fair. This asshat over here thinks you can reasonably gauge the situation you're walking into, and that just isn't the case.
MiraLumen@reddit
And that is first obvious thing. If that guy assumes "understand the company" is something you ask on interview - he deffinetly has no expirience.
MiraLumen@reddit
Ayou are assuming to get it from interview? No, you find somebody from your network with experience in the company, you research their social media, LinkedIn. And after all it it won't be big red caption "IT IS WRONG" you need an experience to see the side signs, not obvious things that from your experience you deffinetly know how ends up in the company. For example the guy who interview you - is 6 years in the company without promotions, even you deffinetly see he is a good professional. That first sign they don't give promotions, then you find profiles of his colleagues....and so on. Questions that they ask tells a lot about the company. When you have seen enough examples - all non-direct signs are very clear for you
Free-Huckleberry-965@reddit
For most companies it's extremely unlikely you have someone in your network that has previous experience with them, are you kidding me? And, again, most companies don't maintain a social media presence (outside product marketing). Also, who gives a shit if they give promotions? Maybe if you're into ladder climbing bullshit, but that isn't the kind of company culture I would wish on even my worst enemy.
PM_40@reddit
By being a top tier engineer yourself who can pass many interviews ? Then chose companies and teams with good work culture. All teams want solid engineers.
Abadabadon@reddit
I usually ask for their process of how a feature turns from idea to production shipped code.
If say for example they can't even answer it (as a HM was once unable to), then alarm bells go off in my head.
dweezil22@reddit
I'll be that reddit guy and answer the question you didn't ask first.
Can you give a more specific example? Is your build and deploy process super slow and awful?
B/c ngl I see ppl err on the side of over-configuration more often than the reverse (and I've seen it at shitty banks and gilded big tech companies). Knobs add complexity and cognitive load.
To answer the question you did ask: Word of mouth referrals and networking. Find ppl you trust and let them vouch for the culture.
PressureHumble3604@reddit
Sadly quite common in the industry.
At least your Jiras are documented.
How to avoid? ask how the onboarding will be, if they are unsure, it means they don’t care about the onboarding and if they don’t care about it and are willing to hire someone to perform worse for a long time just not to spend some time to improve documentation and explain things, it means they are culturally rotten.
CorrectPeanut5@reddit
You're trying to solve a culture problem with technical expertise. Realistically, for this kind of change you have to work on soft skills. Gain allies in other devs and work together to move the ball forward.
If you're not great at that look at what resources your company offers. Many bigger companies offer or will pay for that kind of training.
Beyond that, don't forget about the old company. Put in your 2 years at the new place, get what you can get from them and then don't feel shy about returning. Often people leave and come back at a higher level and shed a lot of the reputation.
HoratioWobble@reddit
There's tiers to this, I would say no docs is pretty common, lack of tests or shit tests is also fairly common.
The commented out code is not very common and the no body caring is fairly common.
Good engineering is fairly rare, a lot of companies talk the good talk and then under the hood it's the same shit all created by poor management, not a bad engineering culture.
There's also the company culture side of it, when they do have a good engineering culture, they usually have a shit company culture.
So really I don't think there's a right answer, you'll have to let go of some stuff at some point or set up your own company and then throw it all out the window because you have no money or time
mr_poopybuthole69@reddit (OP)
The problem is that the managment was the engineering department, they got promoted. Today i found out one of our products frontends each page is a seperate project and then theres tightly coupled backend with its database that does part of work whist proxiying its requeats to our real backend api.
HoratioWobble@reddit
Not sure how many companies you've worked in, but I've seen this quite a lot (I'm a contractor so get around a lot).
Also the Engineers becoming the engineering managers is pretty common too, and they rarely accept what they built was hot garbage and don't like to let go of coding.
The whole industry is a shit show frankly
RandomPantsAppear@reddit
>Also the Engineers becoming the engineering managers is pretty common too, and they rarely accept what they built was hot garbage and don't like to let go of coding.
My personal favorite is coming in, expressing that "hey this system doesn't really make any sense" and then figuring out the CTO wrote that code.
Always a good time, many positive memories.
mr_poopybuthole69@reddit (OP)
This is my second, thata why im so fkabbergasted by the terrible quality, my first company really set the bar really high.
Plenty_Line2696@reddit
In my case, join a small team and push your weight around a bit towards quality. Not the safest bet but proof in the pudding tends to get appreciated.
joibert@reddit
It can definitely happen. Theres a mixed bag of quality companies but more specifically quality teams. You should go into each interview trying to suss out if this team and then company are the right fit for you. Do the promote often? Do they have a shared knowledge base? Do they have a blameless engineering culture of we found the issue we just have to fix it?
Have these in your back pocket and ask it throughout the interview. Remember that interviews for a company are a two way streak - you are interviewing them as much as they are interviewing you.
FamilyForce5ever@reddit
Ask. I think the seriousness around tests and PRs is a good impression.
At a previous job, you'd write test instructions for another developer to do to prove to themselves that your change worked. At my current company, I self-approve PRs after 48h because otherwise they languish until stale-bot tries to kill them.
Obsidian743@reddit
This is one of those things that experience helps with.
I interview them before I accept. And I ask pretty deep questions about their culture that I've amassed through the years. I know what I like and don't like and what's negotiable/fixable.
But in general you can ask questions about their general processes and how "sustainable" they are. What are the relationships between engineering and the business like? What about leadership? How well is the communication between engineering and product and leadership?
For you situation ask how mature they are in their agile workflows and operations. Force them to paint a picture.
What I find is that bad companies will usually give a wishy-washy answer like "Yeah, we've made a lot of progress there. It used to be REALLY bad but since X we've gotten better. It's not perfect and we still have a long way to go."
Good companies will outline exactly how things work and won't hesitate to talk about how well it works.
Odd-Investigator-870@reddit
I find most managers aren't trained and cause toxic cultures without conscious though. If you don't take initiative in their interview pony show you're leaving too much uncertainty for risks to surprise you.
Screener questions is my latest tactic hypothesis.
I find when I ask hiring managers to explain what has influenced their leadership philosophy and what books they've read recently, they either resonate and show you their personality or they immediately write you off as a threat to the status quo and you can expect a ghosting or rationalizing rejection email.
Note I'm lead/staff grade at my career point. I'm unsure how this would play out for those under lead.
Odd-Investigator-870@reddit
"how does leadership affect engineering culture sucking though?"
Yes, great question. TLDR those managers incentivize Outputs and means of defensible power instead of Outcomes and Continuous Learning.
No psychological safety to speak up about the problems you observe? No docs or process to invite others to learn and succeed? No culture of improving practices and resulting Outcomes on Better Value Sooner Safer Happier?
keelanstuart@reddit
I've found that what you've described is common in organizations heavily populated by contractors... they are incentivized to make software updates for things that should be configurable by users.
You can find varying degrees of that ethos everywhere though... and you'll never really know for sure until you're actually there.
AcceptableSimulacrum@reddit
You can try to sniff it out, but you're mostly going to have to be willing to keep interviewing if you find it to be bad.
obelix_dogmatix@reddit
You are describing a scenario where the final product has nothing to do with your flavor of engineering. Imagine being a mechanical engineer for Microsoft.
hibikir_40k@reddit
Especially in this world full of AI candidates, network hires are the way to change companies anyway. And if that's how you change companies, you know someone on the inside that you can interrogate about the engineering culture.
I have worked in 9 companies over 20+ years. I never went into one blind
davedavegiveusawave@reddit
I ask as many questions from the Joel test as I can in the interview. It's not foolproof and I haven't let middling scores put me off every time in the past, but it's a start for understanding how an engineering team may operate.
jcl274@reddit
i mean, you know what things to look out for because you’ve already experienced it. so literally just ask
Isogash@reddit
I mean, this is kind of just the reality of most projects. Good engineering practice is about not wasting time whilst also avoiding creating as much of a headache for yourself as possible by producing defect-free but simple code.
dacydergoth@reddit
Retire.
GlobalCurry@reddit
Try to determine if they view development as a cost center or a growth driver. Product companies and tech companies usually view them more as growth and incentivize better engineering culture.
boop809@reddit
You just described my company. This is a result of bad leadership. A lot of companies try to create software like an assembly line and don't understand that it's an iterative process, so they don't account for things like refactoring, documentation, testing, and devs have to sneak those things in with their regular workload.
DigitalArbitrage@reddit
You should also ask how to find a company with a good people culture.
helloWorldcamelCase@reddit
Only way is joining tech company where they at least pretend to care about such stuffs