
The full stack developer is a myth - PretzelFisch
https://blog.growth.supply/the-full-stack-developer-is-a-myth-4e3fb9c25867
======
andrewstuart
My definition of a full stack developer is someone who is able to build and
deploy a complete working application with no-one else's help. That means they
can write the back end, the front end and configure the servers and of course
design the database tables.

That said, as a recruiter I'm seeing employers now who really won't consider
candidates unless they are expert front end and back end developers. That's a
pity as I'm not convinced that's useful where there are three or more members
of a team building a web application. Browser development alone is easily
enough to occupy all the available work time of a single developer.

~~~
applecore
If you can design 1) the database schema, and 2) the application's frontend
(either web or native app), you're essentially a full-stack developer. What's
left are the operational details increasingly handled by service providers
(like AWS).

~~~
dkarapetyan
Really, it's funny you say "operational details" in such a dismissive way.
Even when you're in AWS I dare you to not worry about the "operational
details" when shit hits the fan, e.g. your database offed itself and you need
to figure out what the hell just happened.

~~~
PopeOfNope
_Really, it 's funny you say "operational details" in such a dismissive way._

Is it possible you're projecting? Ops is vital to launching an app, but it
also has little to nothing to do with the development of that app. It's a
completely different skill set.

~~~
benjiweber
I think we can work much more effectively with ops a core part of the
development process.

If you spend weeks/months building an app and then launch it and find nobody
wanted it then you've just wasted a lot of time and effort.

If you spend weeks/months building an app and then discover you can't deploy
it in the way you planned because of an operational detail, you're going to
incur a lot of rework.

How long is it going to take you to get your app into production?

If you start right from getting your hello world webapp into a production
operations environment, then iterate until you have something you can start
testing with users you won't have any of these problems.

You will however, have to start considering operations from the start. There's
a lot less waste, it's lower risk, but you can't ignore operational concerns
as someone else's problem.

------
learc83
I'm a full stack developer. I exist, and you can hire me for $800 a day if you
want.

I've always used the term to mean that I'm comfortable on the back and front
end of things, and that I have a wide range of experience that means I'm
familiar with _most_ of the technology you're likely to use. It also means
that I can build an deploy an application from the ground up, alone if
necessary.

A full stack developer is just a generalist. A good one is super useful if you
only have a few employees, or if you're building a new project.

At some point, you reach the level where you need dedicated specialists, and
at that point a generalist can often transition to a management role.

I don't think I'm alone in this--I can't do this stuff because I started
coding at 12, or because I was born a genius. I learned it by bootstrapping a
startup--doing everything myself from designing hardware, to web development,
to handling customers.

~~~
ai_ja_nai
Question: since breadth usually is the inverse of depth, FSDevs are good
enough to stay afloat in all fields; this means that an expert (someone who is
specialized) is always able to crush a FSDev in his own field of expertise.
So, FSDevs are always the rookies in all fields, compared to specialized devs.
Does it make sense to put a FSDev in a big team?

~~~
learc83
You know the saying "quantity has a quality all its own".* Sometimes being
able to draw on a wide breadth of experience allows you to see the bigger
picture that most people miss. Even in an almost perfectly modular system, you
need generalists sitting on the borders.

Take the case of a product that consists of a back end API, a single page web
app, and a mobile app. Who do you want designing the API? I think ideally the
answer is someone who has some experience with all the systems involved.

I've been on teams where the back end guys designed the data model and the API
and forced the front end to conform to that. And I've been on teams where the
front end team ran the show--in my opinion neither situation is optimal.

> this means that an expert (someone who is specialized) is always able to
> crush a FSDev in his own field of expertise. So, FSDevs are always the
> rookies in all fields, compared to specialized devs.

I think there's a few different things to say here. First, I think most teams
aren't really made up of experts. Mostly because most teams can't afford to be
made up of experts, and because most teams probably don't need that many
experts.

Second, there is a huge amount of overlap in most developer roles, so a lot of
experience in one role transitions very well to other roles.

Third, most good generalist developers probably have some field that they
actually are experts in. You've probably heard the term "T shaped developers".
Their field of expertise might even be something like domain knowledge or
management.

And finally, for most developers, there is a limit to how specialized you can
become. To have along successful career in software development you can't
afford to become completely specialized. If you plan on writing software for
40 years or more, you're probably not going to be a Rails specialist for the
entire time.

In the end, I think a good team requires a decent mix of specialists and
generalists to function well.

