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 (47)
I've heard the 'full quote' is supposed to be:
Maybe also:
Woah, I never thought to look into that. How apropos!
mic drop
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!).
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.
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)
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...)
Nah, Slytherin's aren't smart enough to be DBAs. ;)
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.
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.
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.
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.
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.
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)
Really great insight, I hadn't thought about how different generations might think about the subject.
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!
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.
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.
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)
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.
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.
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.
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.
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.
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.
I nearly made a joke about enjoying "back ending" things before I remembered I'm not on Reddit now! Haha
Naming is hard :)
There's one other hard problem in software engineering, cache invalidation, and off-by-one errors
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.
Some comments may only be visible to logged-in visitors. Sign in to view all comments.