Fullstack Developers

Feb 2020

There are of course lots of articles about Fullstack Developers. To sum them up it is mostly a discussion about being a specialist vs being a generalist. The most articles agree that it is not possible to truly become a Fullstack Developer. I'll come back to that later.

On the other hand there are lots of job advertisements looking for Fullstack Developers. There seems to be some need for specifics skills or a specific set of them. To be honest, most of these job advertisements actually do not target Fullstack Developers. They just describe a specific bunch of tools and frameworks.

So you could approach the topic from two directions:

Maybe it is helpful to get a more holistic view. What I try is to provide some tools to get to the questions that matter.

Greetings from the dark side

Let's have a look at some job advertisements (from 2019). I summarized titles and the required skills as described.

Honestly I wrote similar job advertisements on my own - sorry for that.

Some real world examples:

FullStack Developer
ReactJS, NodeJS, SQL, NoSQL, Scrum/Kanban

Fullstack .net Developer
.net framework, JavaScript, Angular

Java Full Stack Developer
Java, Spring, JavaScript, React, Vue.js, MySQL, Jenkins

Full-Stack Developer
HTML (4,5), CSS (2,3), PHP, Symphony, JavaScript, jQuery, Angular, other Frameworks, MySQL, Cloud, Linux Server Administration

Full Stack Developer Front- & Backend
Wordpress, SQL, JS & PHP, HTML, CSS, jQuery, Jira, REST, GraphQL, Git

Fancy-Title Full Stack Developer
HTML, CSS, Ajax, JavaScript, PHP, Java, .net, SQL, NoSQL, Architecture

Homogenous isn't it?

Just by reading this some aspects are obvious:

There seems to be a lack of definition what Fullstack Development is. Let's figure out if there is some common ground.

Why is Fullstack Development important nowadays?

There are two vectors where the need comes from.

The first vector is just small budget. For a tiny project, a small webshop or something like that, economically it wouldn't make sense to aquire a large team. So you need a single person or a small team just doing different tasks to tackle the whole project. Normally the range of languages, frameworks and tools is small and manageable. Which does not mean it is less challenging for the developers.

You need an expert or two tackling the whole "tiny" project.

The second vector is just the trend to slice architectures vertically. There are many reasons why this makes sense. The most important one is to get rid of cascading dependencies. Horizontal architectures always suffer from the responsibilities each layer spans. The idea is to set up teams who are fully responsible for a slice of your product.

You need a small team tackling the whole slice.

The Myth of THE Fullstack Developer

There are lots of "How to become a Fullstack Developer" guides referring to all sorts of frameworks for you to learn. They often recommend some crash courses, articles or brain dumps - for those frameworks. And then you are a Fullstack Developer? I don't think so.

Let's do some simple math.

Referring to certifications available (e.g. MySQL Dev, LPIC, SCJP, ___) it'll take half a year of theory and practice to become a professional in each topic.

Assuming for each language/tool/framework mentioned in some "Fullstack Developer" job advertisements, it'll take you 5 1/2 years to take the journey. To gather all it'll be 10 years and more. Phew.

Expecting that knowledge simply cumulates

But it's not going to happen like that. This kind of knowledge has a half time of roughly 2 years. After ~5 years your knowledge of a framework or tool is worthless.

The tool/framework knowledge erodes in 2 years time.

Degradation of tool-knowledge

Not to mention that there are new versions of languages every year and a new fancy framework at least every half year.

This is what really happens:

What your levelling up really looks like

You're getting stuck at some level.

It should be clear that The Fullstack Developer can't exist within the terms of tools and frameworks. Acquiring basic knowledge in a weekend course may just help you to polish your vita but is far to superficial.

What does it mean for developers?

Obviously it is not possible to be an up-to-date expert in many areas. So you have to decide whether you want to be a jack of all trades or a specialist in some handpicked areas.

It is very exciting to learn a new language, tool or framework. Enjoy it, learn it - there is nothing wrong doing it. But then go the last mile! Try to understand what that thing was actually invented for. What problem does it solve. And then learn how the developers approached the solution.

It is Patterns Patterns Patterns - learn from how others solved a problem. Learn to look behind the curtain.

That kind of knowledge stays for a while.

What does it mean for recruiters?

You may look for a professional developer that is capable to get quickly into your existing stack. The bigger the toolbox the better. That's fine.

But you shouldn't stop here.

What you may really need is a developer able to adapt to change. Who is able to quickly get into new tools, languages, frameworks and all that stuff. Who is able to find the right tool for the job.

Further Readings

Uncle Bob - Make the Magic go away.