*usually misattributed to Stalin

------
EToS
Some people are generalists, others specialists. I dont think either fully
appreciates the other as much as they should.

Companies that get it right in my opinion find room for both, however in my
experience the larger the company the less likely you are to see full stack
developers or generalists due to the pressures of organisational structures
and high level ownership.

------
crack-the-code
The thing is, this also assumes that job postings are an accurate
representation of the employer's expectations. I think it's a common trend for
employers to ask for much more than they realistically want, in exchange for
weeding out those who feel incompetent and unable to meet certain
requirements.

That being said, I think that when employers ask for full-stack developers,
they actually want someone more experienced in a certain part of the stack,
yet still familiar enough to get their hands dirty with other parts of the
stack but not necessarily at the expert level. In other words, candidates who
are more well-rounded yet focused in a certain area of expertise will likely
stand out the most and meet the employer's expectations.

~~~
icebraining
Also known as T-shaped developers:
[http://blogs.msdn.com/b/thebeebs/archive/2012/04/01/the-
rise...](http://blogs.msdn.com/b/thebeebs/archive/2012/04/01/the-rise-of-the-
t-shaped-developer.aspx)

------
digitalzombie
I'm a full stack. I do front end (bootstrap,bower,npm,etc..), backend
(laravel,composer, data modeling with Relational and Nosql, I also webscrap
and do api), and dev ops (ansible,apache). Just not master of anything... It's
not a myth. The myth is expecting them to be master of every aspect.

The website is pretty bad with Privacy Badger on btw.

------
velox_io
I guess I'm a full stack developer, does this mean I'm some sort of mythical
creature?

No, my specially is the back-end. I got to know CSS when the designer went
AWOL a couple of weeks before a project was to go live. I've grown experience
in javascript because I couldn't find a decent front-end developer for the
right terms.

