Calling all Full-Stack Haters

Joe Zack on February 17, 2019

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 a... [Read Full]
markdown guide
 

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

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

 
 

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

 
 

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!).

 
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

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...)

 

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

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

 

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 that there is something to be said about having an overall focus, as I have a general preference towards backend development, but am also comfortable on many frontend technologies, and I've been drawing my focus more towards the frontend. My specialty? I'd have to say I'm a strong problem solver and that I'm always looking for the best tool to do the job.

Funny thing is my job title is "Web Developer", but I work on a relatively small team and I'm required to understand the full stack. Am I full-stack developer? Sure, but I also know where my difficulties are and when I need help. Maybe I'm looking at my own in preference, but in many ways I'm more valuable than someone who just focuses on a smaller area of the stack.

 
 

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

 

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.

 

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.

 

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

 

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.

 

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.

 

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..

 

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.

 

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.

 

Haha agreed we should focus on just solving a problem be it backend, frontend or full stack.

We are not in a single island instead, we should work as a high-performance team to tackle complex problems that are hard to be solved by a single person.

Even Thomas Edison who is considered genius in his time.

Relies on a bunch of researchers & research assistants to conduct his experiments to solve various problems plus a lot of black coffee & cigars.

 

Good job Joe!. I've been coding for 13 years right now. I think it's impossible to run company without fullstack developers. These people are the best at bug-fixing too. From the other hand I think fullstacks are better for MVP creation. They know better technologies connected together to jump-start any product!

 

I've been a programmer for 20 years and I had never heard the term full stack development until about 2016, which was a year before I left my company. I guess I assumed that most everyone worked on both front-end and back-end. I'm serious, but of course, I wasn't looking for work at the time, so I never really paid attention to titles, but at my last company and the one I'm with now, they care more that a you know front-to-back vs. one or the other. I also see plenty of jobs out there where there is an expectation to know both front and back-end.

I feel that being a programmer ("full-stack developer"), is getting harder and harder with so many technologies we must "master", so having a specific discipline could help reduce the stress involved with expecting to "know everything". The good news is that we're working in an exciting time with so much to choose from where one can specialize on anything, and if there's a market for it, then all the better. Sometimes, I'd wish I had a specialty, but the reality is that I haven't been in a situation where it was warranted. Maybe someday.

 

As far as a team of developers goes, it is probably best to have a mix of both generalised and specialised developers. The combination allows either type to play off the strengths of the other.

 

I'm 100% a full-stack hater. And that has NOTHING AT ALL to do with the developers themselves. I don't think they're incompetent or frauds.

My problem with "full-stack" as a huge, steaming pile of bullshit is that it simply indicates that a company is too cheap to hire three people for three positions, so they hire some "hungry" developer to do all three for one (mid-level at best) paycheck.

In the very best case, you get one overworked person who can't focus on any one part of their job enough to improve themselves and their career trajectory but who turns out satisfactory work.

In many cases, you get someone who's passionate about one part and just does the others to "get by." They burn out and quit within two years. The company hires another. Repeat forever. Result: Cheap labor with no upwards mobility for the company. The developer gets to look like a job-hopper and therefore less employable unless they manage to get a position doing just the aspect they love doing.

 

Well, a jack of all trades is a master of 'the art of jacking all trades'. Thank you very much.

Sincerely
A full stack developer
Who also created a programming language

 

Great article :-)
Btw, there is a new Job Board out for Full-stack Developer Jobs only:
fullstackjob.com

code of conduct - report abuse