In Defense of Full-Stack Developers
Two days ago, Brad Frost published a blog post outlining his skepticism of the term “full-stack developer.”
In my experience, “full-stack developers” always translates to “programmers who can do frontend code because they have to and it’s ‘easy’.” It’s never the other way around. The term “full-stack developer” implies that a developer is equally adept at both frontend code and backend code, but I’ve never in my personal experience witnessed anyone who truly fits that description.
I’ve followed Brad on Twitter for years and I respect his ideas and opinions. However, I have to disagree with him on this point. There’s a strong case to be made for someone who spends time on all parts of an application.
Is Front-End Development Easy?
No. Designing a modular, scalable and performant UI is extremely difficult. When developers think otherwise, they usually lack a clear understanding of what good HTML and CSS look like.
However, I don’t think a person’s opinion on this point has anything to do with whether they consider themselves a full-stack developer or not. It’s usually an indicator of how much experience they have writing front-end code.
Breadth vs. Depth
The core difference between a full-stack developer and a front-end or back-end developer is how specialized they are. A full-stack developer isn’t going to be able to dive as deep into both domains. However, there’s an advantage to doing both.
Full-stack developers can help to bridge the two sides. They can help these two groups communicate better. A well-informed front-end perspective leads to good API design, and solid back-end chops yields code that correctly communicates with servers.
End to End
The best part about being a full-stack developer is understanding how everything fits together. You can write an API knowing it’s exactly what you need. The front-end and back-end form a cohesive whole, and it’s easier to connect the two when you’re involved in both codebases.
Let’s be honest, doing them same thing day in and day out can get a little tedious. As a full-stack developer, I balance this by switching back and forth between the parts of an application I’m working on. When I get a little drained on HTML and CSS, I take a break and bust out some API endpoints. And when I can’t stand the sight of SQL, I dive into layout and usability.
The ability to switch helps me stay fresh and excited about my work.
We shouldn’t create artificial boundaries between the back-end and front-end. At the end of they day, both are skills and knowledge. Why limit what you learn because of your job description?
According to The Pragmatic Programmer:
The more different things you know, the more valuable you are.… The more technologies you are comfortable with, the better you will be able to adjust to change.
As a full-stack engineer, I can make changes to any part of the application. If I need a quick fix, I don’t have to bug another engineer to implement it for me, and I don’t have to wait for their schedule to free up. This helps me remove roadblocks, which lets me move faster.
Large companies like Google and Amazon need specialized developers. They need front-end engineers who can produce solutions for the detailed edge-cases they’re supporting, and they need backend engineers who can produce finely-tuned systems at massive scales.
Startups have the opposite need. They didn’t have the resources to hire specialists for every position, and they couldn’t always guarantee that the work would be spread evenly.
The skills you develop depend on the types of companies you work for.
Brad wrapped up his article with a couple more ideas.
I don’t think “full-stack developer” is necessarily a bad word, and there’s nothing wrong for individual developers to define their role in that way. But organizationally, when I encounter “we only hire full-stack developers” orgs I’ve only seen issues with their process and UI code.
I would agree with both points. But I don’t think this means we should toss out full-stackers.
At the end of the day, the front end and back end are a spectrum. Maybe you devote one-hundred percent of your time to the front-end camp. Or maybe you’re fifty-fifty. Where you fall doesn’t matter. It’s about what makes you happy, and if you enjoy doing both, then do both.