Programming is a mix of learning the theory (the same principles are repeated
regardless of the technology), and practice (I enjoy programming/ exploring so
it doesn't feel like a chore).

I've been doing this [professionally] for nearly decade. Had I not had a deep
interest in technology, I'd properly be working on some ancient codebase doing
a job I hate.

------
airza
well, if you make up a definition for the term for the purposes of your
article about how it's an impossible definition to meet, i guess you can write
that article.

~~~
wintom
Lol, Excellent point.

I was going to say, although full stack is pretty loose, it isn't that loose.

Full stack means you can touch front end code, backend code, and you can
design a table or two or dump a few things into a NoSql Db for persistance.
That's hard but it's not impossible at all.

------
mixmastamyk
Not a myth, I'm a full stack developer with 20 years of hardware, admin, qa,
and software experience, but haven't found it easy to find a new job I'd like.
Not sure if the problem is that I only apply for "awesome" jobs, which are by
definition hard to get, or I have too much experience?

Also I tend to speak modestly of my achievements, another character flaw. In a
recent interview, I told the guy I hadn't used the django-rest-framework
package, and didn't think much of it, seeing as I have five years of django
experience, and use rest apis every day, and occasionally create them. You
could hear a little let down in his voice, though. I haven't been able to
bring myself to lie about silly things like that--really would it have even
taken me an hour to master?

However, you never know why exactly you don't get a job, maybe they had
someone local or cheaper and didn't want to bring in someone from outside the
bay area. Usually ask $150k for a full-stack senior dev in SF, is that
reasonable?

------
BadassFractal
Not really a myth. I do full-stack development. Anything from Ops (will
happily configure and deploy to AWS with various CM tools, will set up
centralized logging, will set up and configure alerting and monitoring), to DB
(been a postgres user for half a decade, dbs with hundreds of gigs of data) to
backend (single-handedly built my own Rails-like framework that we used to
service millions of users) to frontend (can sling together anything from raw
DOM to Backbone to React). The downside is that I'm not really a hardcore
expert at any of these things, so any good specialist from any of these areas
will be better than me. My role is best for smaller teams spinning up new
projects, not as much where you'd need the top 1% professional in a certain
area. Definitely wouldn't hire myself if I needed a specialist in a specific
area.

------
bryanlarsen
I can (and have experience to):

\- size and pick your IC's

\- review and debug your schematic

\- review and debug your FPGA's

\- bring up your board

\- port a bootloader to your board

\- port Linux to your board and/or custom SOC

\- port a Linux userland to your board

\- write backend services in many different stacks

\- write frontend stuff in many different stacks

\- setup a nice ops infrastructure

(And with the exception of some of the OS X specific stuff on his list, that
too).

But all of that really doesn't mean much more than that I'm old. Experience
matters.

------
jvehent
You can be a full stack developer. You cannot be a full stack expert.

Expertise takes focus and time. At some point, you have to make a choice
between knowing a bit of everything, or knowing one thing very well. There is
no bad choice, both are valid careers.

------
ap22213
I'm a full stack developer. Although not an expert in all areas, I'm efficient
and productive in almost all of the areas listed.

Then again, I'm creeping on 40 and thus, slowly getting fewer and fewer
recruiter calls. This is definitely an industry that prioritizes youth (i.e.
low expense) over execution, experience, skills, and breadth of knowledge.

But, also, I'm probably only in the top 10% (sampling over the over 200
developers that I've worked with). And, I've worked with a few exceptional
people who would destroy me, in overall comparison.

~~~
Corrado
I'm in the same boat; only I'm creeping up on 50 and have been working with
computers since the early 80's (TRS-80 Color Computer). I have worked on most
computing systems that you can think of (zOS, HP3000 MPE, Linux, AWS, Ruby on
Rails, etc.) and am constantly looking at the next new thing (Rust vs. Go).

The problem that I seem to be running into is that I'm not a super speedy
coder who is able to build a full featured Rails app (with tests, DB, front
end JS, etc.) in 8 hours. With age I have definitely slowed down, but I've
gained so much experience and knowledge about what will work well and what
path you shouldn't take. I guess that experience is really only needed with
smaller companies who can't afford to make the wrong decision early on.

------
banachtarski
Meh, I'm sort of in agreement. I went from backend, distributed systems, and
ops, to full-on graphics engine programming, to compilers, and back again.

Even the list he writes isn't exhaustive at all. You're basically either an
engineer, or you aren't. If you are, you should be able to learn anything
provided you have the math background for the more specialized things.

------
moron4hire
That's because, for an extremely large portion of the "businesses who employ
programmers" market, most of that image is just not a thing they do. I've
never seen an ASP.NET consultoware shop do anything with PaaS, containers,
load balancing, package managers, automated server management, search,
automated configuration management, security auditing, or real UX design.

You usually have one guy or a very small team managing an on-site closet full
of hardware, which is running an operating system you're probably not going to
like, that is _maybe_ virtualized, if you're lucky. That's all lumped under
IT, so the same people are responsible for answering support calls, setting up
email accounts, and installing network connections.

Then, on the development side, you have a particular web server, database,
programming language, and application framework being used for _every_
project, no possibility of doing anything else. The people who are hired here
are expected to be able to make fool-proof instructions for the IT staff to be
able to install the programs on the server.

And there is nothing in between. IT owns the hardware were the software runs,
but they know nothing about how the software is made or what it needs. If
something goes wrong, there had better be a developer on hand to "just fix
it". Developers own the software, but they have zero access to the hardware,
so preparing deployments is basically a ritual of finding the IT guy who hates
the lead developer the least and hope he has time play telephone game on
script runs that the developer massages based on his screenshots that he
pastes into MS Word documents and emails.

If you're particularly lucky, your team figured out what sort of joke your
"Corporate IT infrastructure" actually is and they communicate completely
outside of the issue ticket tracking system that you installed to try to
measure productivity because you have no clue how to evaluate anyone's work
because you only have an MBA and have no idea how software is actually built
or what kinds of problems IT departments actually face.

------
loph
The "full stack" listed in the article was missing growing the silicon and
screwing the servers to the rack. Seriously, the list of what the author
considers "full stack" was extreme. Otherwise, I know a lot of people
(including myself) who can build you a high-performance web-app from scratch,
using current tech and what I consider to be a "full stack" (most of what is
mentioned in the article).

The author just cannot afford to pay them. Because that kind of skill comes at
a high price. And that's where the bitching starts -- you cannot find a
competent, capable "full-stack" developer who wants to work for chump change.
People with those skills know what they are worth, and expect to get paid.

~~~
arenaninja
> The "full stack" listed in the article was missing growing the silicon and
> screwing the servers to the rack

This is funny, but I actually know a guy whose last full-stack job entitled
just that in addition to his dev duties! Since they self-hosted, he was
responsible for data redundancy, etc. The guy's experience was definitely
impressive

------
arenaninja
I recently changed jobs. I've been "Full Stack" since I began and was "Full
Stack" at my previous job and am "Full Stack" at my new job. But the author is
spot on that "Full Stack" has meant different things at each of those jobs. At
first, it was VCS+JavaScript/PHP/HTML/CSS. Then, Jenkins deployments+Apache
server configuration+Bootstrap+Foundation+Laravel were tagged on. Now, it
includes Nginx+Mongo+RabbitMQ+Elasticsearch. But I don't know that I agree
that it's as meaningless as "Ninja". I think of it more along the lines of
"here's our stack, we need someone who can tinker with any element within it"

------
ownagefool
So if you substract the "User Design" list, I'm full-stack from the
definition. I'm not a genius but I'm also not pretending I can host an app
just because I can push start on a VM. I've worked at senior level in both
dedicated frontend, backend dev and ops teams separately. I'm 30 with about 8
years experience.

The thing is there's basically no real advantage to being full-stack. I get
paid more to specialise in either seperately. Tons of people see the cross-
over as a negative. My competition are guys put apps live without testing them
because the PHP server isn't incredibly different and they're totally full
stack experts. :)

