The future of full stack engineering talent
The gold standard profile for software talent has long been the coveted full stack engineer: an expert able to develop solutions and solve problems in all parts of the solution. It’s the “full stack”, ranging from the user interface down to the database and operating system layer.
You usually become full stack by experience, typically starting as a backend or frontend engineer. And then, with an aptitude to learn and a keen interest in understanding how things hang together, the progression to full stack is natural.
There are plenty of benefits of full stack talent in a team. From the cost efficiency of not having to hire multiple specialists, to ensuring coherence of the solution and expert problem solving.
Teams get more resilient and operate more independently when individuals are capable of performing a wider variety of tasks. Exceptional full stack engineers with good soft skills have never been easy to find. And the more advanced and diverse skillsets become, the more challenging it is for the talent acquisition team to recognize them. With today’s advances in AI and ATS (Applicant Tracking Systems) you’d be excused for thinking it would be easier to find full stack talent now than a couple of years ago. Instead, it’s become a lot harder.
In this article, we discuss how the evolving technologies and ways of working impact the development of full stack engineering skills.
Software engineering has changed
The pace of technological change is ever-accelerating with constant new frameworks, libraries, and tools. But only five or so years ago, most mainstream solutions were built on one of a handful of recognizable tech stacks. The choice of tech stack was a career choice, mainly between JavaScript and . NET.
The main proprietary stacks came from a few vendors such as Microsoft, Oracle, SAP, and IBM. And the open-source community provided a handful of alternatives where tech stacks were defined and named after the technologies they integrated. Full stack profiles could easily be expressed and matched as LAMP (Linux, Apache, MySQL, PHP), MEAN (MongoDB, Express, Angular, Node), or MERN or PERN (as React and Postgres became more popular than Angular and MongoDB).
Apart from the framework the solutions were built with, they were running on virtual machines under Windows or Linux OS and hosted on cloud or on-premises. The choices of databases were largely between relations (SQL) and document stores.
Team composition
Five years ago, the most common team formation was a self-contained “agile project team”. A product owner representing business stakeholders managed scope items from a backlog. The team was responsible for developing the software, with releases being the handover point to IT operations.
The rule of thumb was daily or weekly releases, and the main job of DevOps was managing build pipelines.
Today’s software engineering
Now, from a handful of recognizable tech stacks, we’ve seen more programming languages become common choices with Python’s market share now surpassing Java and PHP.
Tech stacks
Microsoft and SAP have opened their platforms for JavaScript (and Python to come).
But what has really made the number of skills required for “full stack” multiply are the cloud-native platform options from Google, Amazon, and Microsoft as alternatives to containerization options (Docker or Kubernetes).
Graph and Vector stores are also becoming more common choices for data storage and organization.
Team composition
Today we see the preference for team composition is smaller. At the same it’s more common for the team to be tasked with both development and operations for a defined application or digital product.
This equates to software engineers needing a broader set of skills because their work typically includes more quality assurance, validating functional and non-functional requirements to a larger extent.
As infrastructure defaults to cloud hosting and software-defined, needed DevOps extends beyond build pipelines to also encompass release management, monitoring, and configuring of infrastructure with code.
Future talent
Because of all the above, demand for versatility in software engineering skills is only going to increase. And likely to the point of “full stack” soon being an obsolete concept altogether. While uncertainty is high, flexibility and speed are key success factors both from the technology and teams. The direction in which we hire and develop engineering talent is focused on learning and broadening the skillsets more than matching long lists of technologies upfront. Here are the key trends:
More power skills
A different set of skills is needed. Sometimes they are called “soft skills”, but that is a somewhat nebulous term. “Power skills” would be a better description of the skills needed to communicate, convince, and build rapport with users, peers, and stakeholders. And collaborating remotely within a team is the new normal.
As product management increasingly replaces project management as the form for organizing work, team members need to take more ownership of the flow of work end to end, including supporting, communicating, and empathizing with users.
More design skills
Modern solutions are increasingly experience-centered, with user interfaces becoming multimodal with voice and gesture interactions. Virtual and extended reality also make work experiences increasingly three-dimensional.
Broader analytics skills
With personalization and more functionality and tasks provided by AI, solutions become a lot less deterministic and, thus, more difficult to validate. Analytics skills for evaluating performance and experiences from actual usage are becoming more important.
Sharper infrastructure skills
Cloud infrastructure becomes increasingly tiered with edge computing between user devices and data centers. Many large-scale solutions will depend on hybrid infrastructures, not least because of data privacy and data protection requirements.
In summary
Today, with the proliferation of technologies and preference for small teams, it’s unrealistic to expect to find full stack engineers with skills perfectly matching your technology choices. Especially not if they are expected to work across disciplines. As tech stacks and tooling improve, we spend less time writing and reading code. And team performance and resilience depend on the capability of the collective.
Instead of looking at matching the full array of skills in every developer, a more effective approach is to manage the team’s collective skillset. And to look for team members that are willing to learn and share knowledge. AI-powered tools will not only provide support but also greatly accelerate the learning of the skills demanded of tomorrow’s software engineers.