The legend of the full stack developer.

I automatically get very defensive when I hear this phrase. Truth is stacks are a lot bigger than what they used to be, and being able to claim one has acquired refined skills at every layer of web development is certainly not a small claim. Does this mean you have a broad range of skills or you specialise in everything?

For a time (allegedly) Facebook only hired full-stack engineers. This was of course when they were building the first few versions of Facebook, which, lets face it had a relatively simple php backend and wasn’t anything special design-wise.

Full-stack used to mean less layers.

Coding php or Python, jQuery, HTML, CSS then transferring a few files via FTP to your shared hosting account or dedicated server? You were full-stack. HTML was trivial, and even thinking of implementing any proper application code in JavaScript wasn’t possible.

My beef is not with people who can do all of the above, it’s with the label ‘full-stack developer’. What does it mean in 2016?

At the level of a senior full-stack engineer we’re perhaps talking about architecting a modular Backbone/AngularJS front-end whilst optimising content delivery and tweaking hardware accelerated layers in CSS, followed by implementing an async non-blocking backend (which also pre-renders templates on the server), and pushing to an AWS cluster which has been built with security and scaleability in mind. Not to mention design. Designing UI responsively and mobile-first is essential, utilising a CSS pre-processor to save time. And remember to setup Nagios for monitoring. Oh, and ideally when the Continuous Integration server detects a bad build because your end-to-end tests have failed, get it to send you an SMS with the build error messages. Well, the last two are probably for bonus points.

Ask someone who labels themselves ‘full-stack’. Do they believe they have familiarity with different layers, or true mastery?

How skilled are you in each discipline?

The basics of the languages/frameworks we learn today can often be picked up in a matter of hours. We no longer add skills to our CVs by taking a course, we simply download some code and start hacking through tutorials and demo code. The problem is, I feel the difference between knowing something in web development and truly mastering it is now becoming an increasingly blurred line.

It’s very easy to become disillusioned with your own skills when you’ve deployed some code which has been consumed by lots of users. Let’s say you’ve written a web application which has scaled well under load, and you’ve received great feedback. Are you a master of everything you used in this stack? Or are you simply good at implementing the layers you needed to make things work together? Because that’s an entirely different skill, and in fact a very valuable one.

The skill of acquiring new skills

In my eyes the most valuable skill to have is the ability to learn, closely followed by the ability to know when you don’t know something. I’m sure we’ve all met people who decide to put brakes on their own learning because they believe they’ve become a master at something. I don’t know about you, but the smartest people I know (and the ones I have most respect for) are the ones who are still eager to learn new things every day, from everyone they meet. These people just don’t stop growing, in terms of both ability and character.

Why I’m not a full-stack developer

At one point (probably a few years ago) I heard this phrase ‘full-stack’ and I thought “yeah, I’m one of them”. Two years later after working in roles with php, .Net, Node and finally JavaScript and CSS, I only label myself as a front-end developer. Maybe I just wasn’t that good at previous disciplines, or maybe since spending the last 1 year in pure JavaScript roles I just actually realised how high the limits are when you specialise. This is simply opportunity I did not have when I was busy in cross-discipline roles working at smaller projects.

Sure, I’ve got some broad skills like a lot of developers. However, I’d like to think being a front-end developer now assumes some knowledge of UX, design, and how data is modelled and served on the backend, and this is why I think the term full-stack is old fashioned and perhaps a bit smug.

Maybe, I just don’t like the term.

Some people are willing to have a go at everything

Perhaps most respectable about all people who claim to be full-stack, is that is conveys ambition and persistance. The ideal developer should be willing to have a go at learning anything, but also acknowledge when they need help from a specialist in the team.

Perhaps I was too defensive at first, I’ve met too many people who pronounce the term in a smug way, instantly causing me to discredit them. However, say you’re full-stack in a normal way, and there will be no scrutiny from my part. It won’t be at all like meeting a unilag electrical engineering lecturer.

Please harass me in the comments

As I wait for the inevitable backlash of a thousand-strong army of full-stack developers, I sit here tinkering with a piece of HTML for my next ‘design that will blow you away’, which will no doubt be undone by a flaw that I’ve overlooked due to my lack of some skill.