Navigating the New Landscape of Software Development Teams
Written on
The Evolution of Software Development Teams
In recent times, it has become apparent that the composition of development teams is shifting—there are now fewer developers and an increasing number of other roles involved.
Just last week, the final episode of The Lord of the Rings: Rings of Power aired, rekindling my thoughts on the concept of alloys. Alloys are crafted by merging various elements, typically including at least one metal, to create a new material with enhanced properties. Take steel, for instance, which is a combination of iron and carbon that significantly boosts the strength and fracture resistance of iron.
Similarly, we have composite materials, which, while not technically alloys, represent the fusion of different elements to yield a stronger product. A prime example is reinforced concrete, which combines concrete—excellent under compression but weak under tension—with steel bars that excel in tension but falter under compression. The result is a material that can effectively handle both forces.
If we can achieve greater strength by combining metals and materials, why not apply the same principle to human resources to enhance their strengths?
A thought-provoking dialogue from The Lord of the Rings: Rings of Power caught my attention: “Have you tried combining it with other ores? To better stretch it out? … Couldn’t the right alloy also amplify those qualities?” This raises an important question.
The Developer Shortage
It is well-known that the demand for developers far exceeds supply, yet the issue is more complex than it seems. Joel Spolsky, in his article "Whaddaya Mean, You Can’t Find Programmers?", highlights that the software industry operates differently from typical job markets. He likens it to Starbucks, where having three open positions means they can’t meet demand, but hiring more leads to unnecessary costs. In contrast, software companies often adopt a policy of hiring any skilled technical personnel they can find, indicating a substantial gap between supply and demand.
Robert C. Martin claims that “the number of programmers doubles every five years.” In his presentations, he frequently asks attendees to raise their hands if they have less than five years of experience, often finding that half of the audience fits this description. While I haven’t found studies to back Martin’s assertion, I have personally witnessed this trend.
When I began my Computer Science degree, a competing program—Telecommunications—was considered a viable alternative for the same job market. Despite covering only four programming-related courses, graduates were often seen as equally qualified as those with a CS background. This led to frustrations, especially when those less prepared were promoted over us.
However, I observed a shift over the years. By the time I graduated, companies began accepting not only Telecommunications graduates but also those with degrees in Industrial and Civil Engineering. This broadened the pool of available programmers significantly, and eventually, it extended to virtually any engineering discipline and even to non-engineering degrees, including law. Nowadays, the rise of coding Bootcamps further complicates this landscape.
The Alloy of Team Roles
Currently, the trend seems to be evolving even further. Recently, I encountered a new team that consisted of:
- A Product Manager
- A Product Owner
- A User Experience Expert
- A Quality Assurance Specialist
- A Scrum Master
- A Senior Developer
- Two Junior Developers
Out of a total of eight team members, only three were developers, with two of them possessing less than a year of experience. This translates to roughly 33% of the team being composed of developers.
This development raises a compelling question: could the right combination of roles amplify the strengths of developers? It appears that it can. For instance, the Product Manager can dedicate more time to understanding product needs, allowing developers to concentrate on coding. Meanwhile, the Product Owner, who ideally has some technical knowledge, acts as a bridge between the product and the developers, helping to clarify ambiguities before they reach the coding phase. The Scrum Master fosters a supportive environment for developers and enhances their interpersonal skills, while the QA role allows developers to focus on critical functionalities without getting bogged down by edge cases.
Challenges of Role Integration
While it may seem that these roles enhance the capabilities of developers, there are inherent challenges. For instance, the Product Manager and Owner may inadvertently isolate developers from direct customer feedback, leading to gaps filled with assumptions rather than concrete insights. Additionally, the focus on complex issues may overshadow simpler solutions that could be more effective.
Quality Assurance reviews the developers' output to elevate product quality. However, this can lead to a "cobra effect," where developers might neglect quality control, relying on QA to catch issues, thereby accelerating delivery. Additionally, bugs are often addressed through quick fixes that compromise long-term quality.
Amplifying Developer Strengths
“Couldn’t the right alloy also amplify those qualities?” This question remains unanswered. We must delve deeper into the analysis of how different roles affect developer performance, weighing their benefits against potential drawbacks. What remains clear is that the demand for developers continues to outpace supply, and we must seek innovative solutions to bridge this gap.
The first video titled How to Build the Best Software Engineering Team for Growth with Andreas Creten | SAS ep 52 discusses strategies for assembling an effective software development team.
The second video, Webinar: An Introduction to Alloy Embedded, provides insights into the Alloy Embedded framework and its applications in software development.