What, in 2010, a full stack developer didn't need to understand UX? Did the provisioning layer somehow magically vanish in 2010?
Its a bunch of false comparisons.
The simple facts are this:
1) Full Stack Developer == Generalist [ Do lots of things; not 100% as fast or effectively as a specialist]
2) Specialty Developer == One area of profession-level competence [e.g. Front End Developers would need to go and start learning all the other areas/categories from essentially scratch since they haven't touched them at a profession level in years]
I'm not sure why people need to come up with a bunch of silly comparisons that are more complex than this and call generalists a "myth".
Yes, they do exist. I have a whole team of full-stack developers. I gave one an iphone application to fix bugs in and convert from ios5 to ios7. He had no prior objective-c experience and in a week and a half, he had fixed all of the bugs and even dove into a 3rd party framework we were using to describe a problem to me using it with ios7.
A full-stack to me is somebody that can do web development, do server-side development, optimize SQL queries, understand security, scalability, and able to build linux server infrastructures for large software systems. They also are able to take any technology and provide value to a business using it in a matter of a couple of weeks.
That's the best definition of for "full-stack" developer I've seen. There are two big things that set these people apart from their peers:
* Willingness to dive in and figure things out.
* Having a wide enough knowledge base that they know where to and what to look for when they don't know something.
How? Especially if they've never learned the language/framework? This "Paul Bunyan" fairy tale of the "just do it!" hacker who can solve any problem no matter the odds just doesn't exist in real life.
Hello. I am this person. I am a generalist, I am not the best in any one area, but I have a broad range of skills across many domains. If I don't know how to solve a new problem, perhaps in a new domain, I will leverage the broad knowledge and learning skills to find out how to solve the problem. I won't be as fast as a specialist and there will be a greater risk of failure, but there is a good chance I will get the job done. I am not arrogant, I don't think I'm a genius, I don't think I am infallible. It's just that I am a generalist who likes to know a little about a lot, it's the way my brain works.
Learning just enough of a language or a framework to patch up a solution to a specific problem doesn't take very long. It takes a bit of experience, but it doesn't take a mythical hyper-productive hacker. The solution might not be pretty, and it probably won't scale to millions of users or stay solid for decades, but it will solve the problem. And in many cases, it's all that matters.
Even if you've never seen the language/framework, you dive in and learn it in an efficient and effective way, both from the current codebase and other resources.
Maybe you just haven't met the right people. I definitely "just do it" all the time. When I needed to develop a single page app for the first time, I just did it. When I found I needed to automate server deployments, I just did it. When a project I told someone I'd prototype needed me to design a circuit, fabricate a PCB, build it by hand and write firmware for its ARM microcontroller (including an OS), I just did it. And had fun doing it.
I'm sticking with my "full stack" claim. I think I've earned it.
"Do they believe they have familiarity with different layers, or true mastery?"
Full-stack guys never (that I have seen) have mastery of all layers, but rather can perform at a reasonable level at all necessary layers to make an app happen. They might have mastery of a few layers, they might lean on infrastructure like herokou to cut out a section of the stack, whatever, but they can get it done.
They are also always scary smart, and scary employable.
"A human being should be able to change a diaper, plan an invasion, butcher a hog, conn a ship, design a building, write a sonnet, balance accounts, build a wall, set a bone, comfort the dying, take orders, give orders, cooperate, act alone, solve equations, analyze a new problem, pitch manure, program a computer, cook a tasty meal, fight efficiently, die gallantly. Specialization is for insects."
— Robert Heinlein, Time Enough for Love
“Specialization is in fact only a fancy form of slavery wherein the ‘expert’ is fooled into accepting a slavery by making him feel that he in turn is a socially and culturally preferred—ergo, highly secure—lifelong position.”
First "DevOps", now "Full-stack Developer". I'm kind of tired of these posts about labels. I would much rather work with someone who identifies as a full-stack developer, because I think it's a sign that they're genuinely interested in their field. My first impression of someone who solely does front-end or back-end work is that they're scared or unable to learn new things. It's not specialization, it's a lack of ability.
I didn't really choose to become a full-stack developer or get involved in dev-ops / IT / sysadmin work. It's just something you have to do when you work at a startup, because no-one else is going to do it. I'm really grateful for the time I've spent reading the Saltstack documentation back-to-front, learning how to set up RADIUS and EAP-TLS secured Wifi, setting up logging and error reporting tools, setting up DeployStudio, Munki and Boxen to provision new developer laptops, setting up the VPN, DNS, etc., even though that's not in my job description.
Anyway, we're hiring full-stack developers at ZenPayroll [1]. Come and work on some challenging problems with an awesome team!
The main argument in this article seems to be to define the term "full-stack developer" as someone who is equally good at all the different bits of the stack (or someone who is master in all of it). Then the conclusion is made that people who call themselves full-stack developers are not really full-stack developers, as they don't fit the definition.
However, most people disagree with that definition, and in fact use a definition that fits their own skills.
Well, since a long time ago, i could not accept that some developers would title themselves as "Front-End Developer", or "Web Developer"...
It's like WTF!!! You are a Developer, why would you want to stay just in web development? if you're a developer you can move on anything you want anytime!! Why are you locking yourself just into "Web Developer"?
Well, that's my rage... Lots of answers from friends, basically, they are all afraid of tools they've never used, and they don't even bother to try them out.
I like to do any kind of work, from deployment scripts, load balancers, distributed computing, web front-end, desktop front-end, mobile, database, hell, i like to be part of all the entire project!! I've have a lot of luck because i've always been in small companies, and maybe we don't deliver the best solution, but the solutions work, and work really well, i have developed lots of systems, and they are not a headache to support, so i'm proud of what we have achieved...
But recently, when people ask you "what kind of developer are you", you can't just say "i'm a developer", because, i don't know why, but people assume that you don't know Web, SQL, FrontEnd, etc... And magically, a "Web Developer" is way better than just a "Developer". That happened to me lots of times, just because my title said "Developer", people that didn't knew me don't consider me for projects.
That's why i am now using the "Full-Stack Developer" title, you just can't use any other title on today's market. I don't want to be doing just "Web Frontend", or "Database Administrator", or "CI Manager"... Heck, i want to participate in all the project.
And i agree with other people here, a Full Stack doesn't needs to be a guru on every language/framework. You just need to know how to assemble everything to make it work. And it WILL NEVER be perfect, because requirements change everyday, but your stack can evolve to adapt to those changes.
Same goes for a "Frontend Developer"... A frontend developer can be really bad frontend developer, but he's a frontend developer because he wants to do only that and is happy whit that...
I believe a Full Stack developer is a guy that is not afraid to solve a problem in any stack of the system, not a guru or a genius.
Think of fullstack devs as smartphones: each function might not be as good as specialized devices (a real camera, large desktop screen, photoshop, a scientific calculator, etc), but having it all in a single device is not only convenient, it even opens up possibilities that wouldn't be available if the features weren't together on the same device, the same way fullstack devs might not be as good on all aspects a specialized devs on each topic (although we usually do also have deep knowledge on some of them), but they can also spot & enhance interactions between them.
I consider myself to be a full stack developer. I started working on small layers like every developer. Eventually through need, knowdge transfer and bugs I developed the skills from hardware to software Linux/apache/mysql to code (I'm my case usually php) to HTML and CSS and js. With a variety of tools and frameworks along the way. These skills are required to face the variety of challenges and new projects that come. Not knowing how to configure apache would make me a worse developer.
The idea that the 2014 stack is more complex than the 2010 belies the author's youth and lack of perspective. 2014 is not especially more complex than 2010. I mean granted there is more CSS and web technologies to know, that stuff is certainly moving faster than it did in say 2000-2004, and so there is a higher bar for what is possible. But the biggest difference between 2010 and 2014 is better tools. And to be perfectly clear, by tools I mean very broadly anything developers use to get the job done, languages, frameworks, browsers, services, etc. Developers weren't learning and mastering fewer things ten years, they were just mastering stupider things like IE6 layout bugs.
Assuming the same knowledge of contemporary tech, the 2014 developer can do more with less than the 2010 developer. The stack is only bigger if you have reason to make it bigger, which is far from a foregone conclusion. LAMP is more effective today than it was in 2010 because HTML/CSS/JS/PHP are better (and frankly LAMP was already moving off the bleeding edge a decade ago, not in 2010). Now obviously the development of JS frameworks and nosql databases has progressed significantly, so that potentially adds to the layers you can employee and the things to learn, but none of those things are required to be "full-stack". All that stuff could be done before, you just had to roll your own or use earlier-gen tech that was maybe not as optimal. Certainly heavy javascript was already well-entrenched by 2010.
The crux of the matter is defining "full-stack"? The author talks as if this is about being up to speed with all facets of the latest web tech, but that is a useless definition. There is simply too much tech now for anyone to know it all in any meaningful capacity. Of course I agree with the author that there are a lot of useless blowhards out there talking about being "full-stack" developers. This is because we are well into year 2 or 3 of "full-stack" being a cargo-culted buzzword that is latched onto by posers and wannabes from all walks of tech life.
But like all such overplayed ideas, "full-stack" has a legitimate origin. It comes from the fact that the web was really developed and evolved by two distinct sets of people. You had the programmers who were back-end focused (because javascript was not treated as a serious language for the first 10 years of its existence despite rapid ubiquity), and you had the web designers pushing visual design, first through HTML and then additionally CSS. It took a long time to close the gap between these two groups, and during that time, it was very rare to find anyone with any talent in web design who could program or vice-versa. In the mid-2000s once a few people started to achieve the requisite 10k hours of practice, true full-stack developers started to appear, and since then as the web became something that people had grown up with from early childhood, the number of people who built things end-to-end on the web only increased.
For a short time, "full-stack" was a pretty strong distinction because it meant a passion and focus on the web as a unique platform at a time when most top talent was immigrating from other disciplines. Today, however, everyone attending a bootcamp as a career move is training to be "full-stack" because that's simply what the HR people demand. It's completely orthogonal from whether someone is a good developer, and it's at least partially orthogonal from any list of particular skills—it just means someone can build both the front-end and back-end of a web app in some form; the specifics and expectations of which vary widely from job to job.
Its a bunch of false comparisons.
The simple facts are this:
1) Full Stack Developer == Generalist [ Do lots of things; not 100% as fast or effectively as a specialist]
2) Specialty Developer == One area of profession-level competence [e.g. Front End Developers would need to go and start learning all the other areas/categories from essentially scratch since they haven't touched them at a profession level in years]
I'm not sure why people need to come up with a bunch of silly comparisons that are more complex than this and call generalists a "myth".