paint-brush
The Full Stack Fallacy: Why Full Stack Engineers Don’t Actually Existby@jordan.shapiro
1,874 reads
1,874 reads

The Full Stack Fallacy: Why Full Stack Engineers Don’t Actually Exist

by Jordan ShapiroMay 27th, 2016
Read on Terminal Reader
Read this story w/o Javascript
tldt arrow

Too Long; Didn't Read

The tech industry defines a “full stack engineer” as one who can write any type of code needed for a project. We laud this engineer as a demigod, since they can simultaneously face the <a href="http://scholar.harvard.edu/files/mickens/files/thenightwatch.pdf" target="_blank">lawless zombie apocalypse of systems programming</a> and design a flawless user experience to dazzle the masses. The power of a full stack coder is that for many Silicon Valley <a href="https://hackernoon.com/tagged/startups" target="_blank">startups</a> this individual can jump in at any level of the <a href="https://hackernoon.com/tagged/technology" target="_blank">technology</a> and have significant impact. That is to say, for most companies that develop apps, platforms, and services, it’s not too hard to find someone who can build <strong>everything</strong> the company needs, hence the bias towards these more nimble ventures.

Companies Mentioned

Mention Thumbnail
Mention Thumbnail

Coins Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - The Full Stack Fallacy: Why Full Stack Engineers Don’t Actually Exist
Jordan Shapiro HackerNoon profile picture

Full stack engineers span from the deep depths of the operating system up to the superficial client-side interface.

The tech industry defines a “full stack engineer” as one who can write any type of code needed for a project. We laud this engineer as a demigod, since they can simultaneously face the lawless zombie apocalypse of systems programming and design a flawless user experience to dazzle the masses. The power of a full stack coder is that for many Silicon Valley startups this individual can jump in at any level of the technology and have significant impact. That is to say, for most companies that develop apps, platforms, and services, it’s not too hard to find someone who can build everything the company needs, hence the bias towards these more nimble ventures.

The concept of a full stack engineer starts to break down as soon as you add anything physical to your technology stack. Hardware changes the game.

Once your company deals with devices, you lose the ability to change things at will with a software update. You go from App Store/Play Store releases to full factory recalls of your product. And, needless to say, you’ll need some engineers who can handle industrial design, embedded software, and manufacturing.

There are, of course, individuals who are capable of leading a product from CAD to UI. We call them mechatronics engineers and they are a rare breed at the intersection of electrical, mechanical, and computer engineering. While mechatronics as a field is still in flux, what we’ll begin to notice is that these interdisciplinary engineers will never be true experts across the stack. Put simply, the robotics engineer is not likely to be the world’s foremost expert on interfaces.

The stack expanded beyond the confines of computer science, representative of a traditional hardware/software company.

When we enter more industries, our stack continues to grow and the ability to be “full stack” becomes even less feasible. We have names for these engineers as well, some of whom are capable of out-spanning the mechatronics masters. On the increasingly micro scale, they are bioengineers, chemical engineers, material scientists, and engineering physicists. On the macro side of things, they are aeronautics and astronomics engineers or system optimization engineers. At this point, “full stack” no longer implies expertise (an expert on human bodies is not likely to be an ace on planetary bodies as well), but rather a comfort and fluidity with changing fields and orders of magnitude when needed.

A true full stack engineer is a generalist, not an expert.

The computer science stack expanded out to include micro and macro sciences. Disclaimer: This diagram may not be an exhaustive list, but attempts to cover many traditional engineering disciplines.

It is exceedingly rare to find an engineer who can jump into any project at any company and start providing value, but without a doubt, that person possesses a few critical qualities:

  • Engineering Mindset — the ability to break down problems into components and to approach them with a methodical structure
  • Interdisciplinary Fluency — the ability to comfortably delve into various technological fields as needed, generally predicated by a strong understanding of fundamental science (physics, chemistry, biology, etc.)
  • Growth Mindset — the confidence to approach challenging tasks and the humility to ask for help, recognizing that everything is an opportunity for improvement
  • Strong Interpersonal Communication — the often-overlooked necessity for an engineer who intends to span multiple teams, allowing ideas and insights to flow between those working groups

That is, for a company with interdisciplinary technology, the best people to achieve the task at hand are strong generalists with solid core problem solving skills. This is the closest we can truly get to being “full stack.” While generalist engineers are hard to come by, the good news is that we can train them. The best training comes in the form of flexible engineering curricula that provide students the opportunity to explore through diverse project work, but even determined individuals who tinker and experiment on their own can become strong generalists.

By now you might have considered that the ordering of my full science stack might be off. For example, some chemical properties are fundamental for material science, but the reverse is also true. Or you might have realized that it’s difficult to study engineering without any specialization whatsoever. Granted, for computer science, the stack has more definite layers. And it’s an over-generalization to ascribe an order of magnitude to entire fields (a chemist might study electron orbitals in the morning and ocean compound concentrations in the afternoon). The reality is that science arranges itself less as a stack and more as a mesh, like this:

Interdisciplinary Engineers. Engineers should map their strengths across interdisciplinary sciences, reflecting their interdependencies. Yellow: Ideal (read: impossible) engineering expert in all disciplines. Orange: Example of an academic focusing in chemical engineering with applications in material science and, subsequently, in bioengineering. Red: My personal interdisciplinary stack mapping, for reference. Gray: Traditional understanding of the computer science “full stack” engineer.

While some of these fields have existed for millennia, I’m not the first to recognize that they are converging and intertwining more each day. As we educate engineers for the future, it will become more and more necessary to introduce them to generalizable principles that can be used to solve big interdisciplinary problems on a global scale. We’ll need to invest more in finding, hiring, and promoting generalists with the skills to link together diverse fields. And — for all of our sakes — let’s not delude ourselves by thinking that any of them is truly “full stack.”

Liked this post? Recommend and share it so that others can find it too!