There's no such thing as a full stack developer
Tim
Posted on February 12, 2019
** If you're a generalist with a full stack title, this article isn't about attacking your valuable contributions to your Team.
TLDR: just skip to the conclusion i guess
Intro
The term has been gaining popularity for quite some time now, and it makes sense, because on paper it sounds like a good idea. As someone who works on web related technologies, you want to be seen as proficient in every possible area of the stack, thereby increasing your hireability. As someone who leads an engineering team, you want to be able to hire individuals who can contribute seamlessly to every area of your codebase. While sounding like a great idea, this concept is untenable for several reasons.
Every Stack is Different
There is no specific set of technologies used to create an end to end web application. There are an endless number of programming languages, server frameworks, database platforms, preprocessors, and package managers to choose from, all geared towards solving specific issues that vary depending on the type of application you’re looking to build, as well as the experience of the team responsible for maintaining the application. At best, identifying as a full stack developer can only mean that you’re proficient at contributing to every level of a particular stack that you’ve used in the past. Any hiring manager looking for a full stack developer is really just looking for someone who has worked with every piece of technology that the hiring company is currently using to deliver web applications. At the same time, they’re ignoring those who focus on other technologies and practices that may greatly improve the usability, functionality, and capabilities of their current application.
Specialization is Important
Even in a land of self titled full stack developers, there are technologies that some of us will be more comfortable with than others, and vice-versa. A developer with a CS degree may sometimes be more interested in GO, Rust, and Node, than a self taught developer who transitioned into the field learning about CSS in order to change a background color on their WordPress blog. While there’s absolutely nothing wrong with these differences (as both serve necessary purposes), it’s entirely unfair and irresponsible to expect both developers to contribute to the same parts of the codebase with equal proficiency. Even those with full stack titles tend to gravitate towards technologies they’re most comfortable with after joining an engineering team. A focus on full stack developers tends to ignore these differences, which in turn goes on to negatively affect the health of your application.
Full Stack is Bad for your Application
A job posting for a full stack developer has a tendency to attract a particular type of candidate. Usually this is someone who is comfortable with highly programmatic languages while having a small bit of experience with CSS, HTML semantics, accessibility, and front end performance. This makes sense in an environment where Javascript is emerging as a dominant programming language, and new developers are starting out by learning that first. As a result, other equally important facets of web development take a backseat, and are supplemented by a proliferation of frameworks and tools designed to make these less-paid-attention-to areas easier to manage. In a world where proficiency in Javascript can make you a lot of money, it may sometimes feel like a good decision to only focus on Javascript throughout the lifetime of your web development career. This pattern has led to a few unfortunate trends that can be found in a large number of web applications.
The largest (no pun intended) issue that has emerged as a result of a focus on full stack developers is that of performance. It has become routine to see web applications needlessly delivering hundreds of kilobytes images, CSS, and Javascript down to a user on first page load. Most of the time, these performance issues are due to nothing more than a lack of attention to front end performance by developers who are not interested these areas of web development. As a hiring manager, there’s nothing wrong with having developers on your team who don’t focus on front end performance. There is however something wrong with having no one on your team to focus on it.
Another issue that gets less attention than it deserves is that of accessibility. Making an application accessible for users with disabilities starts at an HTML level, which is a highly disregarded area by most full stack developers entering the hiring market (which is not the developers fault, it’s often ignored by schools and coding bootcamps alike). If you lead an engineering team, enabling your application to serve the largest number of users is an obvious and profitable strategy, and cannot happen without a developer on your team to focus on accessibility.
The final issue I’ll touch on for the sake of brevity is that of emerging features and capabilities in front end technology. Service Workers, responsive images, new CSS layout modules, push notifications, and background syncing capabilities are all features that the front end web is capable of handling today, but are nearly unheard of by a large majority of full stack developers because they require a special level of focus outside of the traditional skills mentioned in a full stack web developer job posting. Again, there’s nothing wrong with being unfamiliar with these technologies. There is a case to be made that an application loses to competitors when the team that manages it is packed with full stack developers who don’t specialize in these emerging areas.
Full Stack is Bad for your Hiring Pipeline
I’ve attended several interviews where technical evaluations have included nothing more than a few algorithm challenges and Javascript framework specific tasks (such as implementing a sortable table with React). Lately, these are the only technical evaluations that I've been subject to. It emphasizes the full-stack driven thought pattern that emphasizes backend capabilities over user interface development. As noted earlier, this can go on to negatively affect the overall health of an application. Hiring should be more holistic, focusing on individual strengths and weaknesses while scrutinizing a candidates overall potential to contribute to a team.
Conclusion
Moneyball was a good movie. It teaches a valuable lesson that applies to more than just baseball: Individual contributors bringing different strengths and weaknesses add up to a team that outperforms a roster full of MVPs. Being a full stack web developer sounds great on paper, but in reality, often translates to a team that lacks knowledge in specific areas of application design and development. Specialization and balance can fix this issue, and improve the overall health of your application. Hiring managers, team leads, coding bootcamps, and individual contributors should toss the full stack idea, because the stack is very big and very complicated - and you might just make a better app when you hire a CSS expert and a Kubernetes veteran, instead of two full stack developers who don't yet know what your stack is.
Posted on February 12, 2019
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.