
What “full stack” really means to the job market - dasmoth
http://chrismm.com/blog/what-full-stack-really-means-to-the-job-market/
======
lojack
I couldn't disagree more with this entire article.

> the self-taught web developer knows surprisingly little about the web’s
> underlying technology.

I know very few developers who aren't self-taught. In reality the opposite
seems to be true. It's the developers who take a course and don't continue
learning that stall. This is something technologists (even non-developers)
absolutely _need_ to do -- self-teaching. The article even contradicts itself
with the very next line.

> Language-oriented courses cannot cover the complete web stack, and students
> will end up clueless about what an htaccess file does, or how to restart a
> Unix daemon, or how the different types of POST encoding work.

Then, there's this...

> There was a time when looking things up on Stack Overflow whenever you had a
> problem just wasn’t an option, and many pieces of software had unreadable
> documentation, if they had any at all ... That is the environment where
> hackers thrived, and that’s what we are going back to, sooner or later.

It's almost as if he's nostalgic of the way things used to be. Like things
were better when the documentation was terrible and you couldn't look things
up. To all of that, I say good riddance.

> If every time you find yourself dealing with a complex issue that affects
> multiple technologies your first instinct is to search on Google, you should
> reconsider your working habits.

I'd actually argue the opposite. If you ever find yourself with a complex
issue that affects multiple technologies, your first instinct _should_ always
be to google it. Sure, you should understand the problem and all, but there's
no need to make your life difficult just for the sake of "being a hacker".

> I have met many programmers that don’t like to code in their spare time, and
> that has reliably revealed them to be sub-par developers.

Disagree 100%. Some of the best developers I've met understand very well how
to separate their work. The stereotypical hacker that works all through the
night on obscure problems tend to pidgenhole themselves and lose sight of the
purpose of programming. They also tend to be the ones that burn out to epic
proportions. It's a very unhealthy mindset to have, and to be encouraging
others to have.

~~~
walshemj
And conflating full stack with just front end and back end doesn't help to me
full stack means layer 1-7

~~~
quesera
"Full-stack" was never a reference to the OSI model.

You can spend your whole career deep in the layer 7 weeds nowadays. A legit
"full-stack" technologist will dive into layers 6 and 5 occasionally.

Below that you're talking about TCP/IP, BGP, Ethernet, and fiber. The beauty
of the model is that each layer doesn't have to care about the implementation
details of other layers, and that's reflected in hiring as well.

Nomenclature aside, some of us really do span layers 1-7. But layer 1 is
pretty boring, and there's not a lot of value to add in layers 2-4 honestly,
except in extraordinarily demanding environments.

Even the people who think they work at layers 3 and 4 are usually just using
layer 7 tools to manipulate configurations for layers 3 and 4.

~~~
walshemj
Its how I perceive it - if you cant design an implement a full 7 layer stack
for simple applications (ie CCNA level) you should GTFO

"The beauty of the model is that each layer doesn't have to care about the
implementation details of other layers"

Err having worked on international OSI interconnects id take that statement
with a bucket of Salt -)

------
niftich
The 'full-stack' trend is a reflection of rising, dare-I-say unrealistic
expectations, one which the author supports by their recommendations in their
blog post. By perpetuating the notion that the only 'true way' to be a good
developer is to structure their lifestyle around understanding implementation
details behind all the layers of a modern tech stack, they place an unnatural
reverence on the mythos of hackerdom while ignoring that software development
is not solely a creative pursuit.

As it stands now, 'full-stack developer' is a euphemism, which in hip new
places means ' _we want you to live and breathe code, because you will be
given vague requirements and expected to deliver the entirety of the solution
from the bits moving across the wire to the UI espousing the latest visual
design language in less than a month_ ', and in established places means ' _we
want an infusion of new blood to bring sanity to some legacy code and we 're
counting on you to debug and fix everything by yourself_'.

------
PaulHoule
A lot of it is bullshit.

