Most companies want dedicated people who work and act as owners, who are responsible, accountable, and motivated.
The software business has some real challenges finding good talent. There are five job openings for every one software engineer available.
In the contest for talented software developers, companies try to find unicorns. If it’s going to be a contest, might as well go for the bestest of the best.
A unicorn is simply a superstar, “full stack” software engineer.
A full stack developer is an engineer who can handle all the DevOps work, databases, servers, systems engineering, and clients, knows the frontend, the backend, mobile stack, a Web stack, and native application stack.
Why don’t we also add the skill of being able to find the cure to the common cold?
You have to find them, and that’s going to be hard. Then you have to make sure that the skills they mentioned on their resume are actually things they can do, so you’ll have to administer lots of tests and in-depth interview.
Unicorns Are Hard to Recruit
You will need to steal them from someone, and chances are they are already a CTO, or VP of Engineering somewhere. Or even a CEO of a tech start-up.
Since unicorns are rare, those not in those high level positions are being well taken care of by companies who want to keep them. Be ready to pay the high salaries they will demand.
The result is that it takes 10-11 months to find one. They’ll continue to be hounded by headhunters. Even if they have a broken horn to boot.
A More Practical Approach
I have seen during the last 30 years how job openings in software companies demand a developer for a particular technology, say a C++ or Java.
This trend has changed with the emergence of Open Source, Big Data, and AI causing the introduction of the full-stack engineer. Jack of all trades, and often master of none.
Your product is comprised of much more than just frontend and backend work. There are other considerations such as architecture and infrastructure. It gets even more complex if you include anything like Machine Learning or other advanced algorithms.
Benefits of Splitting the Stack
Smart software and product leaders have done very well splitting out the stack and hiring a team that can be supported to become deep experts.
By focusing how you develop your product with frontend and backend developers, separately, you eliminate the restraints on technology choices.
For example, you could build the backend using Java, and the frontend using React. You also get the benefit of being able to build both stacks simultaneously. And you can do this work in parallel.
Splitting the stack allows for upgrades to parts of the code, rather than having to parse through all of it. Finally, from a cost perspective it is less expensive to just upgrade individual modules.
Eliminating the dependencies between each layer of the software, allows for faster product deployment and more control of your roadmap.
Speaking from Experience
At Nearsoft we’ve been modeling this approach with our clients for more than eleven years. It has earned us the number three spot with Great Place to Work™ in technology.
About the author
Tullio Siragusa helps Nearsoft clients translate strategy and innovation into effective execution, so engineering teams can stay on track across the software product life cycle.