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:
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!