
The Rise and Fall of the Full Stack Developer - funkyy
http://techcrunch.com/2014/11/08/the-rise-and-fall-of-the-full-stack-developer/
======
lordnacho
I don't think Full Stack should mean "every technology out there". Rather, I
think of it as meaning "having touched every layer", however you want to
define layer (database, business logic, UI, network, etc).

Of course nobody has done every language and framework. But plenty of people
could do any language or framework.

I think there's a certain stage you get to as a dev where you can more or less
pick up anything. This goes especially for things like OO languages. The
reason it works is that you're rarely in the far reaches of your new
language/framework. There are certain things that are common in OO, and if you
swap languages, the learning curve isn't that steep, and you'll mostly be
doing things that have an analogy in what you already know.

------
JanezStupar
This article is built on a misconception held by many people.

That is - treating mobile apps as something simple. They are not. Mobile apps
of Android and iOS are full stack native client apps.

Building mobile apps is far closer to building your classic Windows desktop
applications than an UI for a Web Application and it shows on the astronomic
costs of the mobile apps - compared to Web Apps.

I guess that is because user interfaces tend to seem simple and the devices
which run these applications are small and seem simple.

TL;DR: Mobile Developers are Full Stack Developers in their own right and the
person writing the article should know better.

------
lost_my_pwd
The impression I get is that this is a bit of projection on the part of the
author. Since they can't keep up with web, server, and mobile fronts, probably
no one else can either.

Having highly specialized engineers for each technology in a project might be
nice save two things: 1. small companies and startups may not being able to
afford the minimum upfront resources needed to do this and 2. overlap of
expertise in a team is essential to a cohesive effort and a solid product (I
have worked in places where people all specialized and did not stray from
their neat little box; the results were never pretty).

I also have a tough time taking the author seriously on this subject when
their GitHub account is 5+ years old with no activity [1] — no repos, no
commits, not even a starred project.

[1]
[https://github.com/pyared?tab=activity](https://github.com/pyared?tab=activity)

~~~
jessedhillon
Just FYI, that only shows his public activity. My own Github activity chart
looks sparse even though I push to it hundreds of times a week. Almost all of
those commits, except for the odd bugfix to an open source project, are to
private projects. When I see my own chart, it's dense but when I view it as an
anon it's barely checkered.

~~~
omegaworks
There really should be a way to selectively expose anonymized activity data.
Is there really a business case for guarding data about your devs?

------
abhiv
The author's definition of "full stack" is rather strange, as others have
noted. But as the client side of web applications becomes more complex, it's
true that it's harder for the same programmer to develop both the client side
code (which may involve developing a sophisticated client side architecture in
Backbone or Angular) in addition to the server side code and API layer. I see
more programmers now who call themselves "front end developers" and aren't
just UX designers with HTML/CSS knowledge, but can program a complex client
side MVC application, working with a separate backend developer who focuses on
the API.

I think this trend will accelerate as web applications are increasingly broken
into loosely coupled services, with a rich client tying them together in the
browser.

~~~
atom-morgan
> I see more programmers now who call themselves "front end developers" and
> aren't just UX designers with HTML/CSS knowledge, but can program a complex
> client side MVC application

It's almost misleading these days for a designer with HTML and CSS knowledge
to say they can do front-end development. If you can't navigate your way
around a client side MVC framework, I don't think there's much you can
contribute.

------
suyash
The author has confused the audience with his own definition of full stack.
Full stack in traditional sense only meant server and client side development.
Mobile, Cloud, Machine Learning are other independent horizontal offshoots.

------
westoncb
Seems like his expanded full stack is due strictly to an expansion of
platforms that it's become standard to deploy on (i.e. you don't just release
a website, but also have a native ios and android app)--excepting machine
learning, which I can't see a reasonable argument for including as integral to
a canonical web development stack. He suggests we will resolve this through a
change in methodology--but this problem isn't new and it seems to me that
we're as likely to sort it out with technology instead.

~~~
nostrademons
That and buzzword compliance. Why are MongoDB, Scala, and machine-learning on
the list? What customer-visible advantage do they give your startup that your
existing Rails/Django app on MySQL/Postgres doesn't have?

If you want to use machine-learning effectively anyway, you need to have a
bunch of other technologies, like crawling & unstructured data extraction, or
custom log processing & millions of users, or some other way to get the raw
data that your machine-learning algorithms can process. Without data, machine-
learning is useless. But that's a problem for an established company, not a
startup, and established companies have long wanted specialists anyway.

~~~
DenisM
If I were to shoot for the most charitable reading of the article, I would
abstract a way from particular brands and replace Amazon with "cloud
hosting(AWS, azure, GC, ...), mongo with "scale out database", scala with
"modern language", and machine learning with "data science".

With such replacements the article looks fairly reasonable - larger scale
demands newer technologies, proliferation of client platforms demands more
suppor for them, and growth in computing power and science makes users expect
some smarts they did not demand a decade ago.

~~~
nostrademons
Except that within the context of startups, it's still not reasonable. You
don't need to scale when you're first founding your startup: your biggest
challenge is building a product that _one_ person finds useful, let alone one
million. You can run such a service off your favorite shared webhost, or a
single EC2 micro instance for like $10/month, or just use the free Heroku
plan.

If and when your service catches on, _then_ all the article's points become
valid. But then you'll have resources available to hire specialists - and the
full stack developers you hired in the early phase become full-stack
integrators managing teams of specialists, assuming they have the ability &
inclination to grow with the company. You're going to have to rewrite your
code and throw out your early technology choices anyway: you might as well
take advantage of the full stack developers you can find to get to the point
where you can afford the specialists.

