Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: What does Full-Stack Developer even mean?
26 points by sph on Aug 2, 2022 | hide | past | favorite | 66 comments
I've always defined myself as a Full-stack developer because I have experience with all components of a "computing stack", from low level debugging, plumbing, systems administration, backend development, networking and frontend Javascript.

Yet these days as I'm looking for work, all full-stack offers are about client-side web development with a little bit of backend Node.js.

Is my definition completely wrong? How are people with wide-ranging experience supposed to call themselves?




"Whatever task your business needs me to do with a computer, I'll figure it out."

Functionally today this usually means anything from CI systems and OS/networking config all the way up to CSS tweaks. Sometimes though, it extends to lower level things, hardware things, mobile development, more "business" things like SEO or understanding marketing -- it's similar to "a utility player".

I do think many people think of it in the context of just web dev, though.


> "Whatever task your business needs me to do with a computer, I'll figure it out."

My tag-line on my old personal website was inspired by Pulp Fiction: "Hi, I'm Winston Wolf, I solve problems."

These days I go with "jack of all trades" and "software engineering generalist."


I've been going with "senior dogsbody" for a while, although lately I've been road-testing "executive mega-fauna".


Find a company with maybe 1-10 employees and only 1 is a developer.

That person is full-stack :-)

System architecture, devops, database design, backend processes, server side code, website, design, ux, hi, html, css, js… the list goes on.


Ugh, too real. Being solo at a company can be great! It's also frequently very terrible. The lack of backup can be very draining and having to keep up with the entire surface area of of new tech makes progress slow.

There is only so much a single engineer can hold in their head and use efficiently.


+ network engineer


+ Tech instructor + And printer specialist + Consultant for the son/family of any of the employers. Or their family members


+ advisor for all colleagues that have had an idea about making "an App"


I agree with your definition.

But I also observe that a lot of companies have trouble coming to terms with the fact that they do not in fact need a FULL stack developer; they might need a front-end dev who can implement the occasional API endpoint themselves. But that person will never touch DB schemas or such.

I think Full-Stack has become a term that's too often used by non-technical people. just my two cents


In my experience that the frontend/backend separation was something that came out of developers who only wanted (or only knew how) to work on specific areas of the system and got business to adapt to that. Business and non-technical people eventually accepted, but many still long for the days of full-stack devs.

And I'm with business people here: coordination between multiple devs is definitely an overhead that impacts businesses and heavily limits possibilities of experimenting and iterating with ideas.

The separation is also often a kick the teeth of Agile ("we gotta do the backend before frontend starts") and performance ("just call those 5 endpoints N times, we don't have time to make an aggregated endpoint, should have told us before"). You can still have specialists for micro-optimisations and fine-tuning that SQL query, but the initial implementation phase really suffers from the separation.

