JavaScript is everywhere.

In the old days, being a JavaScript developer meant that you were a front end web developer. Forever bound to the browser.

Those days are gone.

The rise of Node.js ushered in a new era. An era where being a JavaScript developer doesn’t necessarily mean a front-end web developer.

As a JavaScript developer today, you can target more platforms than any other high level language.

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.

A few years ago learning JavaScript meant only learning “Classic” ES3. Today if I were to start from scratch I would have to learn both ES3 and ES2015 (ES6).

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.

And the other one is JavaScript.

Part of the reason why some people dislike JavaScript so much is that they didn’t choose JavaScript. JavaScript chose them. Nothing they could do about it.

When web developers want to write front-end code without using nasty plugins, they have to use JavaScript.

Some have even tried to create languages whose sole purpose is to replace JavaScript. But the end result of compile to JavaScript languages isn’t always as great as its developers originally imagined.

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

The bottom line is that JavaScript rules the browser. It’s the only language that the browser is willing to speak.

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…

The JavaScript Advantage

Let’s try and look at things from a different angle.

What if the stack you chose, the stack you love, the stack you feel passionate about, is the JavaScript stack?

What if you chose to own JavaScript, instead of it owning you?

If you decide to choose Node.js as your back-end framework, you’ll enjoy several unique benefits other dev stacks only dream about.

When you choose Node.js, you’re choosing to unite your stack instead of dividing it. You’re choosing JavaScript all the way.

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 bundle install that. But then you’ll still need to handle all of your JavaScript dependencies.

When you choose Node.js, you can “ npm install all the things.” Both on the client and the server.

npm install all the things

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.

And if you go down the Universal JavaScript path, you could write a web app that can render on both the browser and the server seamlessly.

As you can see, there’s a huge upside to choosing full stack JavaScript. There are plenty of times you’ll find yourself working on the client-side and gaining knowledge that’ll also be useful on the server. Or vice-versa.

The life of the full stack JavaScript developer is much easier than those of other full stackers. But going full stack still requires a great deal of domain expertise. Both on the client and the server.

Node.js and the browser are both fluent JavaScript speakers.

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.

Does being a full stack JavaScript developer mean you have to constantly do both?

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.

You might be working at a company that discourages full stacking. If you find yourself only working on back-end features for example, why not develop a front-end JavaScript side project?

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.

The Joy of Being a Full Stack JavaScript Developer

A recent StackOverflow survey showed that developers overwhelmingly define themselves as full stack web developers. It also showed that 85.3% of us know at least some JavaScript.

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

A New Dawn for Full Stack JavaScript Developers

The JavaScript ecosystem keeps growing. From only browsers, we expanded to the server. And we’re now spreading our wings even further.

Mobile Apps, Bot Frameworks, Internet of Things devices, 3D Games and even Virtual Reality can be developed with JavaScript today.

As full stack JavaScript developers, we all have to maintain a mastery of at least one area. One thing we know we do exceptionally well.

But the doors of software development are wide open to us. You can choose to explore a wide array of new and exciting technologies, without neglecting your JavaScript skills.

The key strength of a full stack developer is the ability to constantly learn new things. Internalize them. Master them.

JavaScript is your canvas. Go make something beautiful with it.