The Rise of The Unicorns AKA “Full-Stack Developers”
These days, there’s increasing pressure for developers and coders to be able to define themselves as “full-stack”.
This basically means they need to have a “very particular set of skills”, though the skills are a little less cool than in Taken.
Think instead in terms of HTML, CSS, JS, PHP, MySQL, Apache, Linux...
A full-stack developer is practically a one-man/one-woman army when it comes to creating web apps. Can’t do all those things? Then you may have trouble getting an interview with a top employer.
Facebook for instance, will only (allegedly) hire developers they classify as “full stack” and many others are following suit.
Unfortunately, the list of skills involved in developing web apps only continues to grow.
Today there’s some debate as to whether it’s even possible to be a full stack developer. Even those who “believe” in the full-stack developer will debate the best definition for what that means.
So let’s take a more in-depth look into what the term actually encompasses and how you might achieve that lofty, mythical status...
Coders don’t work alone
The stereotypical image of a programmer is of someone who is very isolated and introverted – someone who works entirely alone on their projects, with only a cup of coffee and a ‘Glitch Mob’ album to keep them company.
Maybe they also wear a trench coat, like Neo from the Matrix.
In reality, this picture is both true and not true at the same time.
While coders often do work in isolation and will spend a lot of time “in flow”, working on projects without raising their heads, it’s also true that they need to be part of a larger team. And if the coder isn’t part of a larger team? Then they’ll likely need to reach out to others in order to get help and support during certain aspects of their business.
One programmer did not build Facebook (despite what The Social Network would have you believe). One programmer certainly does not design the look of Facebook, manage its servers and perform the necessary marketing to ensure it ends up with users.
But what is key is that they know how to make pages "speak" to one another, understand how the UI is going to work, and how the files are going to be save and categorized.
Likewise, they should know what the marketing team has in store, which colors get a good response from the focus groups, etc.
For any web development team there needs to be synergy both within departments and across departments.
This is where the term ‘full-stack developer’ becomes relevant.
What does it mean to be a Full-Stack Developer?
You can imagine any software product to be built in a series of layers, one stacked upon the other. You begin with the most fundamental and abstract elements and then build on top of that things like attractive UIs and flourishes like animations.
In the case of web development, this is more complex because you’ll need to manage servers and databases and you’ll need to make sure all that private data is secure. Each of these elements can be considered layers in a stack. The full-stack developer then is someone who understands every layer instead of just their narrow slice.
Think of the full-stack developer as a “Jack of all trades”, who may still specialize in one area.
They are a much more valuable part of the team and also much more capable of working independently.
It’s like having a kitchen full of chefs, sous chefs, apprentices, and other professionals. There’s only one head chef, but you would expect an apprentice to be able to do basic jobs like boil some pasta. And life would go a lot more smoothly if they understood which dishes required the pasta to be “al dente” and which ones required something a bit sloppier. But this is really just a very simplified example.
In reality, the term “full-stack” is only applied to web-based apps which have much more complex stacks.
A mythical creature?
There’s actually a fair bit of controversy surrounding the whole concept of the full-stack developer. Why? Because some people question whether such a person can actually exist.
As the web develops, more and more elements have been introduced to enable different features for websites and web apps. This has grown to the point where being truly “full-stack” may be completely impossible.
Think about scientists. Back in the Renaissance you had your polymath types who could conquer multiple different disciplines within science and art. Look at someone like Da Vinci who made breakthroughs in physiques, engineering, biology and art. Today, you have to study a PhD to properly understand even a small aspect of one scientific discipline. You don’t do a PhD in science; you do it in “the human eye and its reaction to certain wavelengths”.
Being a full stack developer is the equivalent of having a working knowledge of all of science.
Is that even possible?
So, what now?
So is it time to give up on your dream of being a Facebook employee? Not necessarily.
People who get upset by the term “full-stack” are taking things too literally. Believe it or not, Mark Zuckerberg is a pretty switched-on guy. He knows that it’s unrealistic to expect you to have a working knowledge of everything we just covered. What he might expect though is that you just know how these stages work and how they work together.
Once upon a time, the term “full-stack” was much simpler. This meant being able to code a web app using Python, jQuery, HTML and CSS and then manage some files by transferring them to a shared hosting account via FTP and putting them in a nice database. Truth be told, if you can do all those things, then you can probably still be considered “full-stack” or at least “quite full stack”.
The rest you’ll pick up as you go along – you’ll find that you get introduced to different stages and coding languages as you go – and you’ll learn on the job.
Your coffee consumption is about to go up big time. You get the coffee thing now, don’t you?