The term Full Stack Developer can spark some immediate questions.
What does it actually mean to be a Full Stack Developer?
Is it even possible to know all the components of the modern web stack?
These are questions that Johnny Ray Austin, local technologist and thought leader, addressed at CascadiaJS 2019. We asked him to explain this topic more fully, especially in terms of working in the startup space.
In this interview, Johnny Ray Austin provides a fresh perspective on how far web development has come during the last 15 years, and lays the groundwork for realistic expectations of developers.
The conversation below has been edited for length and content.
How do you define what a Full Stack Developer is today?
In the past 10 years or so, the phrase Full Stack Developer has become shorthand for doing both frontend and backend development.
Before, frontend development was very basic. Browsers didn’t do much – they were little more than document rendering machines. Frontend development involved form validation and maybe some dynamic CSS. Working on the backend meant working on API and servers. System and Database Administration wasn’t viewed as traditional development work.
But if you really zoom out and look at how technology is consumed these days, the stack is much broader than that.
Your television is a computer. You carry a computer in your pocket in the form of your cellphone. If you’re building a product today, you have to at least consider mobile (if not start with it as the main focus).
It’s now part of the stack.
Wearables are becoming significant, especially when it comes to the fitness industry. Browsers themselves are much more capable. In fact, the browser is now a platform.
You have databases and web sockets and all this stuff on the frontend.
Then you go back to the backend and find all these different frameworks.
That doesn’t even include the middle backend layer with API’s or the DevOps revolution where you run your own production workload due to tools like Docker. Then there’s also serverless, which is a really great abstraction but it comes with its own learning curve.
All of those things are just part of what’s within “the stack”.
So these days, “full stack” implies an engineer who can essentially cover all of these areas. It means an engineer who can climb up and down the stack and solve complex problems anywhere.
I think that definition of a Full Stack Engineer is somewhat absurd. It’s asking for too much when you consider what the stack is today.
It’s especially too much to ask of someone who’s just starting out in their career. When a fresh engineer sees all these different components, they have no idea where to start. Saying you want a Full Stack Developer to come in and help out can be a bit daunting for people who are trying to break into their career.
In the startup space, a lot of these companies are looking for team players who can “do it all.” What would you recommend for younger companies when it comes to hiring engineers?
To clarify, I think it’s great to have versatile engineers. Budget is a thing. If you can only get one engineer, then hire someone who can work up and down the stack and help in as many areas as possible. This kind of employee is especially valuable during the early stages of a company’s history.
But understand you’re going to hit a limit with them.
When a specific part of what you’re building becomes really important, whether it’s site reliability or scale or a great frontend user experience, it’s important to understand those employees might not be able to deliver the level of specialization you want. Their value comes from the fact that they can work up and down the stack.
It’s really just about recognizing when you’ve hit the limit of where your generalists can get you.
Once you’ve hit that limit, you need to consider how to bring specialization into the company. It’s time to either invest money into your generalist, so they can learn the technology, or hire a specialist.
If you want to build world class products, you need engineers doing world class work. That means specialization.
Note: If you want to learn about developing a specialty vs. being language agnostic, check out these tips from Ali Spittel!