One of the most common recurring posts on HN is "it is impossible to estimate
software projects"

Well yes, if you refuse to use a stable stack you will need 300 hours to chase
your tail when you could have solved your client's problem in 30.

Writing the average bizapp as an SPA would be like your doctor cutting off
your leg because your knee hurts. In any other field we'd call it malpractice,
but is is called being one of the cool kids in computing.

~~~
dragonwriter
> One of the most common recurring posts on HN is "it is impossible to
> estimate software projects"

Its not so much that it is impossible to estimate software projects as it is
that the analysis necessary to estimate software projects with reasonable
accuracy involves doing a substantial portion of the work required to produce
the solution -- which means that _accurate_ estimation that is _useful_ for
decisionmaking is elusive, not that estimation is impossible.

~~~
bediger4000
I heartily agree. This view is actually supported mathematically. See "Large
Limits to Software Estimation"
([http://scribblethink.org/Work/Softestim/kcsest.pdf](http://scribblethink.org/Work/Softestim/kcsest.pdf))
by J.P. Lewis. Supplementary materials:
[http://scribblethink.org/Work/Softestim/softestim.html](http://scribblethink.org/Work/Softestim/softestim.html)

------
rdtsc
I proudly call myself a 1/2 stack developer. Didn't put it on the resume, but
I used tell that people who were interviewing me, it makes for a good joke to
break up the ice.

So I know one half, but I know it well. Yes, I've heard of front end
frameworks, some design ideas, some CSS but I might as well say I don't. Well,
so far it has worked pretty well for me.

I also heavily interviewed for my company before, and would usually be pretty
leery of who claimed they are "full stack". Yes, some candidates were really
good and knew both sides, but most just knew about superficial stuff on both
ends (which is ok too, just not for what we were hiring).

------
anthonybsd
>I have met many programmers that don’t like to code in their spare time, and
that has reliably revealed them to be sub-par developers.

Whatever little credibility you had up to this point you've just lost.

~~~
mschuster91
Not exactly, because someone who explores other technologies unrelated to
his/her "work" field will inevitably pick up experience and knowledge - which
the employer can grab for free without sending the employee to expensive
courses or having to hire highly specialized freelancers.

I have done a lot of weird things as "hobby" projects with even weirder
technologies, including interfacing with smartcards in PHP (don't ask),
working with cheap-ass Chinese thermoprinters, electronic chips, devkits,
FPGAs, operating a mixed OpenLDAP/AD stack,... and I very often have profited
at my job from the knowledge I gained while developing.

Oh, and someone who never heard of Apache rewrite rules please shouldn't call
himself a full-stack developer. Ops (and being able to formulate ops
requirements to a hoster!) are a part of the stack, too, not just deploying
some nodejs stuff to a container in the cloud.

~~~
Benjammer
But the point is that it totally depends on the person and it's not this hard
and fast rule.

It's also vague to the point of meaninglessness considering all the various
kinds of technologies and depths within those technologies one might be toying
with in their spare time.

I would argue that the general intuition that many programmers have about
people who code in their spare time is simply a too-narrow view of the
picture. It's more about people who are really good at LEARNING, and people
who code in their spare time tend to become very good at self-teaching new
things and figuring out how different systems work and interact.

A developer can be good at learning as long as he or she is practicing
learning _something_ in their spare time, but I don't think it has to be a
side project (or even technology-related at all) to see a benefit in
professional productivity.

~~~
vonmoltke
> A developer can be good at learning as long as he or she is practicing
> learning something in their spare time, but I don't think it has to be a
> side project (or even technology-related at all) to see a benefit in
> professional productivity.

This is an excellent point. I have lots of side projects outside of work. At
the moment, none of them involve code but they all involve learning things;
some of them are even fairly technical.

------
Xyik
Most full stack developers have breadth but not depth. It's incredibly time-
consuming to have a complete understanding of the entire stack and no matter
what you do, even if you live and drink code and do it all the time you will
not be a complete engineer, there is just too much and you will never retain
it all. Rather than try to be this ninja superstar that start-ups all look for
these days its more realistic to be able to work full-stack but specialize in
a particular field. Machine learning and a solid academic background in stats,
math and understanding of concurrency will get you just as far as a guy who
knows React, Sass, HTML5, Python, Ruby, Go, MongoDB, MySQL, AWS, Redis,
Celery, Kafka and Hadoop.

~~~
ScaryRacoon
I recently move from a full-stack position into a more focused position. I
felt like I was "jack of all, master of none" which really irked me. The time
I was given for training was good, but it had to be split among all the
different layers of the stack which meant I never really got an opportunity to
get deep into any particular layer.

------
Animats
The article never answers the question in its title.

The basic job of management is to organize the division of labor. In practice,
"full stack" seems to mean "we don't know how to divide up the problem, so we
want people who can cover for this management failure".

~~~
leepowers
Also - "full stack" can also mean "we don't want to hire another developer, we
want one person to (poorly) do the job of three other coders"

------
at-fates-hands
>>> Whenever you have to google some error message or problem, read all the
answers. Get as much context as possible on your problem, and do not be
satisfied just with having come across a solution.

This is a fatal flaw.

Considering a TON of JS frameworks are so new, there just isn't a whole body
of data on issues people are experiencing.

I don't how many times when React started getting traction, I'd google an
issue I was having and there was one Stack Overflow question about, and one
answer and neither had been upvoted. No tutorials available and posting
something on the Google group was about as effective as lighting my hair on
fire.

~~~
akkartik
And then there's the converse problem with older frameworks like Rails: you
google a question and you find three different answers, and now you have to
figure out which of them work in your context (because your context can't be
summarized by which version of Rails you have).

If you're googling something about Linux it's even common to find that _none_
of the answers fits your context.

The more "full-stack" I get, the more I just hate all stacks. Everything turns
to shit if you give it long enough.

~~~
polotics
"Full Stack" == VHDL / BPMN / ITIL / PDDL / .this !!! ;-) (and of course,
IGMP)

~~~
polotics
oops sorry I forgot to mention sharding!

------
woodpanel
I don't agree with the author.

But full stack became a thing in job ads for a reason. And in my opinion the
reason isn't because fullstackers are better. It is because of the dissonance
between being able to see what cadidate needs to become your employee and
being able to reach those candidates (marketing skills, interview skills,
communication skills, finance skills). Using the word "fullstack" in job ads
just tries to minimize this skill-gap.

------
sp527
There is an astounding level of arrogance and developer elitism permeating the
whole post. I think lojack with top upvoted answer captured most of my
grievances.

The only thing I would add is that as high quality (and progressively cheaper
or even open-sourced) layers of abstraction continue to be developed, it will
favor the pragmatic problem solver who seeks breadth in knowledge over the
pedantic hacker who DFSes into esoteric issues that are often nonessential to
creating core value. And that's because the main ingredient in successfully
writing software that creates real value is finding the simplest solution that
works well enough. Very often that means biting the bland bullet and setting
aside your burning desire to do something complicated.

------
ken47
> "Language-oriented courses cannot cover the complete web stack..."

On Coursera, every course I've taken has used the programming language as a
means to an end, not an end in and of itself. Perhaps the author should Google
online courses more extensively.

------
leepowers
> I have met many programmers that don’t like to code in their spare time, and
> that has reliably revealed them to be sub-par developers.

I dunno. When I spend 8 hours a day coding (paid), spending another 2-4
working on my own stuff isn't all that appealing. I mean, I want to do other
things with my life than _just write code_. If that makes me a shoddy
developer so be it.

When I'm not busy on paid work I do explore new technologies and techniques.
Perhaps this is what the author is refering to? However I still consider this
to be "work", as it's a way to shore up my skills. It's unpaid but it makes my
skillset and my time more valuable.