------
nck4222
In my experience when a job description is posted requiring a "full stack
developer", they mean someone who can do some UI, business logic, and DB
coding.

It doesn't mean they're looking for someone who is an expert in every aspect,
or has skill sets in all 18 tiers that are listed in the article.

So yes the definition of "full stack developer" that this article uses means
that there are exceedingly few full stack developers. But the definition
implied by most job postings I see are a lot more reasonable than this
article.

------
emptybits
_“True” full stack developers exist, but so do geniuses and people who have
been coding since they were 12._

Exactly. There's no need for the headline bait. Neither full stack developers,
nor geniuses, nor 12-year-olds who can program are _mythical._ They're just
uncommon. No news there. If you think your project needs one of the former,
you can find one. I'm sure we all know or work with people in all of the above
three "mythical" categories.

------
bentona
In my experience, "Full-stack" usually means knowledge of the web framework in
question (Rails, Django, etc), as well as CSS/JavaScript mastery (Programming,
Frameworks, and Front-end in the article, maybe some Databases and Security).
I've never seen "Full-stack" refer to DevOps or UI/UX design.

~~~
jrbancel
Absolutely. "Stack" in "Full-stack" always seems to refer to a Web stack where
the back-end is a database, a framework and maybe a service such as
ElasticSearch or Redis.

I might be biased but to me, this is web development, not back-end. Back-end
is designing distributed systems, data pipelines, trading systems, databases,
etc... It has nothing to do with Web development.

------
whistlerbrk
The ends of the spectrum of the shown chart are not what I would consider in
the wheelhouse of a "developer".

The top of the list is systems administration and the bottom of it is project
manager and graphic designer.

A front-ender needs to know enough Photoshop and Illustrator to take comps and
turn them into templates.

------
emil10001
I would qualify, I've done both servers and Android at Talkray. It's been a
while since I have done both in the same day, but basically, if something
broke on our Android client or server, I could jump in and get a fix, same
goes for new features, and handle the server deployments.

That said, I'm happy that I don't have to do both. Oh, and right now, nobody's
going to poach me. =)

------
vorg
The term _full-stack_ was quickly picked up by other more contrived "stacks"
besides the well-known ones (cloud, mobile, web, PC, mainframes, etc) and used
to promote their own gimmicky products, _and_ as an excuse to muscle in on
their partners businesses and bundle their products.

------
brockf
While I agree that it is unreasonable to expect someone to deeply understand
the current state of all of these technologies/problems, an actual "full stack
engineer" needs only to be able to _learn_ very quickly about these problems
and, ultimately, make things work.

------
Kudos
I think this whole debate is just people pedantically obsessing over the word
"full". What 99% of job posters actually mean with the term "full stack (web)
developer" is that they are looking for someone with _core_ skills on both the
frontend and backend.

------
dblock
I tend to hire people for what they will do, not for what they have done.
AFAIK, full stack means someone who will be able to work at all levels of our
stack to deliver something that works on top of the surface (eg. UI) or edges
(eg. API) of the stack.

------
spacemarine
Welcome to the what it means to be a start up founder. Not only do your
customers expect your product to be high quality, but you dont have enough
resources to dedicate to running, maintaining, or developing any given layer
of the stack in isolation.

