Going back a decade or two, developers were typically considered as fungible. There was a misconception that you could take any developer and replace them with any other; the same as you could with a pound coin. Obviously, it was nonsense, but more than a few people have ended up in the wrong team because of this.
You’d imagine that kind of thinking would be long gone. But I still hear it from time to time, sadly.
What is a Dev?
What is a dev? I’m going to massively simplify things here and describe a dev as someone with a “particular set of skills” in a defined range of tools and languages. That’s generally how hiring is initiated. A list of the skills required is converted into a job advertisement, and candidates with those skills apply for that job.
Developers are not fungible
So if it were that simple we could simply hire the first person that matched your job advertisement right? And yet no one does that. That’s because we implicitly know that it’s not all about the skills. It’s about their attitude; it’s about their personality; it’s about their history. People are much, much more than the set of skills that they possess.
Full-Stack is a rough term used to describe someone who is equally comfortable doing both the front end and server-side development. In truth, very few people are equally comfortable with both, and they tend to be stronger in one area or the other. However, if they can pitch in with both activities, it provides much greater flexibility in terms of planning.
“Full-Stack” is the new fungible. Again, there is the misconception that anyone full-stack can do any full-stack job and that they will do both jobs as well as a specialist. Obviously, this is also nonsense, because there are many stacks, they are complex and they differ enormously.
It’s a massive leap for a full-stack C# and PHP Developer to jump into a full-stack role using HTML and Java. And it’s even harder for a developer to move from a standard monolithic stack to a cloud-based stack. Full-Stack does is not always equal to full-stack.
That’s not to say a full-stack developer in one stack couldn’t do the role of another – good people are good people. If this is a long term hire and there is no urgency, this could be fine. But if you are hiring for a project that requires urgent delivery, you need to hire someone with the same skills that the project is using. Even in teams that use identical stacks, there will be differences in the ways of working. But this gives you the best chance of finding someone who can hit the ground running.
Why hire full-stack?
Full-Stack is popular because in terms of planning it creates the most flexible teams. It means anyone can pick up any task that needs doing.
However, it does come at a cost. In some cases there can be an order of magnitude difference in the time it takes a full-stack developer to complete a piece of work over a specialist in that area. There may also be complex design or coding issues that require a specialist to design or unblock and they can be beyond the skills of someone full-stack.
Hiring full-stack requires a long term investment in people. They need to develop both the technical skills required to build the software and the knowledge of how that software works. This is difficult enough when only dealing with one discipline. Learning it front and back will take longer.
I’ve done a combination of roles; full-stack developer; a specialist in a larger team of specialists; in teams which had both. None was particularly better than the other.
It really depends on how fast you need to go, how the split of the work looks and what your long term aims are for the team.