6 minute read
A shortstack developer is always two pancakes short of a full stack.
A full stack of pancakes is five pancakes and a shortstack is only three. A fullstack software developer is expected to know each part of the technology stack. Thus, a shortstack developer consciously chooses to only focus on the parts of the stack they can eat, while also not taking themselves too seriously.
Embracing the shortstack means admitting that you're always going to be two pancakes short, which frees you from your own ego, exposes your true honest self to the world, and makes learning new things easier.
Like pancakes, the shortstack is about comfort.
The web development world's focus on fullstack developers is problematic and unrealistic. Pledging to be a shortstack developer means freeing yourself of all those fullstack expectations.
The term ‘fullstack developer’ is fairly new, first entering programmer circles 10 years ago, and only really entering the zeitgeist recently. Before the term was invented, web developers were generally grouped into backend developers vs. frontend developers. Backend developers being masters of server side technologies and databases, while frontend developers being masters of client side technologies such as HTML, CSS, and JavaScript. That's a lot of pancakes to try and eat:
Even before the bifurcation between backend and frontend, developers were simply called programmers.
Fullstack developers are software developers who claim to have knowledge over the entire technology stack, ranging from low level infrastructure to backend technology all the way up to frontend technology (and everything in between!). The term ‘full stack web developer’ was first described in 2008 by Randy Schmidt as, “someone that does design, markup, styling, behavior, and programming.”1
The term grew in popularity 2 years later in 2010 when Carlos Bueno published a blog post while working at Facebook. He described a ‘full-stack programmer’ as:
A "full-stack programmer" is a generalist, someone who can create a non-trivial application by themselves. People who develop broad skills also tend to develop a good mental model of how different layers of a system behave. This turns out to be especially valuable for performance & optimization work. No one can know everything about everything, but you should be able to visualize what happens up and down the stack as an application does its thing.2
Since then, the term fullstack has been adopted by the tech industry and used (and abused). Almost 10 years ago, Mr. Bueno was even aware of the inherently problematic nature of this nature, stating, "No one can know everything about everything." Yet technology companies, hiring managers, and HR departments still seem to think that fullstack developers are a real creature.
This has led to a lot of industry experts questioning the term and pointing out how problematic the concept of a 'fullstack' developer really is.
Many parties have argued that fullstack developers are a myth, because the range of technologies a developer has to learn in order to achieve an expert level understanding of the entire stack is so immense that it’s virtually impossible.3
Controversy has come from hiring managers and HR departments shifting perceptions to believe that a single fullstack developer can replace two people, a backend developer and a frontend developer. Conversly, it’s been argued that teams of people with specialized skill sets build better products anyway, because the fullstack developer is technically possible but practically difficult to find and hire.4
Finally, others have argued that advertising that you’re hiring a ‘fullstack’ developer is tantamount to posting a hiring notice for ‘genius’ or ‘ninja’ and that the term lacks any real meaning in today’s world.5
I would argue that the web is built on so many layers of technology abstraction that web developers with any less than 10 years of experience could not viably call themselves ‘fullstack’, simply because it would take 10 years to learn all of the technologies or ‘the fullstack’ that powers the web. And even then, such a developer would have to consciously diversify their knowledge across the stack throughout that ten years, which is difficult to do, because mastery generally begets more mastery in any given area. Remember, this is everything from the intricacies of CSS to low level networking details. Even further, a true fullstack developer should likely know multiple real technology stacks, which is even harder.
It’s incredibly overwhelming and scary to even just write down all the topics, technologies, and focus areas that one would need to learn if you were to go on an epic quest to become a real ‘fullstack’ developer.
As a result, I identify as a shortstack developer. It’s a lot easier and obviously way more delicious:
Shortstack as a philosophy is about taking a carefree attitude towards coding. In an industry plagued by people suffering from impostor syndrome, requiring developers to learn the ‘fullstack’ only exacerbates the issue by intimidating newbies. Our carefree attitude is reflected by our love for pancakes, but we only need a shortstack, three pancakes, to be satisfied.
Shortstack developers embrace a philosophy that focuses on learning the technology they need to get the project done, without worrying about the superfluous details that have been abstracted away by the excellent work of other engineers with different specializations.
As an example, if you’re tasked with making a webpage responsive, it’s okay to not fully understand every layer of the OSI network model. In fact, forcing yourself to learn that knowledge in that context is actually a distraction from the task at hand, which is building a user interface that works on different screen sizes.
Shortstackers understand that they’re two pancakes short and gladly accept it.
Since shortstack developers own a carefree and pragmatic philosophy, they embrace the most effective way to learn new skills, a virtuous cycle of:
Their approach to a problem is one that relies on not fully understanding layers of abstraction and accepting them. Instead of trying to swallow the whole stack and choking themselves, shortstackers focus on cutting up what’s in front of them and eating it byte by byte. In practical application, this means relying on a team member with different skills or using a managed service instead of setting one up manually.
Shortstack developers take an approach with focus, so they can learn the parts of the technology stack that matter the most for the problem at hand.
For me personally, my shortstack approach is to embrace managed services and learn serverless technologies, so that I can focus on business logic and application code. As a result, I find myself most interested in Function-as-a-Service (FaaS) offerings. The power of FaaS comes in its flexibility to knit together applications across platforms in a scalable, maintenance free way.
If you made it this far, many sugary blessings on you! Obviously, this post is a bit satirical, but I am serious that I think all of us would do better by eating a smaller stack of pancakes, whether that be on our breakfast plates or in our technology obsessed minds.
I adhere to the shortstack philosophy and follow its approach. That means I:
I’m a shortstacker for life!
The conversation around the term 'fullstack' continues, and you can read a few interesting pieces here:
Full Stack Web Developers, Randy Schmidt
↩The Full Stack, Part I, Carlos Bueno
↩There's No Such Thing as a Full Stack Developer, Brian Rinaldi
↩The Myth of the Full-Stack Unicorn Developer, Jeremy Wiggins
↩The full stack developer is a myth, Scott Hadfield
↩