There's also lots of "prejudice" and pedantry around the term "full-stack", and that's almost always from less experienced developers or students (which is why you don't see it here in HN but see a lot on Reddit), but that's another discussion.

It's even worse with developers who had some design training, IME. "Oh you say you had design training but I'm 100% sure you're absolute garbage in either that or in database modelling. Or perhaps in both!"


In addition to that, as someone who has worked in web for quite a while I also find it quite baffling that the to me mostly artificial separation of frontend and backend devs has led to programmers who can only do one of them.

Sure, everyone has a specialty, but writing frontend and knowing not one line of SQL or how to structure a database or working in the backend but not knowing a bit of HTML or CSS or how to configure a web server, these examples just seem like bad programmers?

You don't need to know everything, but surely you should know enough the have an idea of the system as a whole? How can you avoid doing shoddy work otherwise?


I personally have very little idea (read: no idea) of iOS & android development. As in, I have no idea what the execution model is there, how the OS libraries/APIs/ABIs are structured, how storage works (sqlite on both I think...?)

I trust our iOS & android devs though that if I speak to them about an API and we agree on a specification, that they are sure it can be implemented cleanly & efficiently on their side. But yeah, that requires an abstract understanding of computing as a whole, and good comms.

FWIW I wouldn't consider myself full-stack by any stretch :P


Front-end work today seems less like "knowing a bit of HTML or CSS" and more like "knowing a bit about these 5 competing front-end JavaScript frameworks" (and that list changes every few years).

But that's just the perspective of someone firmly wedded to the backend.


The list of competing frameworks hasn't really changed in a long long time. And often people have to know only one of them to have a very stable frontend career, and 99% of the time it is one of the top 3 (React/Vue/Angular). These 3 have been staples for what, 7, 8 years now?


What React is capable of hasn't really changed (code from back then will still work), but recommendations in that whole ecosystem have changed so massively in that time it can look like 2-3 different frameworks depending on what era it's from.

Angular is a total rewrite of AngularJS, that as far as I know is incompatible with the original (no firsthand experience, going off what I remember others saying about it). It was first released ~6 years ago, while AngularJS's last release was ~2 years ago.

No comments on Vue, never used it and I don't hear about it as much as the others.


Angular 2+ is almost six years old at this point too, and the devs who knew v1 still could use it perfectly. And people did successfully migrate back then. And for real: this is "a framework that got a breaking change between major versions". If that’s the worst example we have, I would say the JS ecosystem is doing jolly fine! I've had worst breaking changes in backend frameworks, to be honest.

About the other two: like you said, both React and Vue can still run old code, almost unmodified. The track record of those two is way better than most backend frameworks, by miles. It’s not even a fair fight.

Sure there's new concepts, but it's not arbitrary stuff or old patterns, it's legitimate stuff that makes writing UIs better. But the old ways are still there too.


You could make the same strawman argument in the backend world.

Backend work today seems less like "knowing a bit of SQL and PHP" and more like "knowing a bit about these 5 competing new programming languages".

I find it frustrating when my clients employees actively refuse to dive deeper because they "don't know how/I'm not experienced enough", well, then it's your job to figure it out, that's why they pay you money.

As long as most of us are "just" implementing bog standard web frontends and bog standard backends using some sort of SQL, then I find there's no excuse for not being able to pick up the slack, if you're asked to.


Somewhat opposite of that, I find companies also expect full-stack devs to encompass skills that are not developer related. I'm routinely expected to do a lot of product development work in order to define what it is I'm supposed to build.


Someone early in my career described “F shaped skills” to me, building on the older T shape [0] you may have heard of before. The idea being that the vertical stem of the F represents the very wide, but (somewhat) shallow, skills you may have. The two horizontal strokes represent multiple areas of very deep understanding and expertise.

To me, and I would describe myself as one among other things, a “full stack developer” in the “web developer” sense is someone with F shaped skills in web development. Able to to get by anywhere on the stack, but with deep understanding and expertise in both a particular backend and a front end tool.

An F shaped full stack developer is someone you can rely on to work on you whole stack, but with particular emphasis on a key front end and backend area.

Many people deride “full stack developers” as “jack of all trades, master of none”. I couldn’t disagree more, full stack developers are the artists of the web, the true creatives, pushing development forward and inventing new things.

0: https://en.m.wikipedia.org/wiki/T-shaped_skills


> Many people deride “full stack developers” as “jack of all trades, master of none”.

Because they forget the second part: "jack of all trades, master of none, is often-times better than master of one."

As someone with a huge passion for learning new things, I find remaining a generalist brings the most value to a company (as a contractor), as you're hired to deal with problem A, but if you can also help with problem B and aren't afraid of learning to fix problem C as well, you're worth your weight in gold.

Specialization is for insects, and engineers without ADHD.


Yeah, the Heinlein quote is pretty awful anywhere, and definitely not relevant here, given its original context.

Even a generalist full-stack developer (which I, too, am) is still specialized to tech work. Heinlein's "real man" is effectively impossible in the modern world, and reeks of a particular kind of "rugged individualist" prejudice.


Exactly, I quite like the term “multidisciplinary”, which I tend to use myself.


> Specialization is for insects, and engineers without ADHD.

Specialization is not just for insects if you want to do things like go to the moon or formulate a polio vaccine. It is the unfortunate nature of tough problems that they require a very deep, nuanced understanding to solve.


Of course, I was being tongue-in-cheek and mostly referring to software engineering.

And I didn't mean to disparage insects nor specialists. Both are incredibly important for the world.


F-shaped skills sound like π-shaped skills.


Yes, it’s seems many people have different names for it, pi, M, comb.


A useful conversation.

I majored in CS 24 years ago (am I old now?) and have had my fingers and toes just about everywhere in the last few decades.

I think your definition is pretty good but I think the primary question/problem is that too many people who don't really understand what it means just throw it around — especially in management/hiring/hr/etc.

At the end of the day, if you wanted to be nit-picky the response would be "what stack?" because no one is the master of all stacks and all things. I have worked with some amazingly talented people in my career and everyone has gaps, unless you're constantly learning and never building.

Maybe the real question/concern is that they're going to expect you to do N jobs and only pay for 1.

What you should really look for when you hire people isn't what they claim to know and ace on a "is X a native type in Y?" they question but instead how they think and how they can learn. Developers who are curious and want to learn are far better imo than ones that claim they know everything.


I don't think full-stack means "does everything". I think it's specfically used in the context of web development to mean "front-end + back-end" to distinguish it from jobs that do only front-end or only back-end.


Transistors, OS kernel, server runtime, server, client runtime (+ transistors, OS kernel), client, UX design, business matters.

But how it's used? A browser-based client and a bit of server code probably.


Some very nice answers here already. I would extend the definition of "a stack" to any plain where some wizardry is performed that is not trivial to learn. By doing this I am suggesting that a full stack developer or a generalist or a an entrepreneur are actually quite related.

These are the people who can see the big picture and have "enough skills to be dangerous" in each field. These skills are user experience, user interface, getting things done, communication, programming in various languages, architecture and devops, debugging and bug fixing.

Of course on the lower level there is API design, writing type safe code.

And on the even lower level there is optimising SQL queries, writing Chromium patches, designing network protocols, defining new EcmaScript primitives. These are extremely specific skills and people who can do them might have more narrow and deeper experise.

It ended up being a bit o a ramble, hope it hints at a useful perspective.


For me, full stack means, reading some data out of a database via the backend and provide it to the frontend.


I don't think many companies out there will let you play around with frontend, backend, system administration, databases, pipelines, etc., all by yourself. Companies nowadays usually have frontend teams, infra teams, backend teams. Each product team owns their repositories but anything related to infra, well, it has to go through the infra team. You may have some flexibility when creating services from scratch (infra team either has provided with some sort of template for that or they require you to open Jira issues) but you'll never get complete access to debug.

So, unless your are one of the first hired developers in a newly established startup that develops web products, fullstack means you are able to write api endpoints, db migrations and react/vue/whatever components.


This really depends which corner of the industry you're in. Per a variety of industry surveys[0] a sizable minority (often around a quarter of respondents) work in companies with fewer than 20 total employees.

I've worked in several of companies that size, two of which were stable, profitable businesses about a decade old. These small companies have 2-4 engineer-type staff, and they are expected to do everything - front end, back end, ops, and DB. In the same day I could rack a server in the colo, write some PHP/HTML/JS, manage a deploy, and troubleshoot MySQL replication.

Sometimes there's no one else to delegate to.

I found these jobs did the most to grow my technical skills. I developed the flexibility to tackle a wide variety of problems, and I feel confident diving into anything web-dev related. And as a bonus I've had an easier time passing contrived architecture design questions on interviews because I had hands-on experience with the whole stack.

[0]: State of JS, State of CSS, State of Postgres, StackOverflow survey


I consider myself full-stack, specifically I call myself "a full-stack web-and-app developer" this is why:

I've worked on everything from CSS to microcontrollers. For CSS/SCSS on the frontend (though I generally rely more on things like Bootstrap). I'm very comfortable working in JavaScript land. I worked with jQuery and Dojo in the 2010s and nowadays work with React. I've built "web view" style apps (an app you most definitely have on your phone) and worked with Android-Java and iOS-Objective-C native level code to interact with the phone-OS apis and make backend calls with auth, multi-level-caching, and retries.

On the "backend" I've worked primarily with Java (but Go and Python rock too) but other languages as needed. Mostly Spring Boot & MVC or Dagger+Lambda based backends using API Gateway, Ec2/Fargate/Lambda and cpu, and RDS and/or DynamoDB (depending on the use-case).

From college, I also have an EE degree alongside my CS degree and worked in IT part-time while going to school.

Professionally, I've also lead teams to deliver multi-year projects successfully. I conduct interviews, do mentoring, evangelize best-practices and CD/CI, and go on-call once every two months.

If there's a problem and it has something to do with a computer and the internet, it's safe to say I could help solve it and deliver what a company needs.

Like I said, I mitigate the "edges" by leveraging: I use bootstrap to avoid writing too much CSS and I use ORMs to interact with DBs. In the "middle" I let React and Spring do what they do best. I'll admit my SQL could use some work, but I've also been on teams with a dedicated Business Intelligence sector. I haven't worked a whole lot with "native" mobile views, again, leveraging "web-view" style (think React Native) UIs.

Sure, there are folks who spun up a react and express CRUD stack and call themselves "full-stack" but there are also people who have worked with many aspects of the bit and baud.


I consider myself just a "Web Developer". That's it. Do you need frontend? I can do it. Do you need backend? I can do it. Do you need a deployment script or a CI pipeline? I can do it. I'm in my 40s and I've been doing this since I was 17, so it's not that I'm special. I'm just old and spent a lot of time learning everything I can learn.

I'm terrible at designing, management, or "product" management. But I'm pretty decent at all of the others, stronger on some areas and a bit weaker on others, but I can do all of what's required to ship a working web application/site to our customers and I have a pretty awesome salary because of this.


Full-Stack means understanding the "Full-Stack" of whatevers tech the company is using. For most it means having a backend and frontend understanding like knowing java for frontennd and linux-basics as backend


I only ever see the term 'full-stack developer' used to describe what is essentially web front-end / UI work. This makes the term a bit of a misnomer in my opinion. I suspect it's more marketing (or possibly skills-laundering) than anything else - in the same scheme as what was once the "janitor" has become the "facilities maintenance manager" or similar.

People with the most experience with developing across the entire software stack tend to just call themselves "developers" (or alternatively "burnt out").


I was asked this in an interview recently. I answered that a front end developer works on things the user can see or touch; a back end developer works on the parts you can't see, and a full stack developer is a made-up term used mostly by management because there is no such thing as a person who is equally adept at the front and back.

I got the job, and I do think this is the real answer. Just be honest about which side you're better at and where your real experience lies.


> a full stack developer is a made-up term used mostly by management because there is no such thing as a person who is equally adept at the front and back.

You never witnessing it doesn't mean it doesn't exist.


They do exist but they are either a very talented and rare individual, or a jack of all trades.


Is jack of all trades used as a negative thing here? That's new for me.

Anyway, it'd be a jack of several things, probably. All is a bit hard these days.

If someone can be considered "senior frontend developer" with say four years of experience, and careers span four decades, it should be the norm to be decent at multiple things.


Jack of all trades means that you have a broad spectrum of knowledge but not deep knowledge in a specific field. If you are a very talented individual you can have both broad and deep knowledge. The trick here is that the definitions of "deep" and "broad" vary a lot depending on who you ask to. As stated in other comments, there are people that consider "broad" knowing how to write JS for web pages and a (simple) NodeJS backend and other that think you have a broad knowledge if you know how an eBPF script works in the kernel and also how the V8 engine optimizes your Javascript in the browser, and all the layers in between.


If someone can be considered "senior frontend developer" with say four years of experience, and careers span four decades, it should be the norm to be decent at multiple things.

Sure, but skills need to be kept sharp and relevant as well. There was a time in the distant past when I no doubt qualified as a "senior frontend web developer" (although we didn't use that term back then). However A LOT of things have a changed since then and I am out of date on the latest "frontend web develop" techniques and tools. Were I to want to get a job as a frontend web developer today I would no doubt be considered very much a junior.


There's a big difference between a senior who happens not to have worked on a particular tech stack in recent years and a junior that happens to have got started with that stack. The senior will definitely be able to command a significantly higher salary and within a fairly short period (months if not weeks) should be able to demonstrate that value. There's value in knowing a particular stack inside out for sure, but it doesn't match the general skills and experience you can only gain by having worked as a developer over a decade or so.


Yes, there are exceptions to every rule. We don’t need to point them out every time.


So we can just make up something blatantly false and say what you said when someone calls it out?


Imagine I’m setting up hurdles for some charity obstacle course event. I set them to 7ft high. Someone says, “nobody can jump 7ft high!” I reply that it has in fact has been done by someone, so their statement is false and therefore leave the hurdles at 7ft high.

I said we don’t need to point out the exceptions every time. Of course some people are equally talented in front end and back end, no one should take the statement literally. It is clearly hyperbole expressing that fact that most people are not.


Yes, this would be true if the rarity of someone who could write front-end and back-end code in proportion to the number of software developers was as rare as the number of people who could jump 7 feet is to the number of people who can jump.

It's more akin to extending the three-point line between college and the NBA. While extending, you say "but nobody can shoot from that far away" while NBA hopefuls are draining shots just out of your view. Sure, the line is too far out for college, but there are _plenty_ of professionals who can shoot from that far out who are both in and out of the NBA.

Sure, nobody at a charity obstacle course will be able to perform at the same level as a professional. Good thing we're talking about professionals software developers when we talk about full-stack developers and we're not talking about professional nurses or amateur painters.

It's rare within the general population, but it's not rare within the world of software development.


It's rare enough within software development that not every company can hire only those people.


Nobody is exactly equally adept at two different things, but there are certainly people who can do both frontend jobs and backend jobs at a sufficiently skilled level. Full-stack is a term that exists, so shouldn't it apply to them?

The thing is of course that there are many different stacks, and that someone can do both frontend and backend doesn't mean they have a lot of experience in the exact stack a company wants to recruit for. But that can't be helped, you can't really expect a two word label to cover all the complexity involved.

It's become popular to combine JS frontend work with JS in the backend, and share code between them. That makes it relatively easy to be full stack. So for some people, it doesn't mean more than that exact stack.


> because there is no such thing as a person who is equally adept at the front and back

That seems almost completely impossible, right? I'd call myself nearly equally adept at both as I have spent all of my career doing both in equal measure. Certainly there are others like me. I work with several. I have worked at past companies with many more.

I have never understood why some thought it so strange that people have multiple skillsets.


Nobody's questioning that a good percentage of modern developers are capable of and expected to do both front and back-end work. But I'm in the camp that says they use different mindsets and it's a very rare individual that excels in both. Like, I know I'm a better-than-average front-end dev, but that's only because the average isn't much to boast of. I certainly don't feel especially productive compared to how much I can achieve when focused on the backend side of things. But it's nice to have a change every now and then I guess.


Is it not about having the skills and experience to get by everywhere in a stack? So if someone is missing, you are able to pick it up, even if you usually don't work with that part? Rather than say "that is a backend job, I am frontend". Perhaps usually you work frontend, but once in a while, something needs fixing in the backend and you are the best one to do it, due to sick leave, deadline crunch or whatever...


It just means programmer. It's exactly the same as a programmer in the 80's, someone who does (or can do) the whole application from metal to screen.


Nothing wrong with calling yourself full-stack. If you're seeing a lot of job offers that are just "client-side web dev with a bit of backend node" and that's not what you wanna do, just ignore them. I personally wouldn't bother using "full stack" as a search term when actively looking for jobs though (not that I've done a lot of that in recent, um, decades...).


I call myself full stack because I can -

1. Write sql, work with databases & nosql stuff.

2. Work with server side code in C# & nodejs. Read from some data source & built API’s.

3. Create a usable product in React / React Native / NextJS / Vanilla JS making use of those API’s.

4. I can make wireframes, design stuff in illustrator/photoshop.

In general I think people who can built complete products end to end are full stack developers.


In most job ads, "full stack" means, "we don't want to pay for a full team so you'll have to do everything."

You have the misfortune of being a generalist in a world that does not value generalists. Best bet is to look for a job in one area you like, then continue to help out wherever needed. This is probably easier at a startup where roles have not yet hardened.

Good luck!


A full-stack developer is expected to be able to work in all the layers of the stack. [0]

[0] https://en.wikipedia.org/wiki/Solution_stack


In the grand scheme of resumes, job posts and getting hired it just means you have experience working in both front end and back end technologies. Pretty much it, anything else is just noise. Know php and react? Congratulations you are a full stack developer.


I just say I'm a developer who's done frontend, backend, and devops-y stuff for web systems. To anyone but a recruiter or manager who hasn't coded in decades, that's enough to clarify for them.


After some point of the experience you don’t care about the labels game at all.

You’re just a software engineer. Period.

And you try to avoid those inexperienced hiring managers/teams who still play these silly naming games.


"Full-stack developer" refers to someone whose context is so tightly scoped to web application development that they don't realize how many other kinds of software there are.


If you need a system built and you can only afford one person.


I agree with your definition but I think mostly javascript frontend devs who know Node.js mostly tend to use that definition when defining themselves.


All of the children from the coding bootcamps need a way to compete with you so they call themselves Full-Stack Developers. The recruiters and hiring managers are hyping these under qualified people up so they can get their head-hunting fees. Now you have Full-Stack Developer meaning "any asshole who says they know react" because, you know... it's connected to a database or something just hire me I don't want to go back into construction.

Welcome to the new normal.


Why are you being so hostile to people from other professions trying to make it in Web Development?

As a web developer of 20 years, this has always been a field of self-educated professionals with widely-varying backgrounds and abilities.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: