DEV Community

Cover image for Calling all Full-Stack Haters
Joe Zack for Coding Blocks

Posted on

Calling all Full-Stack Haters

There are plenty of posts that discuss the benefits of specializing in either front-end or back-end development. I generally enjoy the types of articles that offer me the chance to see the world from another developer’s eyes. However, some of these articles are particularly antagonistic to Full-Stack developers, and I worry that the hyperbole is harmful.


Unfairly negative

There are several popular articles that promote specialization at the expense of general development.

The gist of their argument is that there is too much for one developer to grok in either the front or back domains, so specialists are more valuable because they can partner up with their compliment to counteract their weaknesses.

Jack of all trades, master of none

The easiest way to find these posts is to look for the term, “full-stack”. You’ll quickly come across several articles and comments that refer to full-stack development as a “myth”, a “lie”, or a “scam”. The message is clear: Full-Stack developers are either delusional about their abilities, or malicious in their attempts to masquerade as competent.

I agree that there are plenty of benefits to specialization, however I take umbrage with the notion that “Full-Stack” developers are dismissed as “less than” other developers.


How do you measure value?

The world is a big place, and many developers do very well for themselves, their customers, and the world-at-large by embracing a broad scope of technologies. Freelancers, Entrepreneurs, and small-team developers are obvious examples, but I also argue that all programmers can benefit from the experiences and perspective gained from exploring outside their box.

Who is to say, then, which developer is more valuable? The one who has mastered their chosen tech-stack and can solve any problem within, or the one who understands alternative options and can solve solve the same problem in a different (and maybe better) way?


Trying to keep an open mind

I have yet to see anything but anecdotal evidence to support either side of the argument so I try to keep an open mind. This makes me resent strongly-worded articles that claim that full-stack developers are “less-than” because I worry that they are unduly influencing how developers invest their time.

It’s really difficult to measure value, and the attempts to do so have been wildly controversial, so how about we stop with the click-bait headlines that include words like “myth”, “scam”, and “lies”?

Let’s bang that gong one more time:

How can full-stack developers be less valuable than specialists if you can’t measure value?

Even if you could figure out some measurable metrics that matter to you, it’s good to consider that there are different organizations out there with different problems and different needs.

It takes all kinds

We live in a big world, and it takes all kinds of people. We need deep-diving specialists, problem-solving integrators, and everything in between. How about we temper the full-stack hate and try to learn from each others experiences instead?

Top comments (46)

Collapse
 
jess profile image
Jess Lee

I've heard the 'full quote' is supposed to be:

Jack of all trades, master of none, but oftentimes better than master of one

Collapse
 
thespiciestdev profile image
James Allen

Maybe also:

Jack of all trades, master of some.

Collapse
 
thejoezack profile image
Joe Zack

Woah, I never thought to look into that. How apropos!

Collapse
 
mebble profile image
Neil Syiemlieh

mic drop

Collapse
 
scott_yeatts profile image
Scott Yeatts

Language and evolving connotations over time are a funny thing. 10 Years ago companies were all looking for "Full-Stack" developers, and I railed against the term.

The reason? What they really meant, was "come do two jobs for us at the same pay". It was a transparent attempt by the company to gain an employee that will be over-worked and underpaid, all while being told they were "better" than the average developer. They were rock-star ninja unicorns who could do it all. Stroking developer's egos and cracking the whip of unrealistic expectations was more cost-effective than hiring two specialists.

I was a frontend "only" specialist at the time, and "just the frontend" sentiment caused my impostor syndrome to tell me I was "less" because I wasn't full-stack.

So I worked on it. Even though I disagreed with it, that's what companies wanted and I needed to make myself as marketable as possible. I exposed myself to Node at first, but also drew on my experience from school in Java and sought-out positions where I would be given the freedom to have input on the backend while specializing in the frontend.

It's great to be on a team where you are a contributor across the stack, leading in your specialization, but able to jump-in and work a story in the backend if you need to, or to transition from frontend tech lead to overall lead for a project when you lose the backend guy (This did happen to me at one point, and the team was fine. I promise I didn't ruin the backend :D ).

I thought I had gotten to my good place. I am a full-stack developer, with a specialization in frontend technologies and architecture, but able to jump into Java or Python or Node or whatever and feel decently comfortable, as long as I have a good backend lead to work with, or experience with the project.

Then I started reading how, through some twisted game of telephone over the last decade, instead of blaming companies for being cheap and pushing engineers into "full-stack" roles, the community now blamed other members of the community for claiming to have skills across the stack.

We've turned on each-other and calling myself a "Frontend-specialized Full-Stack Engineer" was planting a flag on one side of an issue or not, probably causing the frontend specialists to think I'm not good enough, and the "full-stack" camp to think I'm "just a frontend guy".

I'm no-less of a specialist because I like to work on database schemas from time to time. I'm no-less a generalist because most of my time is spent studying current trends in frontend Javascript. I'm just a software engineer with a certain set of experience. I hate the territorial need to stake out "good" and "bad". Can't we all take a little joy in the fact that we all know some of the special words to recite to make the magic box do things? That alone is fun in-and-of-itself. Just because I'm in Ravenclaw and you're in Gryffindor doesn't mean we have to look down on one another (Who am I kidding.... we'd all be in Ravenclaw hahaha).

Except those DBAs. Those guys are DEFINITELY Slytherin (Kidding!).

Collapse
 
swizzard profile image
sam
What they really meant, was "come do two jobs for us at the same pay". It was a transparent attempt by the company to gain an employee that will be over-worked and underpaid
Enter fullscreen mode Exit fullscreen mode

friggin THIS. i've worked at several shops where "full-stack" was bandied around like a good thing, and in every single case what it meant was "we care more about our bottom line than the sanity of the schmucks burdened with slapping new features on top of our our out-of-date, unidiomatic, unmaintainable garbage heap of a codebase consisting of python written by php devs and javascript written by python devs."

i won't stop anyone from calling themself a "full-stack" dev, but would caution, in the strongest and sweariest of terms, against anyone taking a job advertised as such.

Collapse
 
thejoezack profile image
Joe Zack

When I first started making websites (before anybody called them "apps") there was a lot of fuss around how web developers weren't "real" developers so perhaps I've always had a chip on my shoulder about the gate keeping.

I've now had the pleasure of working with devs who have a lot of different strengths and I've grown to really appreciate the differences. Now if I can just remember that wholesome attitude next time I see a pull request I don't like. ;)

(also, I think you are spot on about the DBAs)

Collapse
 
scott_yeatts profile image
Scott Yeatts

Oh man... That chip on the shoulder is REAL. I STILL look out for the phrase "just the frontend" and it brings me back to discussions about Javascript as a "toy" language or how "web developers are JUST writing markup".

To this day I find it. I had a manager try to waterfall out a project, and allocated literally 5 days of work to the frontend (don't worry, we got a Scrum Master REAL quick after this haha... our manager's great about supporting us, even if it's not his experience after 20+ years of java-land).

But it's led me to really fight against anyone who tries to be a gate-keeper. Development thrives the more people we can get. It's the old guy's job to make sure the junior/mid sect is growing and getting better, not to slap them down when they make a mistake :D

They also tend to have great insight on the latest tools, and we can temper that with knowledge of pitfalls we passed long ago. (I feel like "The Circle of Life" should be playing right now...)

Collapse
 
willvincent profile image
Will Vincent

Except those DBAs. Those guys are DEFINITELY Slytherin (Kidding!).

Nah, Slytherin's aren't smart enough to be DBAs. ;)

Collapse
 
perpetual_education profile image
perpetual . education • Edited

