Saturday, 16 March 2019

Why I don't call myself a Full-stack Developer

During some leisurely exploration of job sites, I came across an interesting trend. It seems there's an increase in companies requiring a "full-stack" web developer. For (gasp!) 3000 to 4000 SGD a month.

I have to wonder - do people even realize what they're asking for? Why "full stack"? The typical answer would be, as long as you've worked on two layers (namely, the front-end and the back-end), you're a full-stack developer. I strenuously disagree.

What does "full-stack" really mean?

In order to explain that, I would first have to begin with explaining the anatomy of a web development process. There are several layers of technology stacked (hence the term "full-stack") on top of each other. These may include, but are by no means limited to:

- Hosting/server/network
- Data Modelling/Systems Analysis
- Back-end programming/APIs
- Front-end design/HTML/CSS/JavaScript
- Marketing/SEO
- Project Management

Or to make things even simpler, what does the "stack" in "full-stack" actually refer to? Here's an example. Ever heard of LAMP?

No, not that lamp.

LAMP is a technological stack. It's an acronym comprising of all the technologies that make up its layers.

L is for Linux, which is the operating system.
A is for Apache, which is the server.
M is for MySQL, which is the database.
P is for PHP, which is the application scripting language.

And bear in mind that this is a much simpler example than the first. For this simplified example, a full-stack dev would need to be intimately familiar with only four layers. That's still double the number of layers most laypeople associate the term "full-stack" with.

A full-stack web developer has a good understanding of each layer and has attained a respectable degree of proficiency, if not mastery, over them. He has experienced web development in all these areas. He is the total package and can code your entire web application for you. All by his lonesome.

So, the question that remains in my mind is...

...why would such an awesomely multi-talented and experienced web wizard want to work for you for 3000 to 4000 SGD a month?

Oops, was I perhaps a little too honest there? But seriously, do these guys know what they're asking for when they say they want a "full-stack" web developer?

Football analogy

For those of us who watch football, here's an analogy.

The modern game has evolved. In the past, there was a goalkeeper, defenders, midfielders and strikers. Each specialized in their own area. Now, strikers have to backtrack to help out in defence. Defenders are expected to make the occasional foray up front. And midfielders - sorry guys - have to be everywhere. They have to provide assists, take shots, make tackles, link up with both defence and attack... yep, a lot of cross-training involved.

Let's talk football.

However, everyone is still a specialist. They may excel in more than one area, they may have to take on multiple roles on the pitch, but rare is the footballer who can be deployed anywhere on the field without thoroughly fucking up your game plan. No manager in his right mind is going to place Lionel Messi in defence, Sergio Ramos as central striker, or David Villa in goal.

Did that make sense, or did I just convince you that I know as little about football as I do about web development?

That said, David Villa could still make it as a goalkeeper. If the team in question was your typical High School first eleven. Because the bar for that would be significantly lower.

In other words, if you just need a generalist web developer for a relatively simple set-up to take care of all layers of the development process, fair enough. And if a small company or startup thinks they want to cut headcount by hiring a jack-of-all-trades, hey, I'm not about to judge.

But in this day and age, each layer of technology in the web development stack has grown. And is still growing. Is it realistic to expect anyone to be "full stack"? Web developers need to cross-train in several disciplines. They can't just get by with knowing only one layer of the entire process. At the very least, an understanding of how the current layer you are working with interacts with the next adjacent layer, or layers, is required.

So if a hiring company just wants cheap labor to take care of everything, here's a startling concept - just be honest about it. Stop abusing the term "full-stack".

Here's your stack, right there.

Because when we say "full-stack", we're talking about someone who has gone elbows-deep into each layer of the web development process. He's not just gotten his feet wet. Not just someone who has an interest in every layer and has poked around a bit, and knows how to throw fancy words like "Agile", "Scrum", "methodology" (and "full-stack", for that matter) around to sound like he knows his shit.

Speaking of which...

There are plenty of web developers who claim to be "full-stack" because they've done both front-end and back-end work. By that measure, almost all web developers are "full-stack". Have you ever met a front-end specialist who hasn't had to write back-end code and SQL queries? Do you know any back-end engineers who can't write a single line of HTML? I seriously doubt it.

Stop doing that. It's embarrassing to watch. We get it, you want to sound special. Stand out from the crowd.

But "has done both front-end and back-end work" is a requirement set by recruiters whose job is to sell candidates to companies, and claiming that their candidate is "full-stack" brings up the perceived value. I'm not going to be so crass as to claim that every recruiter knows diddly-squat, but more often than not, they are laypeople in the tech sector. Those are their standards. As a developer, you should be holding yourself to higher standards.

Calling someone like me a "full-stack developer" just because I've been employed by companies that made me do everything in the web development assembly line, is an insult to the real experts.

See you layer, alligator.
T___T

No comments:

Post a Comment