Full Stack Engineers Don't Exist!
Tags: developer, interview, softwareengineering, learning
Published: 2023-11-03 16:27:32

There's a problem with those thousands of jobs available for Full Stack Engineers or Developers on LinkedIn, like a unicorn, that person isn't real. Insert spit-take, read it, then tell me what you think.

---

There I said it, you might think this is a controversial or unpopular opinion but if you hear me out maybe you'll agree with me, maybe not, but that's what makes life worth living. I've believed this for a long time now, but it's time to put a little more thought and time to flesh it out. 

As for the term Developer or Engineer, yes technically they have different scopes but they mostly cover the same disciplines and principles, so I'll use them interchangeably from here on out.

---

## Defining a Full Stack Developer

To say something doesn't exist, I should probably first define what people think it is. So Looking across the internet to 

> _A full-stack developer is a developer or engineer who can build both the front end and the back end of a website. The front end (the parts of a website a user sees and interacts with) and the back end (the behind-the-scenes data storage and processing) require different skill sets. Since full-stack developers are involved with all aspects of the development process, they must have expertise in both._
> _Coursera - What Is a Full-Stack Developer?_

> _A full-stack developer can be defined as a developer or an engineer who works with both the front and back end development of a website, web application or desktop application. This means they can lead platform builds that involve databases, user-facing websites, and working with clients during the planning phase of projects._
> _Wikipedia - Solution Stack - Full Stack Developer_

This sounds reasonable, which has led to the rise of this term to become part of engineering culture. This may have been reasonable but the world isn't run by the LAMP stack anymore, the role of a software engineer isn't as simple as it once was.

---

## Demands on the Modern-Day Software Engineer

Being an engineer isn't as simple as writing code anymore. The definitions above hint at it but the expectations of what an engineer is capable of has grown exponentially over the last few years. Every day is different, and every workplace is different, but the point remains that software engineering is a much larger beast than it once was.

Not even covering all bases, the engineer finds themselves; defining work, estimating work, writing test cases, writing unit or integration or e2e tests, creating or coding build and/or  deployment pipelines, defining metrics for monitoring, analyzing application logs, bug fixing, designing solution or system architecture, creating infrastructure as code and commiting, merging and rebasing code. Notice I didn't even mention the actual work of writing the code to deliver features. Now cover those bases across data storage, backend systems, and frontend applications.

Maybe a "developer" doesn't get as full a scope as the "engineer" but it's pretty similar. The point here is the expectations of engineers and developers are wide-ranging and the expectation for one to be an expert or senior across all of those disciplines is unrealistic at best.

---

## Keeping Up is Hard

Taking all these disciplines into account, now think about how on earth you stay current and/or skilled in all of them at the same time. The idea of "Full Stack" is that you ask skilled or highly skilled across the scope of your role. 
The overload of information and constant change make this impossible.

From Udemy to YouTube, to documentation, to official training courses and certifications, staying up to date with what you currently know is hard enough. Now add library releases and updates, new technology, and new products into that mix. To stay current, will become a full-time job without doing any delivery work at all.

If you do web development with JavaScript, I could stop here you know the pain. How many different libraries, frameworks, and build tools have you learned over the last few years…I'll wait…it's a long list.

---

## Think Differently About Engineers

Now obviously I'm not saying that people can't have a lot of skills at one time. It's more that the expectation that someone should be equally skilled across an ever-expanding set of disciplines is challenging and unrealistic.
A better expectation is to become/hire/build a team of T-Shaped engineers, but even T-Shaped is a rough definition to hold to.

> _A T-shaped software engineer is a developer who specializes in one area, but also has a broad range of skills in other areas. The term "T-shaped" is used as a metaphor for an individual's strengths. The vertical line of the T represents expertise in a particular field, while the horizontal line represents cross-discipline competencies._

Building a shallow but broad range of skills is difficult too.

I like to think of Pii Shaped Engineers, learning multiple skills is a must! Becoming an expert/senior at more than one is very beneficial too, but the journey (much like Pii) is never-ending. They might not know everything but they like to learn.

---

## Curious Engineers are the New Black

I interview engineers all the time, The thing I look for is a broader set of knowledge regardless of depth, but the trait underlying is curiosity.

The best engineers love solving problems, but they are curious about the best way to solve them. They continue to learn better techniques, and newer technologies and constantly seek to improve. The top engineers can communicate well enough to explain what they are capable of learning and where they are lacking. Humility helps a lot.

When hiring terms like Full Stack and even T-Shaped can be handcuffs. They get you something but it's not always what you need. As an engineer, it's a nice label but it's impossible to live up to.

Forget a specific set of skills, if you become a curious engineer who can do few things but is always keen to learn, you will figure out the rest.

---

Given all this, the actual percentage of real Full Stack Engineers has to be continually approaching zero. Don't get me wrong, there are unicorns out there but there aren't many, if any. When I read some job descriptions, I think this hope that an engineer will be able to live up to the full list of wants and needs is a bit misguided.

The world of Applicant Tracking Systems makes it difficult for prospective employees to exist beyond the buzzwords, but maybe those who are hiring should look beyond the list of skills and look for that very useful personality trait, Curiosity.

---

A bold and possibly unpopular opinion but let me know what you think.