Transforming Product Engineering Teams with Generative AI Tools
Written on
The Influence of AI on Product Engineering Teams — Part 3
This article is the third installment in a six-part series examining the influence of generative AI productivity tools on the configuration of product engineering teams. Tools such as GitHub Copilot, ChatGPT, and Amazon CodeWhisperer are at the forefront of this transformation.
In Part 2, we discussed how AI tools like ChatGPT are revolutionizing coding practices within product engineering teams. From crafting user stories to actual code generation, these tools are streamlining tasks that developers traditionally found tedious, such as writing tests and documentation. We also highlighted the importance of testing and the potential for prompt-engineered applications initiated through careful test design. The vision of the future suggests that generative AI tools will fundamentally alter roles within product engineering teams, with significant implications for both engineers and management.
How Will Generative AI Tools Change Team Structures?
My focus over the past few months has been the transformative effect of generative AI tools on product engineering teams, particularly how they will alter the balance between product and technical roles. In the first part of this series, I noted the prevalent ratio of five engineers to one product manager in many teams.
Now, with a bold perspective, I propose that:
"Current product engineering teams require five engineers for every product manager. Future teams may only need one senior engineer for each product manager."
This assertion is worth examining further.
While previous articles have delved into the individual impacts of these developer tools, I aim to provide a broader strategic overview — specifically, how enhanced developer productivity could reshape team dynamics and even entire organizations.
For the sake of speculation, let's assume that generative AI tools, such as GitHub Copilot, can boost a developer's productivity by approximately 50%. Given that a five-to-one ratio of product managers to engineers is a reasonable current standard, these assumptions suggest a necessary change in this long-standing ratio.
I believe we can expect continued advancements in AI tools like Copilot, especially with the influx of venture capital directed towards generative AI startups rather than the Metaverse or Web 3.0. New tools are emerging daily on platforms like ProductHunt, including Bifrost and Locofy, which transform Figma designs into functional React code similar to Amazon's Amplify Studio. It will be interesting to observe their adoption rates.
It's unlikely that developers on larger teams will lead the charge in adopting these automation tools due to historical concerns about code quality and corporate risk aversion. More likely, early adopters will be startup founders and innovation-driven product managers who are drawn to the cost-effectiveness and speed of auto-generated websites and applications.
I can imagine engineers reading this, thinking, "My application is too unique for these basic automated solutions to replace my job." However, as Kelsey Hightower, a key contributor to Kubernetes, aptly stated, "Stick to boring architecture for as long as possible, and devote your time and resources to building something your customers will pay for."
For those who believe their projects are exceptional, Derek Neighbours' follow-up tweet succinctly pointed out that the audience for that "boring architecture" remark applies to nearly everyone. The reality is that the number of companies needing truly unique architecture is minimal. It's almost comical to see a startup with a dozen customers trying to replicate scaling strategies from giants like Netflix or Google.
Returning to my hypothesis: if most engineers become more productive, most architectures should remain straightforward, and generative AI tools will improve significantly from their 2023 capabilities. If these assumptions hold true, the role of engineers will shift from routine tasks to more significant responsibilities like architecture, solution design, performance, security, and managing complex internal ecosystems.
We may begin to transition from test-driven development to test-driven solution design, where engineers articulate application functionalities in ways that generative AI tools can utilize to generate both tests and working applications. The tests created during the design phase will not only confirm that the application meets organizational and customer needs but also serve as self-documenting elements.
AI Tools: Beyond Basic Tasks
While we've discussed the impact of generative AI tools on product and feature development, it's essential to recognize that many engineers spend a considerable portion of their time on maintenance and operational tasks. Refactoring, bug fixes, minor version upgrades, and other routine activities can consume significant developer hours. The tools we've discussed are equally effective in handling these mundane tasks.
In a previous project, my team faced an outdated database that needed upgrading. Our modern microservices architecture lacked personnel with experience in legacy SQL, leading to a minor crisis as we scrambled to find someone with the necessary expertise. Such situations are not uncommon and can disrupt meticulously crafted roadmaps.
Teams frequently encounter challenges when rewriting legacy code or upgrading frameworks, often having to sift through poorly documented or obsolete code. However, code assistant tools are language-agnostic. Large Language Models (LLMs) have been trained on extensive documentation and code examples, making the task of rewriting even undocumented code relatively straightforward. These tools can also generate tests for both new and old code.
To verify this capability, I tested GPT-4 with some random old Perl code I found online. After asking it to explain the code, I inquired about potential replacement languages, and it suggested Python, producing the corresponding code almost instantaneously. With one more prompt, we had tests to validate the new implementation.
Furthermore, I decided to challenge the AI by requesting a port to Rust, a language that has gained popularity in recent years. Unsurprisingly, it handled the request without issue.
If generative AI can automate time-consuming tasks like documentation and testing, as well as streamline routine engineering activities, we are likely to witness a shift in the traditional five-to-one ratio.
The Unique Dynamics of Web and Mobile App Teams
In organizations developing both web and mobile applications, an interesting dysfunction often arises. Despite offering similar functionalities and customer value, teams responsible for the different platforms frequently operate in silos. This division is less problematic for companies utilizing responsive design, but it becomes more pronounced with hybrid mobile apps, which are built using frameworks like React Native.
In the case of native mobile apps developed specifically for Android and iOS, the challenges multiply. Companies aiming to deliver a consistent experience for both Android and iPhone users require engineers skilled in Java or Kotlin for Android and Swift or Objective-C for iOS. This need leads to duplicated efforts and increased costs.
Generative AI coding assistants could leverage their versatility to create well-designed, well-tested applications across multiple languages. This capability may eliminate the need for separate mobile and web teams, allowing for consolidation where the functionalities of both platforms align closely. In some cases, this consolidation could yield significant cost savings, potentially halving engineering budgets.
What Does This Mean for Junior and Mid-Level Developers?
In conversations leading to this article, I've consistently been asked about the implications of these coding tools for junior developers. Experienced engineering managers and tech leaders often express deep concern for nurturing junior talent. While proficient engineers can craft effective applications, exceptional engineers take the time to mentor others.
I share this concern, particularly in the short term. As discussed in Part 4, one possible outcome is that companies will opt to reduce budgets and team sizes. While contractors and outsourced teams may be the first to go, mid-level and junior developers may follow suit.
I worry that these changes could lead to a generational gap in tech talent, where junior developers struggle to find opportunities. The technical skills needed to build applications in early-adopting organizations will likely be held by senior engineers, who have experience in solution and architecture design, security, and addressing complex edge cases. Conversely, junior and mid-level engineers will lack this expertise, as their roles do not provide the necessary exposure.
If generative AI tools handle the fundamental tasks, then the skills required will lean heavily towards those possessed by senior developers and solution architects.
That said, the outlook for junior developers isn't entirely negative. My recent experience using Copilot while learning React and Django was transformative compared to my earlier experiences in coding. Having real-time discussions about code and troubleshooting errors enriched my learning journey. I wish I had access to ChatGPT when I was starting out.
While coding skills are important, they are not the only qualities we need in our teams. The best engineers can adapt to various programming languages because they possess critical thinking skills. I firmly believe that the ability to think creatively and with a systems-oriented mindset will continue to define the contributions engineers make to their teams.
While I express my concerns for junior developers, I remain optimistic. I envision a future where skilled engineers collaborate closely with adept designers and product managers to build outstanding products. Even if team sizes shrink, we may transition towards a model reminiscent of traditional artisanal practices, where juniors are mentored by seasoned experts for extended periods.
The German term "Wanderjahre" refers to a historical practice where young craftsmen traveled to different workshops after their apprenticeships, gaining diverse experiences and skills. This ancient approach to mastering a craft may become increasingly relevant for the next generation of product teams.
In Part 4, we will explore:
- The significant transformation generative AI could bring to organizations facing economic challenges and reduced venture capital.
- A thought experiment considering three scenarios: potential growth, budget cuts, and maintaining current budgets with generative AI productivity tools.
- Possible consequences and challenges, including altered team compositions and implications for roles like product managers and engineers.
- A reflection on the genuine impact of these tools on productivity and team dynamics, setting the stage for ongoing industry discussions.
Stay tuned for Part 4!
For more insights on team dynamics, check out my Teamcraft podcast, where my co-host Andrew Maclaren and I engage with guests about what makes teams thrive.