Ask HN: Rant, Am I bad or is this a company with a poor tech culture?
Hey all, can you sanity check me? Am I a bad developer (always a possibility), or do I focus too much on unimportant things?
I've got 13+ YoE and been working in big tech for about 4 years, joined an established start up (10 years old, profitable) a month ago, and wondering if I am out of touch after the meat-grinder that is competing for delivering "impact", stack ranking and so on.
I don't know if I should stay at this company as I feel like I can't really do good work here and it feels like, if I stay, I'll be less experienced at the end of 5 years than when I started.
-----
Soo
I joined an established start up a month ago, they have a legacy app they are incrementally migrating from Angular 1 to React.
Their "good" app is a super custom React implementation that's extremely difficult to understand, including some kind of component middleware and half baked Redux integration that doesn't work with any devtools.
The client is about 20mb of JavaScript shipped to the browser and the local development workflow is quite poor.
90% JavaScript, 10% TypeScript and the team doesn't really want to move to TypeScript, banning porting existing code to TypeScript.
There were some basic errors I noticed when I started, like not committing the package-lock to the repo so I asked about it and raised a PR adding one - which got declined because it was "risky".
The package-lock raised 60 critical vulns in the npm audit, which I raised and was told addressing them was too risky. I suggested that we should at least add a CSP to the app, given some of the vulns are implicated in injection attacks - again, too risky.
During development, hot reload times are 30s so I raised a PR that added `npm run dev:next` which uses Rspack to build the client only for development, which halved the hot reload time, but that was declined.
I noticed they don't have any automated testing (there's an overseas team the does manual QA before every release) and asked if they'd be open to building out an automated testing suite - to which they said no.
They also don't have any CI, all validation happens in a pre-commit hook, which they are also not interested in adding in.
I noticed they don't have any observability on the client - no error rate, no load times. I asked how they know if anything is wrong and apparently, if it's not caught in QA, "customers call us and we fix it". I suggested adopting something like Sentry to start tracking the client to help quantify the impact of features and preempt errors before they escalate and, again, was told no because it was "risky".
My manager had a 1:1 with me this morning and told me that I should not attempt to make contributions outside of the tickets I am assigned, and I am expected to raise 1 PR per day otherwise I will be let go.
I repeated my above concerns and he said that they hired me to do tickets and that was it. I don't think either of you is necessarily wrong (or good/bad here). They prefer to work the way they work (glaring issues and all), and are apparently successful working that way. You don't want to work that way, and want a role where you're not just crunching tickets (even if you could work that way). Just sounds like a bad fit to me. For next time: it's really easy to accidentally ruffle feathers if you come in and start proposing tooling or process changes. People get attached to their project if they've worked on it for a while, and can take observations from an outsider as judgemental or an attack, regardless of how valid those observations are (many of yours seem valid to me). You coming from big tech can make people even more sensitive to this (if you're triggering their latent impostor syndrome or whatever as someone from a prestigious company). The way you summarize your manager's feedback makes me think that you either rubbed him the wrong way or offended some more tenured people who complained. Kind of hard to undo that now, but helpful to keep in mind for the future. If you demonstrate that you can hack it on tickets as you ramp up and establish some trust with your teammates over a few months, you'll typically have an easier time with this type of stuff. (I would normally add a caveat that another good reason to wait a bit before bringing stuff up is that you might be missing the bigger picture, and that can help you ensure that you're actually arguing for useful change. I omit it for you because "we should have any observability at all for our production application" seems pretty uncontroversial to me and doesn't make me think you're out of touch or focused on unimportant things) Appreciate the balanced feedback. It echos what some of the longer tenured engineers have advised me. One colleague whom I have worked with in a previous role and has a similar mindset to me said that he just does the 1 PR a day and spends the rest of his time on OSS for satisfaction. I took that onboard and have been ramping up my PR count over the last week without making suggestions - but I suspect the reputational damage has been done and I have soured relationships as, contrary to the 1 PR a day metric, my manager quizzed me on what I was doing after submitting my PRs in our 1:1. Appreciate it and will certainly keep that advice in mind for the next role You can just say they are bad? You don’t have to be such an overthinker They rely on customers calling to fix stuff? Why so allergic to calling out bullshit? It’s a 10-year old profitable company. Why are they bad? Amen! As professionals we are supposed to have opinions about these issues. This "everyone's right" thing, while well intentioned, is one of the factors that allows, frankly, dysfunctional dev teams like the OP's to exist. If companies are never really wrong for doing things a certain way then nobody can challenge them, which of course is exactly what insecure and egotistical leadership wants; little serfs to do the bidding of a few anointed priests. We should care because we actually do have a responsibility to the world we live in. We are the ones building the buggy, insecure, dark patterned crap that HNers take part in complaining about. No one being wrong means more crap for everyone. --- OP, your employer sucks. You are not wrong; they are. You have to make 1 PR a day? Bullshit of the highest order. Since they are unlikely to be receptive to change, always say "yes sir" with a shit eating grin while you prepare to monkeybranch to another job. I'd have said to quit now a few years ago, but the job market is so bad right now that the best you can do is coast where you are right now while finding new opportunities. That said, welcome to this stage in your career. Lots of companies hire people with our level of experience to deal with their dumbass mistakes while ironically promoting the same dumbasses who continually make those mistakes. It's so that no one gets offended. You can't offend anyone if you don't actually have an opinion or a personality at all. Ironic since being so bland is actually having a certain kind of personality. I've seen this a few times and I find it distasteful. I am a bit surprised at some of the comments here. I'll start by saying that I only have one side of the story so it is possible that the way you suggested those changes is the problem and not the changes themselves. But, having been in a somewhat similar situation, I can tell you that some companies and teams are just dysfunctional and "cliquey". It has nothing to do with anything rational or logical or something you did or didn't do, it's just broken beyond repair. My guess would also be that they have had a number of people come and go probably due to the same reasons. That manager also sounds like they shouldn't be managing at all. Besides that silly metric(did they also specify how many lines of code they want per day? ridiculous), it would've been more useful if they explain why your changes were turned down at least. There might be a good reason that you're not aware of. A sane manager would choose to guide you to make sure your valuable contributions benefit the business and align with any strategy as opposed to talking to you like a child and going "do it because I said so". Your teammates may have been having a bad week or feel threatened but I blame your manager. They should know better. I recommend you plan your exit as nothing good will come out of you staying. I see two red flags: 1) "they are incrementally migrating from Angular 1 to React" - Did they actually learn React? Because the worst React apps I've see is from teams who just took their habits from another platform and re-coded their comfort zone in React. 2) "I should not attempt to make contributions outside of the tickets I am assigned, and I am expected to raise 1 PR per day" - Did you get hired as a junior? Because they are treating you like one. I would not accept such little autonomy if I had over a decade of experience. Aside from that, they are clearly not working in full modernized practices. This is not necessarily a bad thing. If they perform well and have a smooth-running shop, being a bit behind the curve is fine. But if their lack of modern practices is causing the other friction, then it is a problem. But there isn't an inherent correlation between "behind-the-time" and "bad team" The most important question isn't any of this, though. Are you happy there? If you hate it there, that is all you need to know. Time to decide if you want to stick it out while trying to find work and explaining the short job, getting fired (might be eligible for unemployment), or quit. Some startups are run by cowboys/cowgirls. They don't care about anything other than features until everything falls apart or they rebuild in a nightmare sprint. I've been at one of these. You will fail to change them even if you stay for 3 years. You risk getting fired if the CEO realizes the mess and hires in someone to fix it. Your manager is already thinking about firing you. Isn’t max unemployment in California like $450/week? It’s not nothing but it’s not gonna help much if you’re used to spending like a big tech engineer. Luckily I am about as frugal as they come (humble beginnings) - but also I'm in Australia and big tech here pays about as much as an average Sr salary in a non big-tech company in the states. At my last job, I was on 220k/y USD TC as a Sr. This role is 140k/y USD, which is close to the top end of non big tech salaries here. I think you know the answer. Trust your gut. Apply for new jobs immediately. In the meantime do 1 pr a day. You joined only a month ago? It sounds like you suggested changes too quickly. Egos may be hurt by the new guy saying "you're doing everything wrong." Poltics goes a long way in this. You need to make others happy first and build up some goodwill first. If you want to tough it out here, do this first, make some allies, and then slowly suggest changes. Don't suggest to everyone at once, try to build consensus for your changes one engineer at a time. Ideally you'd make friends with the lead or others you can pitch to first privately. >You joined only a month ago? It sounds like you suggested changes too quickly. Egos may be hurt by the new guy saying "you're doing everything wrong." I agree on the politics but also this org intentionally hired an ex-big-tech engineer, I would have high expectations for that person and throw them at stuff that would make the dev-ex improve and solve the foundational issues with the app. Not just making them a bug-fixer and threaten them about their job if they don't meet some arbitrary PR metric. Yep, it's always amusing when people try to replace a slow, messy, legacy app with a new implementation that is... much worse than the old one. I think basically, yes, it's just a poor tech culture, and that's how they like it - they're not interested in any process improvements, they just want you to be a ticket taker. Find some other better project if you can, rather than trying to "fix" this one. 1. Strong hierarchical structure is prevalent in that team, so, you'll have to bide your time (amicably), if you've to been taken seriously. 2. Expectation from you is to raise PR until you 'know' how it's done. By showing up from bigtech and by suggesting solutions, you are basically telling them you've seen it done better, and that's a bitter pill to swallow. 3. The startup has been around for 10 years, and tech changes fast; things might have been built rapidly and to a paying customer's corner case, and now the product looks terrible from an external observer's perspective. 4. Even bigtech products evolve into terrible things and nobody has time to go fix on a haunch from someone, however insightful it is. If you claim to have tech skills, why not come up with metrics to prove your point and how much money it can save or bring in. 5. You can't convince people from your pedigree, but from your insights AND backing it with data (latency, resource usage ==> revenue). 6. Startups don't have money laying around so if features don't have $$$ printed on them, they get canned. good luck! Is 10 years still a startup? Serious question, not trying to troll. They describe themselves as an "established startup" lol. It's just an industry-tailored CRM so it's a form-heavy application, nothing about it is ground breaking. IMO if you're profitable and have been around longer than a decade, you're no longer shipping features for survival and should have bandwidth allocated to improve the product reliability and performance. No observability/monitoring, no automated testing, no CI/CD, a 30 second - 5 minute login time, and a 20mb JavaScript bundle is a pretty poor customer and developer experience. I spoke to the head of sales / product to understand customer retention and the factors on failed sales - it looks like our customer retention is unaffected by a slow or unreliable the product. Building deep-tech (say, new kind of radio link) involves years of R&D, specialized manufacturing, and long regulatory or testing cycles. It's uncommon in app business though. This made me lol as well. I think that’s just a business. Wait for a problem someone else raises before you offer solutions is my advice. Big tech expects you to suggest and solve problems late stage startups just want someone to not rock the boat. You want an early startup where you know the ceo and eat lunch with them or back to big tech . You are in a get paycheck and use extra time on oss project. If the pay is good and you want to exercise your craft Use the constraints provided to build the best solutions you can given the horrific situation. You complete your ticket in a way that’s simple, maintainable, and extend. I always found it fun to write cleaner interfaces on top of shit code and eventually there’s a point where you just sorta flip the switch to the better implementation without issues. Sounds like they have an established culture that works for them and you are feeling like you might not be a good fit. The Manager had a 1:1 with you to make sure you stay in your lane and it sounds like they just want someone who will do their assigned tickets. You'll need to decide if it's the role, environment and culture you want. For sure - this is a burning house, do what you can to land on your feet but it's a waste of time to invest anything into it. You won’t grow there. This shouldn't be normalised as acceptable engineering. Do you want to work in a startup or big tech? This is most big tech for you. Terrible code quality is standard at startups. Not being trusted to fix it is not. Run. I repeated my above concerns and he said that they hired me to do tickets and that was it. It sounds like doing tickets is what needs doing. And “you’re doing it wrong” ain’t doing what needs doing. How you handle that will determine how you grow as an engineer. How you behave will determine whether people want to work with you again. My advice: roll up your sleeves, spit on your hands, and grab an ax. The pile of wood ain’t gonna chop itself. Good luck.