------
nazka
It's not a myth. Or you are specialized in one or more complex skills in one
field. Or you are specialized in knowing as much as you can in every field to
build something out of it. So or you are specialized in a field like
deployment (AWS, boto, Chef, docker, kubernetes, Mesos... and the list goes
on), or like front-end (React, bootstrap, CSS3 reactive design...), or iOS
app, back end, databases... Or, you are specialized in connecting all these
dots. And this is a full stack developer.

Just knowing how to do the "operational details" is a job in itself. It's a
job to work on very specific things at Google/Apple/FB, and it's what they
need the most: developers who are the bests in their field. On the other side,
it's also a full time job to know how to build a website with RoR with a RDBMS
db and cache db, maybe on AWS, and even with some React in it. It's already
quite a lot. And this is more what startups wants. Or at least a few of these
people as a team leader or working closely with every person in their team to
connect their dots, to design the app/web app/web site as a whole.

Now yes ask to a full stack RoR dev how to design and code a database and he
won't know, ask him even how to do specific things on AWS and he may not know
either. But he will know how to design and build the whole product from A to
Z, and to manage people doing what he can't do. And at the opposite ask an
expert in iOS apps how the back end really works when he sends a request to
their Restful API and he won't know. Same thing for someone specialized in the
back end and you ask him something about React. Both are specialised in one
stack.

Or you want to master specific tech/stack/field and you become specialized in
one of them, or you become broader and broader and you become a full stack
developer. It can be full stack dev in iOS (so maybe with some NodeJS in it to
do Restful API), or as another example a full stack dev in big data (so I
guess: Python Luigy, MapReduce, Spark, Redshift, Scala, Java, AWS...). At the
end of day our time is limited and we can't be specialized in everything so if
what we love the most to do is to use

Personally as a full stack dev, I am like a small CTO and can be one. I love
to have the whole picture in my mind and to know how everything works together
on a higher scale. I love all these tech around (AWS Boto, Docker, Vault,
Consul, Spark, ML...) and I am like a kid who with a new toy when projects
like these ones come out. I prefer to read an articles on Highscalability.com
about Airbnb or Uber and do the same, rather than crunching SQL requests.

------
sklogic
Gcc and make? Server management? Interesting.

Anyway, I could never understand the meaning of this new buzzword. Can anyone
explain what does a "full stack" developer mean? Is it something from the web
world?

~~~
herval
It usually just means "Javascript coder with a decade of experience in <random
frontend framework that exists for 6 months> and nodejs"

~~~
timrichard
Hehe. I'm currently working on a "full stack" contract as a solo developer,
where the mandated stack is AngularJS on the frontend and NodeJS on the
backend. I like it a lot. The only thing I'd swap on the gig is MongoDB.

Other than that, I've been programming for 35 years (started on 8-bit micros
when I was eight). At the last reckoning, I've racked up over twelve different
languages on four different operating systems. I've programmed IBM mainframes,
DEC minicomputers, PC servers, Linux set-top boxes and smartphones.

I've caught a tan from the glow of IBM 3270's, Wyse 50's, DEC VT220's, and am
currently very happy with NodeJS on my Macbook with AWS as a deployment option
(which I refer to as "the mainframe").

You should be careful before labelling people.

~~~
herval
Not labeling anyone, just the use of the buzzword - not sure why you drew that
conclusion (edit: your current gig fits exactly the "lazy caricature". The
irony!)

~~~
timrichard
So what did you mean by the lazy caricature? A lot of developers are solely
responsible for the presentation, server and DB layers.

------
vvanders
The article should say "Full stack web developer" considering there's plenty
of domains where you can be full stack without hitting any of the listed
technology.

------
edward
Previous discussion:
[https://news.ycombinator.com/item?id=7854504](https://news.ycombinator.com/item?id=7854504)

------
c23gooey
Im a full stackoverflow developer ;)

------
phpnode
Hi, I'm a full stack developer, I can tick every box on that list, and I've
been programming since I was 7, not 12 :). All this stuff can be mastered
given enough time, effort and by choosing projects which broaden your
technical horizons.

Coincidentally available for contract work right now...

~~~
icebraining
By tick every box, do you mean every layer or every component?

~~~
phpnode
Every layer, I don't think _anyone_ is an expert in _all_ of those components,
but I've worked with about 80% of them.

~~~
icebraining
Yeah, becoming an expert on one or two components per layer doesn't seem
particularly hard, given a few years of experience. Except for a couple of
layers, I'd consider myself well-versed (not an expert) in at least one
component per layer, and I'm not a particularly studious person.