------
ExpiredLink
Nobody would call for a 'full-stack' automobile worker who can assemble
engine, chassis, interior and paint the whole thing (o.k. paint is done by
machines nowadays). 'Full-stack' is a sign of an immature industry that hasn't
figured out division of labor yet.

~~~
hnmcs
Using this automobile production analogy, I would say that a full-stack tech
engineer is analogous to an autoengineer who understands all levels of the
production, with some direct experience in the types of relevant manufacture
processes of all components of the automobile, as opposed to only
understanding based on the blackboard theoretical description of auto
production. They know the design principles of engines and of electric
systems, and materials science, and the relevant history of the industry
leading up to the state of the art. They could join the division-of-labor sub-
team for any arbitrary process of production, because they understand any
arbitrary process at the blackboard level and have some general experience in
the types of any arbitrary manufacture process -- though they are never
actually permanently required to stick to just one sub-unit of operation. And
thank $deity someone does understand the whole picture, otherwise no one
would, and you're just waiting for some new problem to bring down the whole
cargo cult operation.

This is in contrast to someone doing one aspect of the division of labor, who
knows his division, but doesn't understand the full stack of automobile
development. _" I just make sheet metal into body parts. Engines and
electrical systems are magic to me."_

Not all code production houses need full-stack expertise, because they
actually can operate in their niche without it thanks to our system of finance
and contracts. Most don't, in fact. But big operations ( _a la_ a major
automobile company) had just better be sure they have engineers who understand
automobile production from design to showroom (reverting to the analogy).

------
gasping
This is laughably stupid.

I stopped reading when they substituted a relational database for MongoDB.
Nevermind that they both solve completely different problems.

This post must have been written by an incompetent business analyst who feels
all warm and fuzzy when he parrots the most popular buzzwords of the month.
This kind of shit makes our jobs harder because managers see this stuff and
decide that "our next project will be built on MongoDB and Amazon Cloud...
it's bad ass rock star tech!"

------
zajd
MongoDB is worth a place with "HTML/CSS"? Give me a break

~~~
jqm
Indeed. And somehow, I'm able to build full web applications from database to
CSS, by myself, without once using "Machine Learning"...

This whole article is ridiculous.

------
logicallee
The issue is that even though most of us have the spare time to hop on a plane
and go mine some rare Earth metals ourselves, while tweaking an ARM chip
specification, in fact when it comes time to building a foundry for it we are
too gunshy to lay down $1B-$2B. As Wikipedia states, "Prices for most common
pieces of equipment for the processing of 300 mm wafers range from $700,000 to
upwards of $4,000,000 each with a few pieces of equipment reaching as high as
$50,000,000 each (e.g. steppers). A typical fab will have several hundred
equipment items."

Well, either that, or full-stack doesn't mean what the author thinks it does
:)

What does mobile app dev have to do with a full web stack for example :)

~~~
Zigurd
> _What does mobile app dev have to do with a full web stack for example_

While the author's definition might be too expansive, I can answer that one:
Design your APIs to support mobile clients that sync, for which you'll need an
experienced mobile architect, or your mobile clients will be stuck not taking
advantage of local storage for better performance and resiliency in situations
with unreliable connectivity.

If you treat mobile as an add-on, it will bite you in the ass.

------
phazmatis
Full stack: Someone who can build one (1) stack which fulfills the business
requirements. Database to backend to frontend(s). If you're using rails and
Django at the same time, and your full stack engineers have to take on an
unnecessary cognitive load, that's your problem.

------
rdtsc
I think as a joke there should be a 3/4 stack developer trend as the new
hotness -- it should signal "I am competent in one area as opposed to a jack
of all trades, master of none"

If I was looking for positions I put that on my resume.

~~~
lost_my_pwd
Have something similar on my resume: Jack of all trades, master of SOME

------
_random_
C#/F# .NET:

\- ASP.NET WebAPI : web server

\- Xamarin : iOS, Android

\- Azure : cloud

\- Akka.NET : actor model

\- XAML/WPF : enterprise LOB, Windows Phone

------
michaelochurch
Most programmers never do or use machine learning, and in fact most people who
call themselves "data scientists" don't know the first thing about it. Knowing
a package with some canned algorithms in it is not one tenth of the battle. If
you can write a logistic regression or SVM from scratch (not that it has to be
as good as the existing product; in practice, you'd probably to use an
existing QP solver, for example) we'll talk.

I also don't think Scala is part of "the full stack". Worth knowing? Sure.
Powerful? Yeah, it's quite a large step up from Java. You'll want to know it
to use Spark, and it's a great "gateway drug" for Haskell. But I don't think
it's on the list of things that a person needs to know to call himself a "full
stack web developer".

Anyway, someone needs to write a terrible language that isn't _so_ bad that no
one uses it. Take all the worst features of C++ and Java, bolt on some
enterprise crap, make your shitty ORM a first-class citizen, and then sell the
shit out of it. (It can't be unusable like Brainfuck, but it can be worse than
Java and still sellable to the enterprise.) It'll be a nine-figure effort, but
I'll spot the first $200. Here's the one rule: this shitty language has to be
named _FullStack_. Then we can be done with this shitty buzzword because "Full
Stack Developer" will mean something else. Bonus points if it's attached to a
"hip" but broken database system called Big Data.

~~~
phazmatis
I like to put my culinary and sock-puppetry skills on my resume under the
devops section.