We can solve this - but just calling everyone who writes programs "developers" - and everyone that works to design things "designers." (hopefully you're just a "designer" who can program their designs.)

One person's full-stack is a tumblr theme, an HTML page, a WordPress theme, or a fully fledged web-app with end to end testing built with Elixir/Phoenix and Ember. If it's not in context, it cant be relative. Most huge apps have a big team of people in real life.

If jobs postings just said what their goals were - you could decide if you have the right skill set to make those happen.

The key is to enjoy your work and to constantly be working to improve your understanding and skills. If you're a Django developer and all the layouts break on every screen - and the bootstrap is broken - and you don't know why... you're not good at that stuff yet. It doesn't matter what you call yourself. A solid foundation is the best!!! But - when it comes to serious web-security, you can bet we'll hire 3 experts - and not a generalist.

Collapse
 
sparxitsol profile image
Sparx IT Solutions

I agree that full-stack developers have various benefits. But it is unfair to call everyone who talks about the benefits of hiring specialized developers as haters of full-stack. They both have their own pros and cons. In my blog, I have tried to answer if you should hire full-stack developers or specialized developers. Please give it a read as every business has different needs.

Collapse
 
dexygen profile image
George Jempty

I have 20 years web development experience, the first half of that being what we today call full stack. For the most part, if you were a web developer in those days, you were a full stack developer. So much for the argument that "full-stack development (is) a “myth”, a “lie”, or a “scam”" -- just go back 10+ years.

Collapse
 
scott_yeatts profile image
Scott Yeatts

I'm wondering if the entire issue is a generational one. The folks who remember the times that full-stack was the pinnacle, and the newer developers who hear about it from those guys and immediately say "What? No, that's not possible, it must be a lie".

The older guys have all these skills, but it took 10-20+ years for proficiency, and the younger guys (validly) don't see the same path available to them as specialization has spread out and become more defined over time.

The 'hard way' that Alex is talking about doesn't exist anymore, and without it the guys that are (validly) proud of themselves for the hard work they did to get where they are want to tell people about the experience, while the guys that are (validly) proud of themselves for choosing a specialization and being very good at that, think the "uphill both ways in the snow" kind of talk sounds either like we're crazy, or we're lying. Because they've never experienced a world where that would or could happen (and that's a GOOD thing, because it means the developer experience is getting less obscure and more inclusive... and not at all a knock on newer developers)

Just a thought. I'm not well read-up on this latest schism hahaha.

Collapse
 
spencerdoak profile image
Spencer

Completely in agreement with this view. Frankly, though, I think it's highly problematic to have a generation of developers -- a generation which I fall within, I might add -- who specialize in just one side of the equation, or, worse yet, in just one particular technology/framework. While I would never try to argue that developers should be equally pro-efficient and competent in all sides, every developer should at least have some experience with all sides. I generally hate doing front-end web-development and I would much rather write a back-end system, but I do at least have experience writing front-ends. Possibly more important, though, my experience is not with a particular framework, but rather writing my own CSS, HTML, and Javascript from scratch for a live, commercial system. Furthermore, I had to administrate my own Linux server and database for that. I would never want to go back to it, but I have found the experiences I gathered from doing it to be invaluable in implementing solutions, debugging through problems, etc.

The absolute worst thing we can do as an industry is churn out a generation of developers who ONLY understand one framework/library. Frameworks come and go. Chances are that while ReactJS or Angular might be popular today, they won't be the hot, trendy libraries in 10 years. Having true developers who understand the full-stack is absolutely essential to the longevity and health of the industry.

I will take that claim one step further, though, it's not JUST about understanding the back-end (e.g., NodeJS) and the front-end (e.g., React): developers really need to understand the underlying fundamentals of computer science. Don't fully understand how your application runs on top of your selected OS? Get a book and start poking around on the machine until you at least understand the gist of it. How else will you know how to thoroughly investigate and track down the cause of a production outage? Don't understand how your database actually stores data? Get a book and start poking around. How else will you know why your database model is not scalable due to the amount of data you are storing?

In my opinion, the lack of understanding the fundamentals is at least partially a result of coding camps that give you a two week intro to some language/framework and promise to take you from totally inexperienced newbie to professional. Sure, they might teach you enough to land a job writing front-end or back-end code in the language of choice, but you never learned the underlying principles that power that technology, or how exactly all the pieces fit, so once the industry moves onto a new hot, trendy technology, these developers will be fighting one another for whatever jobs remain until eventually even those dry-up.

sigh it seems like the industry is moving in an unhealthy direction right now, and the attempts to criticize full-stack developers as being liars and frauds only further reinforces this assessment.

Collapse
 
tobiushirogeri profile image
Alex B.

Agreed,
Miyamoto Musashi said it best : You must understand that there is more than one path to the top of the mountain.
(Miyamoto Musashi, A Book of Five Rings)

Collapse
 
thejoezack profile image
Joe Zack

Really great insight, I hadn't thought about how different generations might think about the subject.

Collapse
 
tobiushirogeri profile image
Alex B. • Edited

Amen! I've been coding for more than 15 years. Back then you HAD to be a jack of all trade.. and don't forget, GitHub didn't exist, stackoverflow neither, we learned to code by reverse engineering code, you know, the hard way!

Collapse
 
dexygen profile image
George Jempty

Hell we didn't have an easy to use Javascript debugger unless you include Venkman, ugh. To solve an issue with math going awry in a grid in 2001, I kept moving an alert (no console either) further and further along in the code until I pin-pointed it: passing values beginning with 0 to parseInt. I don't even know about documentation, but I did have the one and only good book on Javascript at the time, Flanagan's Definitive Guide. Nevertheless, that's a half week of my life I'll never get back.

Collapse
 
psihius profile image
Arvids Godjuks

10 years ago the knowledge you needed to do both backend and frontend (PHP, JavaScript, HTML, CSS) was so much smaller. These days just doing markup of HTML & CSS is a huge field. I work with people who do that specific job in 1/10th of the time it would take me and they know things about browsers and their issues that I never did or will because you have to be really working that field full time.
A front-end JS framework these days is a big thing, to any proper marketable and applicable to the job tool you need a year or two to really become good at it. The issue is - I do not have that much time to do that if I also work backend, dealing with server scaling issues and trying to keep up with the business needs. Also, I can do 2 to 5 times more efficient job on the backend than the frontend anyway and the company literally will lose money if they put me to work on the frontend. I'm fairly capable to adapt in a month, but it will take me multiple years to really properly learn the tools and get up to speed with someone who does frontend full time.

My issue with full-stack terminology is when this is applied to Senior (and I mean proper Senior positions with experience of 7-10+ years under the belt) where it is clear you need a specialist in the field. But for some reason, they still look for full-stack so you get ignored by the HR just on the fact you are a backend developer.

Collapse
 
dexygen profile image
George Jempty

The knowledge may have been so much smaller, but the tooling was far worse (Venkman for Javascript debugging, ugh), or even non-existent (no console)

Collapse
 
kayis profile image
K • Edited

I think with serverless it will be much easier for front-end devs to go full-stack.

Sure, you maybe don't know how to orchestrate Kubernetes, set up a database cluster or load ballance; but with the right tech, you simply don't need that kind of knowledge.

Collapse
 
thejoezack profile image
Joe Zack

I agree, and I think that's a great thing. The higher level tools let us spend more time on the parts of our solutions that are unique to our problems.

Many devs don't need to know about the infrastructure on the other side of the iceberg, and that doesn't make them any less of a programmer.

Collapse
 
diek profile image
diek

I consider myself a fullstack developer, but i don't lie or scam about it, if the need make me develop frontend i can do it, but i always say that i'm better at backend.

I mean, i give more value to the team if i develop backend and services, but i have the flexibility that, in need, it can help the team a lot.

Collapse
 
dkamer profile image
David Joseph Kamer

If a full stack developer can out do a specialized developer in their are of expertise, what does that mean?

I don't trade skill in one area for general knowledge. Even if I did, most things that are overly specific to a certain domain are searchable in documentation.

So which is it? Do we need to be "problem solvers" or encyclopedias? The same types of articles claiming we can't be goo full stack developers are the ones telling me that "it's not about memorizing a bunch of languages, it's about problem solving"

Well, memorizing every little bit about one thing is the near opposite of the general mentality of problem solving.

Collapse
 
jaakidup profile image
Jaaki • Edited

I heard that a back-end developer is half a full-stack developer.

Oh, and I also heard that a front-end developer is the other half of the same full-stack developer.

Back-enders just want to back-end everything,
Front-enders just want to front-end everything,
Full-stackers just want to solve the problem.

Collapse
 
welly profile image
welly

I don't want to "back end everything". That just sounds like far too much work to me.

And I just want to solve my end of the problems, not yours.

Collapse
 
jaakidup profile image
Jaaki

haha, yeah, when you put it THAT way :D

I think that proves the point perfectly!

When a client of mine wants a todo list app, as an example, I can't just deliver this souped up multi-threaded api server and database backend, or a beautiful but non functional front-end.

I suppose many full-stackers are also FSO (Figure S*** Out) people for small businesses.

Collapse
 
adamthewizard profile image
Adam

I nearly made a joke about enjoying "back ending" things before I remembered I'm not on Reddit now! Haha

Collapse
 
thejoezack profile image
Joe Zack

Naming is hard :)

Collapse
 
dexygen profile image
George Jempty

There's one other hard problem in software engineering, cache invalidation, and off-by-one errors

Collapse
 
_vlad_ko profile image
vlad ko • Edited

To me the problem with "full stack" is the expectation of employees and recruiters.

Now we can have one person doing the job of two or three? Great.

If a full-stack developer does the job of a front end engineer, backend engineer and devops, it's only fair that they would get paid there times the salary.

Nothing wrong with being able to do some front end work and then switch to work on the backend / API to consume.
But each developer in this situation should really consider if they are being compensated fairly and if they work a reasonable amount of hours.

Collapse
 
devdammak profile image
Damola Adekoya

I love this article because this topic has being on my mind for quite some time now... Someone said and i quote "He has never seen a genuine full stack developer" What he meant was there is no balance in both... either you are front end or back end you can't be both and also good at both at the same time...

Maybe he is right or not i don't know but i am on the mission of proving him wrong!.

But i believe you can be a full stack and be good at it, on both back end and front end. for instance at my place of work i am a full stack developer I help the back end developers sometimes with their back end logic and approach... that doesn't make me less a front end or back end either..

Collapse
 
ddpepperlove profile image
Adam Wood

Worth is what you code, not what you know. As a full-stack dev I write lots of applications... On any given day there are over 2000 people are accessing tools that I've written... Websites, form applications, transformed data, database queries, API interfaces... on and on. These tools make their jobs easier and faster.

Example: we had a vendor that offers training to us... (A vendor who has role based devs) "Upgrade" their software. It was a total mess and even after they turned it over as complete several times my QA (I do that too) found errors in the data. When they finally got their code in check there were 5000 training entries to be processed into our HR system that on average take 1 person 1 minute to enter 1 training item.

I have written a process that interfaces with their application, pulls all the training data and then pushes it to our HR application. There's compiled code, database code, an API, an emailer and more all coded by just one person. When it's done it communicates a success and error log to our own training team. Instead of 5000 minutes (80+ hours) of data entry it takes about an hour to pull the training data (mostly waiting on their system while reading) then about 15 seconds to process, store and import into the HR system. This was previously all done by hand.

While 5000 in one shot isn't normal, 1000 is on a once a week basis.

Is there value in a full-stack dev? Ask any user saved from tedious and time consuming mundane tasks that their full-stack dev saved them from and in turned saved $ from the bottom line.

Do I do it all? Yes. Do I hate wearing every hat? Yes. Do I have value? YES.

Collapse
 
laviku profile image
Lavinia

The term "Full Stack Developer" is something that always bothers me, I usually work both "sides" of a project but not being an specialist in either of them makes me scared of calling myself a "Full Stack", and I guess that feeling comes to me because that's what I think of other developers that call themeselves "Full Stack" when I know they lack of experience or knowledge. I definitely need to work on that, great article!

Collapse
 
scotthannen profile image
Scott Hannen

The problem isn't full-stack developers. It's the meaningless term. We learn stuff and know stuff and do stuff. Nothing good comes from either applying a meaningless label or encouraging others to apply it to themselves.

Recruiters and employers were already bad enough at knowing and describing what they want. I've seen postings for my own job at my own company including technologies we never or rarely used.

I don't know whether "full stack developer" is a ploy for employers to deliberately look for someone to do two or three jobs. (That's DevOps - it's in the name.) I think it's just another lazy buzzword, something to ask for without knowing what it is or whether they need it.

If someone, including an interviewer, wants to know if I'm a full-stack developer I'll just tell them what I've worked with and be completely transparent about my experience in each area. It's up to them how they want to interpret or label it.

Collapse
 
thejoezack profile image
Joe Zack

I hear you, and agree that it's a bad term but I think most terms are bad. I've been coding for almost 20 years now and have done all sorts of stuff at work and on the side and as bad as "full-stack" is, I don't know of a better one.

Some comments may only be visible to logged-in visitors. Sign in to view all comments.