Those days are gone.
But for now, let’s focus on the two main platforms: The browser and the server.
Why should you have to choose between the two?
The Problem with Being A Full Stack Web Developer
There’s an old saying: “A Jack of All Trades is a Master of None.” And like most old sayings, it has a grain of truth in it.
Every time you decide to branch out of your core competency, you’re wasting time you could’ve spent further specializing in it.
“If I was stranded on an island, and the only way to get off the island was to make a pretty UI, I’d die there.” – Linus Torvalds, creator of Linux.
The main concern with going full stack is that you risk becoming mediocre in both the front-end and the back-end. Which is way worse than being awesome in just one.
Cynics often say that a full stack developer is “A developer who can introduce a bug to every layer of the software stack.”
That’s because development stacks are always evolving. The problems we’re trying to solve keep getting more and more complex. As a result, our dev stacks naturally grow as well.
Knowing the latest and greatest language features doesn’t absolve me from learning the basics.
A Tale of Two Development Stacks
Every development stack has its own little world.
Each language has its own web development frameworks. Python has Django, Ruby has Ruby on Rails.
And each stack has its own package manager, utility libraries, and unique language constructs. There are passionate people behind each stack. Whether they’re bloggers, enterprise company developers, or open source contributors.
And each stack has a unique set of strengths and weaknesses.
There’s no point in comparing development stacks.
But when you decide to go full stack, you inevitably have to juggle between two development stacks.
One is the stack you chose, the stack you love, the stack you feel passionate about.
One language which I won’t mention explicitly (CoffeeScript) tried to do so. It’s now dreaded by 71% of its developers. 71%! That’s WordPress levels of self hatred!
CoffeeScript most dreaded StackOverflow 2016 developer survey results
A lot of very smart men and women have tried to make browsers speak a different language. A lot of very smart men and women failed.
Those stubborn browsers.
Well you know what they say, if you can’t beat them…
Let’s try and look at things from a different angle.
If you decide to choose Node.js as your back-end framework, you’ll enjoy several unique benefits other dev stacks only dream about.
You won’t have to figure out what’s the Lodash utility equivalent in Ruby or Python, you’ll just use Lodash.
You could go running around
pip install this and
When you choose Node.js, you can “
npm install all the things.” Both on the client and the server.
Code reuse will skyrocket. And if you find yourself writing your own implementation of a left padding string function, you’ll only have to write it once. In one language instead of two.
But writing front-end code that runs on the browser and back-end code that runs on the server are still two very different things.
The 70/30 Rule
Some people claim that there’s no such as full stack web developer. You’re either front-end oriented or back-end oriented. You have to choose.
And I understand where they’re coming from.
Finding a developer who’s exactly 50% front-end and 50% back-end is like finding a mythic creature. A leprechaun.
You think a leprechaun will make all of your wishes come true and give you a pot of gold. But at some point you realize that leprechauns don’t exist. You were just drunk and talking to a midget wearing green. True Story.
The truth is that all full stack developers are either front-end oriented or back-end oriented.
Deciding which one you are will only work to your benefit.
Realizing you’re more of a front-end guy/gal doesn’t make you any less of a back-end ninja. It just means you’ll naturally gravitate towards more front-end heavy features.
This is why I humbly offer the 70/30 rule:
Given a choice of features to implement throughout the year. Try to navigate your way so that 70% of your time is spent working in your specialization. Spend the other 30% developing anything else.
And nothing is written in stone. The fact you’re more of a back-end developer this year doesn’t mean you can’t switch to a front-end focus next year.
It only means that you’ll have to work harder on your front-end skills until you become as awesome as you were the on the back-end. Just don’t forget to spend 30% of the time on the back-end to keep you sharp.
The truth is that you can and should be awesome on all ends. If you so choose.
But what’s the reason that makes being a full stack developer so popular?
Is it market conditions? The unwillingness to choose between front-end and back-end? The undeniable sex appeal that comes from being a full stacker?
I think the answer is much simpler.
It’s way more fun being a full stack developer.
The satisfaction you get when developing a feature end to end is one of the best things about being a developer.
Sending those little bits of data from the UI you created. Receiving them on the API you created. Saving them or manipulating them however you like.
Seeing people use a feature you created end to end is an amazing feeling that’s hard to describe. You can’t help but think to yourself “I created that. It wasn’t possible before, but now people are doing it because of me.”
The key strength of a full stack developer is the ability to constantly learn new things. Internalize them. Master them.