Ask HN: Front-end bait and switch?
Here's the most recent example: I interview in December, it's great, there's a former colleague that remembers a lecture I gave, he's a cool guy, and I make it clear to new boss that I don't do front-end work, but to be sure, I tell them during the last round of interviews not just that I don't do front-end but that I keep getting this bizarre bait and switch. New boss nods, talks about scaling problems, they need someone that's good at Postgres. I sign a job offer and my first week, I get "please move these buttons". I protest, he says it's to get me used to their workflow. So I move the buttons, then go back and forth with QA for a week on spacing issues. I get a bad feeling and remind new boss. Similar weeks go by, I get invited to a meeting, HR CC'd: I'm slow and my work is bad. I tell them I'll do whatever they want to pay me to do, but I do a better job if I'm doing the work I am great at, "I mentioned this during the interview, I would not have taken the job if it was front-end". New boss stares down and does not say anything for while the lead talks about everyone on his team being a full-stack developer so I need to acquire front-end expertise in a hurry. I spend my evenings and weekends learning Vue.js, doesn't go well, another meeting where new boss won't make eye contact and now he's old boss.
I still don't understand why. I've started getting somewhat superstitious: I'm leaving JS/CSS off my resume and LinkedIn, I tell recruiters that I don't know JS. I hear about the difficulty scaling their public-facing APIs, the new customer that requires rewriting the ETL pipeline, I sign up, but I arrive and hear "We'll do those things later, first we need you to make a landing page and help port the front end to the new version of React."
It's gotten maddening: at a previous employer, I started having panic attacks and chain-smoking (both fixed now). I design and build APIs, I write back-end code, I optimize Postgres/MySQL/Redis, I build telemetry and then use it to implement data-driven rate limits to mitigate DDoS attacks, I architect systems, I transform and move massive amounts of data quickly and reliably. I'm very good at those things just not at browser front-ends.
I can't rationalize it as coincidence or a fluke: at least half a dozen employers have told me I'd be doing back-ends and ask me for front-end web development. I've worked at a lot of startups and have done plenty of consulting jobs: I understand wearing several hats (it is one of my favorite things about startups), and I like jumping in to help where it's needed, even on the front-end.
Has this happened to anyone else? No one I have worked with before seems to have this problem. Why would an employer do this? That's important to know: if I don't know why, I don't know what to do to prevent it. Since I am well into the senior/staff level and skilled, I cost way more than a junior front-end dev, so it can't be for economic reasons. It has happened too many times across too many years to be a weird employer or a coincidence. I don't want to come off defensive or combative during an interview, but even being extremely direct has gotten the same result, so it can't be ambiguity. Is there some magic phrase I can use with...
78 comments
[ 3.4 ms ] story [ 148 ms ] threadSeveral times in the past fifteen years, but it was that I got fired or quit.
> Do they tell you its because you can't do frontend or is it for performance issues?
The times it was involuntary, it was because I got moved to doing front-end stuff, my performance tanked, I told my manager or whoever was relevant, and sometimes I hear "Just bear with it a minute" and sometimes I hear things like I described above. This was the first time I tried saying anything about it during the interview.
> I feel like there's some key information missing here.
I don't get it either, so at least there's that sanity check: I don't get what's going on because it doesn't make sense as presented. That was what the questions were: I'm certain there is something I'm missing, I tend to be socially oblivious sometimes. I do not get it.
The OP fully reports a Kafkan maze of being hired for a job, and then asked to perform a completely different job; having a low performance because, well, duh; and then we expect him to explain his low performance?
No one seems to be able to really communicate anymore.
After that I was hired at a FANG company and worked on automating data centers and service deployments as well as a ton of other stuff. Now I pretty much just go setup infra teams for people I used to work with who are at various small to medium startups.
So I don’t have a great answer for you but I would say staying away from anything where all they can tell you is “k8s” “terraform” and stuff that boils down to writing yaml or some config language all day. Additionally if you can’t get a good idea of where the company is today in the interview and where they would like to go it’s going to be sys admin stuff. In all my interviews i lay out where we currently are and all the issues that causes and go over where we want to be in a year from now and what things need to be done to get there. At the end you should feel like you fit into some part of that.
It is amazing how many hiring managers can’t give you a coherent picture of that. If all they can say is we need k8s, docker, infra as code and other buzz words without a plan the team is setup to fail.
The other way is just apply for platform eng or sre jobs at FANG and friends which will almost never be sys admin stuff although it can happen sometimes if they are listed for a team that works on the corporate side of the business.
Maybe for webdev jobs this is true, but there's lots of software out there in the world that is not web development. I don't think I've ever seen ML engineers anywhere near the front-end except in cases where they're personally interested in it.
I do think if you're doing web development being asked to do a front end task, especially as your first ticket since these tend to be quicker fixes, is not too surprising.
But OP might do best to try to avoid web development work altogether. There are quite a variety of data engineering, ML engineering and infrastructure related roles where it would be completely out of the question to be expected to do any front-end.
I think some shops just really want everyone to be interchangeable as a way of ensuring no one becomes too niche and therefore irreplaceable. i.e. it’s a control thing.
My suggestion would be to look for info early on in the vetting process for stuff like how titles work there and how teams are organized. possibly ask to talk with other potential teammates or other employees.
Maybe we should. I know a good ops guy, we've got a minimum viable tech team.
> My suggestion would be to look for info early on in the vetting process for stuff like how titles work there and how teams are organized.
That's a good idea. I usually rely on the hiring manager's job about some parts of the work, but then ask the team about other parts; I should probably move this to the "other parts".
I've seen this sentiment a few times now, so I'll weight in and say that I have to disagree. I mainly work for companies smaller than 50 devs, and frontenders do front-end, backenders do backend. I've never witnessed the behaviour described. Maybe it's a USA thing?
I think it depends on the company. You get niches at 10 employees.
> A smaller company might want to hire a backend expert, but who might have to jump into front-end for short periods - sort of an 80-20 split.
Yeah, like I mentioned, I don't mind that. At one company, I ported our network daemon to Windows XP.
You haven't described the positions you interview for, so it's hard to say, but if you find the situation repeating over several jobs, it seems likely that you're applying for similar positions. If this is so, then you clearly need to stop applying for that specific kind of position.
Note that you may not realize they are similar positions, or what it is that they have in common and makes it "wrong".
If the JD says "JavaScript" or "CSS", I politely decline.
> Note that you may not realize they are similar positions, or what it is that they have in common and makes it "wrong".
I can't discount the possibility.
I'm irrationally fond of this memory, too. It just felt right to improvise and overcome small problems, all day every day. Early stage startups are fun.
I guess the other thing I'd ask is, why the strong resistance to frontend work? I get not seeking jobs for it or not preferring it, I don't seek those either, but for my own personal productivity I like to have a decent idea how to build a frontend in case I'm waiting on someone that's overloaded in order to deliver my feature etc. It can be helpful for a career if you don't have to frequently tell people "I can't do that", vs, "it's not my strong suit but I can pitch in"
I am bad at it. So they get an under-performing employee with low morale and I get complaints about my work.
> It can be helpful for a career if you don't have to frequently tell people "I can't do that", vs, "it's not my strong suit but I can pitch in"
I usually do the latter, but then in December I thought I'd better make sure, reasoning that things go better the clearer I am ahead of time. That was the first time I tried saying, "Seriously, I can't do that kind of work." This time I got nothing but that kind of work.
Maybe at Google you can get away with being the "person that does X-only" but that doesn't work in most companies.
Your job is to do _the thing_ if that thing includes front end work, then you do the front end work.
The recent example was a large, international company. I mentioned this in the post.
> Your job is to do _the thing_
Like I said in the post, I do what I get paid to do, and the idea is to figure out how to avoid a place where "the thing" is inappropriate. I have an easier time at startups: I'd rather spend 12 hours a day doing something that matches my talent and interests than spend 8 hours a day saying "Yeah, the button is...I don't know why it is where it is. It looked fine to me before, I don't wanna spend two days on this."
I hope you find what you're looking for.
From what you've described, I'm not hearing "I don't do frontend", I'm hearing "I only do frontend badly and under protest". That's complicated, "I don't do frontend" is simple -- but you need to back it up.
This makes sense.
You mentioned startups and scaling problems. Scaling problems are typically for smaller companies.
You need places with 500+ engineers. Look at bank, insurance, bigN, anything in the f500
If you want to play the corporate game, you need to get used to having 5 meetings to move 1 button. And it's not about the button either. It's about asking Alice how her daughter is doing, and asking Bob on how he feels after that surgery, and casually hinting to Carol that you really like her choice of coding style for that new project. You play that game for a few years and you'll be allowed to have some monkeys of your own.
Or if you find the game soul-draining, you need to beef up your sales skills and connections, and become a consultant. One of those guys that gets invited to unwind a particular clusterfuck, gets paid $500/hour and quickly moves on to the next gig. This means less stability, more control, and a totally different skill set. Ultimately, your call.
> One of those guys that gets invited to unwind a particular clusterfuck, gets paid $500/hour and quickly moves on to the next gig.
This is a "plays golf with the CTO" rate; I spent some time consulting because I thought that would mean more flexibility, and it's feast or famine, because of what you said about headcount, which applies all the way down until it's companies funded out of pocket. It took me years of consulting to figure that out: headcount is a costly liability at most businesses, but at a VC-funded startup, if they are trying to spend their competitors into the ground, frugality is discouraged.
I tried explaining to my boss that a BE dev isn’t going to jump into react in a day or two, but the expectations had been set. The principal architect on the project also quit, came back, rebranded everything for no reason, then quit again. It’s been a mess.
Luckily, I was able to avoid getting too deep into it, as it was obviously going to fail, and I was able to kick the can down the road until it did.
I mainly work for places with less than 50 engineers, and with the exception of CICD and a little fooling around in DBs, everyone sticks to their area.
On the one hand, you hire and assign work to domain specialists. You don't expect a DBA or backend senior to be able to explain the box model in CSS or how to make a custom model accessible to screen readers, and you don't expect an FE senior to diagnose why an index isn't performing well or whether a particular model should be backed by a polymorphic table.
It's possible to do both, but you're going to be paying senior rates to get junior work except in rare cases.
On the other hand, there's the philosophy that good engineers can apply learnings from one domain to another, and therefore a senior is a fungible resource. If someone is a senior Django dev, they can pick up rails pretty quickly. Surely it can't be that hard to pick up some flavor of JS.
Personally, I'm in the former camp- true full-stack is a unicorn, and the closest ones still need a solid donation from someone else.
I've never been employed as a full stack developer, and though my current company keeps hinting that they want me to go that way, I've been successful at pushing back.
I see that a lot. I mean, JavaScript isn't hard to pick up, but the front-end is not an operating environment that resembles anything else I have ever seen.
> Personally, I'm in the former camp- true full-stack is a unicorn,
I think that's the case, too. iOS or desktop applications, I've played with those, I've done games on tiny hardware, those feel like I'm using the same part of the brain the rest of the computer science lives in, but I don't think it's possible to have a thorough understanding of the browser environment and be equally good with anything else.
It doesn't matter until you say 'No' to them, or else you will find yourself running into the exact same problems you are describing here.
In that offer letter, you need to negotiate so that it says “backend features” and “op will not be required to implement frontend features, which use technologies like JavaScript, typescript, and css”.
The act of negotiating this will show you if the company is actually ok with this or you are just being told yes by a recruiter.
If you can’t get this, then you are effectively powerless.
I feel like the last bullet point is always something like "ad hoc duties as assigned by your manager"
They then hurriedly reshuffled some people after complaints. I know someone put into a backend role that had the job title "Staff Front-End Engineer".
I'm 80% sure they did the staffing in Excel, primarily worrying about what office the headcount was in.
I like to ask things like "what are the biggest technical challenges/focuses for the next 6 months?" And "are there any projects or initiatives you would want me to work on right away?" And "if I'm successful at the roles, what sorts of things would you expect me to accomplish in the first half year or so?"
Those all give you more info than the answers alone. I always look out for companies that are always on fire/reactive as a red flag. Good companies will have objectives and be hiring you to help accomplish them. Bad companies will have a put crew tackling tickets "as they come" and any actual projects keep getting superceded by critical issues or user requests that are over-prioritized.
Lastly and most simply, just ask employees there what they are working on and how they go about assigning tasks. If everyone is touching a the codebase and that's not what you want, avoid the role!
You are the second person to point this out, and I feel like it should have been obvious to me that this is the easiest way to tell. I appreciate it.
Did you say this in the interviews? Even if you said you don't do frontend, if you said this too, that's why.
I'd try to apply to jobs with titles like "Backend Engineer" etc, not generic software dev jobs. People look at titles. If your title is Senior Software Engineer, you'll be expected to do frontend at most poorly managed startups. Managers and HR churns all the time. But your title makes your responsibilities clear. Even if you apply for a "senior s/w engineer" job tell them you want your title to be "senior backend engineer" or whatever.
For example early on on my career I only did frontend, and then I applied for a job that was specifically "Backend Engineer". I never wrote a line of frontend at that next job.
It would seem that way.
> Are you not working in a team?
Unless I am doing a contract job, I'm always on a team.
I honestly disapprove of Java as a language, it's simple so I can write it, but find no joy in it whatsoever. Not once have I mentioned Java on my LinkedIn, CV, or in person.
Every company I've worked for, I had to write Java. Sometimes it's their backend, and I'm their frontend guy and get assigned end-to-end tasks. Sometimes it's more obscure, like an Android app (hey, you're the frontend person, and Android apps have frontend!)
In my current company I seem to have broken the Javacurse by moving into a low managerial role, so now I can assign the tasks I hate to people less offended by this nonsense.