My least favorite question in all of tech recruiting

“Are you frontend, backend, or full-stack?”

I really hate this question, for so many reasons.

First of all, it presupposes that there’s only two sorts of things that are done in software anymore: either you’re making websites (frontend) or services called by them (backend), or you’re someone who does both, but still using the frontend/backend dichotomy.

There are so many other kinds of software out there. Not all the world is Building Websites. Just off the top of my head there’s the extremely broad categories of graphics, platform, audio, gameplay, automation, embedded, infrastructure, distributed systems, and so much more.

Even in today’s dystopian push towards blockchain and machine learning, what kinds of engineer works on the underlying systems there? It’s neither backend nor frontend.

“Are you frontend, backend, or full-stack?”

There’s a lot of assumptions baked into this question. It assumes that all engineers are making use of existing libraries and gluing them together, just to build websites. It doesn’t have any room for the people building the frameworks behind those disciplines. Would the people who implemented ReactJS or Node be considered any of those categories? What about people who build language bindings for libraries? Or game engines? Or device drivers and kernel modules? What about the people who are making the basis for how all those other things exist?

Where in frontend, backend, or full-stack do you see people who are building web browsers, or home automation equipment, or devising algorithms that solve problems of scalability? Where do image processing experts go? What about people who are solving problems in computational biology or large-scale storage or information security and privacy?

“Are you frontend, backend, or full-stack?”

While I have done some web development throughout my career it’s never been a focus. I have no interest in building websites professionally, and I’ve only used web technology as part of application platforms where the problems I was solving were more about how to make applications easy to develop for a wide variety of software platforms, including (but hardly limited to) the web. When I do build web stuff I’m doing it largely in plain, hand-written HTML and CSS, with as little Javascript as I can get away with, and as much as possible rendered server-side, without having a fleet of microservices exchanging data around so that I need a billion servers just to render a single page of HTML.

I’ve built frameworks for media applications that run directly on devices; while some of them used Javascript as their language, none of them were really web-based. I’ve built game engines for small, low-powered systems. I’ve built augmented and virtual reality experiences for PCs and mobile devices. I’ve worked on data warehouses, I’ve solved problems of computational complexity, I’ve implemented physics for interactive experiences.

Even when I worked at web-oriented companies I wasn’t building stuff “for the web.” At Amazon I worked on the original Kindle, converting scanned books into display-agnostic eBooks. I worked on the caching team, increasing the performance and decreasing the operational costs of a fleet of tens of thousands of servers. I worked on the image service team, managing the catalog image metadata and writing the image scaler and image processing routines that power major portions of the website. Is any of that frontend? Backend? Full-stack?

“Are you frontend, backend, or full-stack?”

Oh, you’re a chef? Do you make pizza, salads, or both?

Oh, you’re a mechanic? Do you work on tanks, motorcycles, or both?

Oh, you’re an architect? Do you design dog houses, malls, or both?

“Are you frontend, backend, or full-stack?”

The only answer I can truthfully give: No.


Before commenting, please read the comment policy.

Avatars provided via Libravatar