But I’m here to posit the opposite argument, one that I feel is better at describing how software developers think about the frontend/backend divide and how decision-makers aren’t always fully aware of what they’re asking from their engineers and creatives.
Full-Stack Development is a Unicorn
It would be dishonest for me to say that full-stack development is impossible, I have very close friends who are fantastic full-stack developers. I mean, even I’ve done full-stack in the past. So, why am I comparing full-stack development to a magical beast?
In many ways, we have created this image of a full-stack developer as a sort of Superman. A living swiss-army knife with extensive knowledge and skills in all areas of software engineering. Just take a look at the list of responsibilities from a random job posting:
- Developing front-end website architecture.
- Designing user interactions and user experience.
- Developing back-end website applications.
- Creating servers and databases.
- Ensuring cross-platform optimization for mobile phones.
- Ensuring responsiveness of applications.
- Designing and developing APIs.
- Working alongside graphic designers for web design features.
- Seeing a project through from conception to finished product.
- Understanding both technical and consumer needs.
- Staying abreast of developments in web applications and programming languages.
At this point, whoever wrote that job posting could just summarize it as “Doing everything related to web app development” and be done with it. Full-stack developers as imagined by recruiters have so many skills that they put Leonardo DaVinci to shame.
At their best, full-stack developers are a jack of all trades master of none, with a few areas of expertise and a wildly variable level of competence in other areas. For example, a developer might have a very good grasp of Python and Django for backend solutions while at the same time knowing just enough Vue.js to get by.
One might think that such a developer is a backend specialist, but this developer could know very little about SQL and let Django (a Python-based framework) deal with most of the weightlifting for database solutions.
Or it could be the other way around, with a lot of knowledge about CSS and frontend frameworks like Angular, while knowing just enough to use a Node.js framework as a backend solution.
The point I want to get across is very simple, the full-stack developer as we imagine it is a platonic ideal at best. Something we all aspire to become, but which requires so much knowledge and experience that by the time someone cultivated it, it would be already obsolete.
The Speed of Technology
Today, the breadth of options at our disposal for web development is frankly staggering, and more solutions are created by the minute. Most of them have made the life of web developers a lot more bearable, as long as you put in the hours and learn how these tools work.
A friend of mine put it brilliantly when he said that full-stack developers didn’t die, they got overrun by an industry that’s growing faster than what we as human beings can adapt to. The broader the field the harder it is to become the swiss army knife of the programming world. There is just too much to learn and too little time.
And even if we theoretically had the time, there are only so many hours in a day, and there is a limit to what we as humans can accomplish in those 24 hours. Projects are becoming more complex, with more moving pieces, bigger ambitions, and clients that want faster deliveries to remain competitive.
The one-person-army might sound like a wonderful dream, but nowadays, even the smallest projects can gain a lot by having a team of specialists working together. It’s well known that diversity fosters creativity, and a team, working in unison, will tend to outperform lone rangers in the long run.
The Full-Stack Developer Isn’t Dead…
With all that said, web developers, need to be flexible, and to be quite honest, even in a team of experts everyone should have a fairly good understanding of both frontend and backend technology.
Even if a server engineer never writes a single line of frontend code in their life, knowing how frontend works will make communication easier with their colleagues, helping them understand what problems others are facing and how they can help them.
It’s one thing to work with a group of specialists as a team and quite another to silo and isolate yourself from the rest of the group. A general grasp of all levels of web development will help everyone have a better mental image of the end product and will help everyone be on the same page.
Some projects will require a specialist for each area, while others can accommodate a person who can fill two or three roles at once. Perhaps the most common examples are apps that require basic database functionalities, which anyone with backend experience could handle. It depends on the nature of the project.
So, no, I don’t want to promote siloed developers. I want people to learn, to grow, to delve into new areas all the time. This is a wake-up call, it’s about dispelling the idea that one person can do everything on their own. It’s about HR creating sensible job postings, and developers learning to be okay with knowing less than everything.
Maybe there are true full-stack web developers out there, people who are savants with a massive amount of aptitude skill, and knowledge. But even they can have a hard time adjusting to a world where projects are growing and deadlines are getting shorter. Maybe it’s time to stop thinking about the full-stack developer and start thinking about the full-stack team.