Full stack developers are somewhat mythical figures in the tech world.
Most developers spend their entire career specializing in one specific layer of the stack – yet full stack developers can, apparently, do it all? Where are these technological geniuses? And are they truly that talented?
The answer to the first question, of course, is
in the world, like everybody else. But the answer to the second question – are they truly that talented? – is more complicated.
Full Stack Developers Do Exist
Full stack developers do, in fact, exist. However, you have to be careful when assessing the skills of a full stack developer. Being a good full stack engineer is not about familiarity; it’s about an intuitive and deep understanding of both front-end and back-end best practices and paradigms.
Of course, full stack developers are capable of coding for every layer in the stack, and if they’re talented, they’ll do a good and thorough job of it. That requires a substantial amount of skill and a larger amount of experience.
That being said, however, a full stack developer’s work on the front-end will never compare to that of a front-end specialist, and that holds true for every layer of the stack. A full stack developer who is an expert in every layer of the stack is incredibly rare – the kind of genius you meet once in a lifetime. Granted, they exist, but they likely won’t be the full stack developer you’re hiring.
Full Stack Developers Aren’t a Solo Act
And so, a full stack developer is less about expertise and more about breadth and knowing how the different elements of development interact with each other and come together to form a product.
This has its pros and cons. In Peter Yared’s article The Rise and Fall of the Full Stack Developer, he points out how development has gotten far more complicated in recent years, and that a full stack engineer won’t cut it anymore. Given the complications of development, an expert is required at each layer in the process.
The flaw in Yared’s piece, however, is that he takes for granted a common misconception surrounding the full stack developer – that you don’t need a team if you hire a full stack developer.
This statement isn’t entirely false, but it only applies to young startups that are on a tight budget and building a minimum viable product. For that specific scenario, a full stack developer is a great choice. But once the product grows and becomes more complicated, a full stack developer will need support from a team of developers with expertise in specific areas.
In all fairness, Yared does address this in the closing paragraphs and phrases it succinctly:
it is critical to have at least one person with at least a functional understanding of each of the composite parts who is also capable of connecting various tiers and working with each expert so that a feature can actually be delivered.
And here’s where we get to the meat of the full stack developer’s role in modern development.
The T-shaped Developer
When thinking of a full stack developer, it’s useful to consider Mike Loukides' description of a “T-shaped developer”.
The T-shape describes a general full stack engineer’s skills. These developers are typically highly skilled in one or two areas (the vertical line), but they then have a broad reach of knowledge and understanding of different areas of development (the horizontal). And it’s this broad knowledge that makes the full stack developer such an important part of the team.
Projects and Poor Communication
It’s no secret that many projects fail because of poor communication – whether it causes delays, budget increases, or a poorer final product.
Often, bad communication can be caused by a lack of understanding between different development teams. Say, back-end developers want to build a framework ideal for their databases, but the framework creates new difficulties for the designers.
These problems come up when specialists don’t understand what the other layers of the stack need to be functional and successful.
Full Stack Devs to the Rescue
Here’s where a full stack developer can be a key player in your development team. Full stack developers understand most of the processes going on in the app’s development and also have a thorough understanding of the business and audience the project is for.
As a result, full stack developers work better with a team because they know what tools the other team members are working with and what they need to accomplish. This ability to be a cross-functional team member makes full stack engineers great additions to agile development teams.
Not only do full stack developers work better with a team, but in many ways developers who understand the full stack are going to build better applications because the parts they build will function better within the context of the whole.
Another benefit of having a full stack developer on your team is that they’re a good fit for positions in project management. With a working knowledge of so many parts of development, full stack engineers can effectively manage a team of developers and make sure their components are progressing at a reasonable rate, and that they’ll function within the context of a whole.
So, should you hire a full stack developer? If you’re a young startup trying to build your product, or a larger business who needs a team member to create cohesion and communication channels among your developers and their code, then the answer is Yes.