Dave's Notebook

The Full Stack Developer Myth

Once upon a time, there were Full Stack Developers, but as time progressed, they disappeared. Now, all we have are impostors. People trying to be full stack, but failing. The Full Stack Developer is now as obsolete as a unicorn.

Back when I started programming, you could get by only knowing one language and a couple of supporting “languages”.

My story is similar to many from my generation. I learned a little Basic to catch the programming bug. Then I tried Pascal and moved on to C before I went back to school where I learned COBOL, JCL and CICS. Mostly it was COBOL.

It didn’t take long to learn any of those languages because the language was the language. Things didn’t move quickly. CICS was simple. And we only needed enough JCL to get our programs to compile.

Photo credit: Avariel Falcon on Visual hunt / CC BY

The Beginning of Complexity

Once I graduated, I moved into the world of PCs. Here, I quickly adopted Clipper, a dBase III compiler. Once again, there wasn’t a lot to know and I was able to quickly become an expert in the language. Not because I was any super smart programmer, but because there wasn’t much to know. In fact, at my first job, there was so little to know that I was able to easily be a one-man IT department.

But today is different. Especially if you are programming anything of significance for the web. Today, to get a web application up and running that looks good and performs well, you’ll need to know: HTML, CSS, JavaScript and some sort of backend programming language. That’s just the minimum. If you are working in an enterprise environment, you’ll also probably need to know one of the popular JavaScript frameworks. Maybe some SASS. Node and WebPack. A UX/UI framework such as Bootstrap, Material, or Clarity. And the list can keep growing. We haven’t even touched on authentication protocols, knowing enough about security to keep your site safe, or anything about DevOps, Continuous Integration, or Continuous Delivery.

And yet, I still see most job request advertising for “Full Stack Developers”

Is that even possible?

What Does Full Stack Mean?

When we first started developing web applications, two things were true. They weren’t very complicated, and they didn’t use a lot of technology. Keep in mind that in the beginning, our biggest issue was cross browser compatibility. This kept us from advancing quickly. So, a typical web application would do 99% of the work on the server and make it all look good with CSS. HTML wasn’t that complicated. So, one developer could, with a little effort, keep everything they needed to know in their head.

The Boiling Frog

As things progressed, we added JavaScript, then some simple JavaScript widgets. HTML improved. CSS improved. And then on the server side, this thing called REST came along. Suddenly, the amount of stuff we need to know has exploded. A new framework is born every hour it seems. Updates happen at a blindingly fast pace. Can anyone keep up?

And yet, companies still want “Full Stack Developers”

The Emperor Has no Clothes

Is there no one who can see that this is a recipe for disaster?

I think programmers kind of like being able to dabble in several different technologies. Spend a little time here. A little time there. Here a little, there a little. It certainly isn’t boring.

But, the problem with this is all your code suffers. Oh, sure, I’m definitely a proponent in learning multiple languages. The more you learn, the better you get. But, I’m also a proponent of being an expert in one of them. At least one at a time. And there is the problem. Because we have to know so much, we can’t possibly be an expert in anything.

This last week, someone asked me how much of Angular I know. I had to confess, “maybe 80%” It wouldn’t surprise me if I knew even less. The framework keeps getting new features and I have little time to keep up. And I’m fortunate enough that I’ve spent 90% of my time over the last 4 years doing JavaScript development. And since Angular started the RC cycle, I’ve been spending a 100% of my time with Angular. If I’m having trouble keeping up, what about the guys who are trying to everything else?

Because I don’t currently even know what I don’t know, my code suffers. Which leads to my next point.

Bad for Business

Business at some level understands that having one guy who is the IT department isn’t going to work well. You don’t see any jobs advertised for that.

But “Programming” gets lumped together as one giant thing. But I’ll tell you. Work with a guy who really knows CSS. Or really knows Angular. Or really knows HTML. Two things would happen. Quality code would be produced much faster. The code would have fewer bugs. And the other developers, would probably become better in the areas they are weak in. This means that hiring a Full Stack developer is costing business more, even if they pay more for the individual experts.

Why I Care

Some may accuse me of being some old dude who can’t find a job.  Trust me, I have no problem finding work!  No.  The reason I care is because I’m sick of working on the crappy code left behind by guys who either didn’t invest the time to learn how to code correctly using the tools they had, or lacked the experience to know where to even start.

Now that client side development is a thing, it isn’t enough to be able to hack a result together, which is what most full-stack developers are doing who have most of their experience on the back-end. Even otherwise really smart programmers are getting this wrong.  Just because you know JavaScript or TypeScript (or whatever client side language you use that transpiles to JavaScript) doesn’t mean you know how to properly write a client side application that can be maintained, let alone one that can be tested properly!

I’m Not The Only One

When I first wrote this article, I had no idea this was such a hot topic.  Some agree.  Others disagree.  All seem pretty passionate in their view.  Many didn’t seem to read the whole article.

But here’s the deal, I’m not the only one.  A quick search for “Full Stack Developer Myth” brings up the following articles:

And that’s just the first four I could find.

To be fair, a small company may think they need to hire someone who can do it all.  But, they’d be better off hiring a “Full-Stack Agency” who has specialist in each area.  Unfortunately, my experience has shown a company who should be using an agency also has no clue about the skill level they should be hiring.

Practical Reality

I’m not sure I have an answer for the dilemma I’ve presented. Show your manager this article? Refuse to take Full Stack jobs?

No, I doubt those will work.

What I’ve been doing is interviewing for jobs on the strength of what I’m an expert in. It doesn’t always work. But for the companies that recognize that I know way more than most of their developers who are just getting by, this lands me a secure, well-paying place in the dev shop.

Spread the word. Full Stack developers don’t really exist. The best developers are specialist and business would do well to hire specialist over generalist.