Being a full-stack developer is all the craze right now. It seems like all bootcamps with web developer programs are selling people on the idea of being full-stack. And to top it off, it seems like a lot of companies are interested in hiring them. So one might conclude that more developers should try to become full-stack right? Nope. I think not.
Let's start with the obvious benefit of learning the "full-stack" as a junior developer: you get to try a lot of different things at once. This means you are more likely to encounter what you're more naturally gifted at and focus your efforts there. However, with the demand for full-stack engineers being as prominent as it is, that's not how it's marketed to junior developers. Instead, it comes across more like, "We give you all the skills so you can get hired quickly!" And I just can't stand behind that kind of mentality.
Then there of course is the business side of things. After all, hiring a full-stack developer is a lot cheaper than hiring a specialist for each area you need. And thus from a budgetary perspective, this seems like an absolute no brainer. You get a bunch of swiss army knife developers who can theoretically handle "any" situation.
Don't get me wrong though. I understand the thrill and glory one must feel at the notion that you can "do it all by yourself." It must feel very empowering to think you can be a one man team and get the work of 4 to 5 people done all by yourself. And while it sounds really attractive and glorious, I would argue that it is one that would be short-lived.
The simplest argument against "full-stack" is that you are ultimately a "jack of all trades and master of none." While it may feel like you will have many opportunities to show how useful you are since you are doing the work of multiple people, I think that for most people, you are on thin ice at best. The reason is simple: you're either going to become outdated or you'll burnout trying to keep up with your "field."
As someone who is a front-end specialist, I can tell you from personal experience that I feel like I cannot even keep up with everything going on within it. While it was once pretty easy to know everything there was to know about HTML, CSS and JS, any web developer will tell you just how crazy the field is right now. In fact, here's a glimpse of all the topics I'm still trying to get comfortable with:
And that doesn't even include all the latest and greatest things coming down the pike that I'm not even aware of. So as someone who loves what he does and spends his own money and free time trying to keep up with his field, I'm barely keeping up at all with things I'm interested and vested in.
Not at all. And while I know this post certainly does seem to be pretty anti-full-stack, my actual feeling on this is that it is a decision that should be approached with care and proper attention. More importantly, I encourage developers to learn more about the various fields adjacent or tangential to them because it will open you up to new possibilities and ideas you weren't aware of before. So if you're someone who builds client-side applications, go learn about the back-end to supplement your skills. Or if you're someone who builds the back-end, take some time to learn about accessibility and user experience so you don't build terrible tools that people will hate using.
At the end of the day, I have found that people often tend lean towards one side of the puzzle versus the other. It's not something you necessarily decide but often find yourself unconsciously doing. But at the end of the day, if you find the right balance and really enjoy that full-stack role, I encourage to continue striving forward! However, should the moment come where you find one thing more enjoyable, I encourage you to specialize. And regardless of whether you land, keep on learning!