The Rise of AI Tools in Product Engineering: A New Era
Written on
Chapter 1: The Emergence of AI in Product Engineering
Generative AI tools are revolutionizing how product engineering teams operate. In this second part of our six-part series, we delve into the impact of tools like GitHub Copilot, ChatGPT, and Amazon CodeWhisperer on the structure and functionality of these teams.
In the first installment, we examined:
- The evolving landscape of product engineering and the potential reduction in the number of human engineers due to generative AI tools.
- The traditional engineer-to-product manager ratio of 5:1 prevalent in the tech industry.
- How the roles of product managers and engineers may change as AI technology progresses.
- Flawed predictions from past research regarding which professions would be least affected by AI, particularly within tech and creative fields.
- The rapid growth of AI coding tools.
Automation's Longstanding Role in Software Engineering
Automation has been integral to software engineering for decades. Eric Raymond's seminal 2003 essay, "The Art of Unix Programming," highlighted 17 key design principles for software engineers, including the "Rule of Generation": “Avoid hand-hacking; write programs to write programs when you can.” His insights remain pertinent even two decades later.
Raymond posited that human efforts often introduce delays and errors, advocating for more abstracted program specifications. Since his time, we've seen the rise of automated testing tools, linters, and frameworks like React and Django that ease the development process. While developers have generally embraced automation, many believed their unique skills would keep them irreplaceable.
Recent advancements in code automation have yielded tools that function alongside developers, potentially outperforming human capabilities. GitHub Copilot, for instance, markets itself as a "pair programmer," having been made available to developers in June 2022. Its successor, Copilot X, was introduced earlier this year, boasting claims that it can enhance developer productivity by up to 55%.
Similarly, Amazon CodeWhisperer, also launched last year, claims a 57% boost in productivity. Like Copilot, it integrates within the developer's IDE, offering corrections, comments, explanations, and code generation.
Unlocking Contextual Understanding in Development Environments
IDEs have long offered code autocompletion, but Copilot X can generate extensive code sections with minimal context. John Berryman, a senior researcher at GitHub, notes that the AI models use more than just the file being edited. They draw from the broader context available within the IDE, including other files on the developer's machine and documentation.
This expanded context enables developers to easily engage with the AI, decreasing the skill barrier for creating effective prompts. Copilot X allows users to highlight code and request explanations, thus broadening its utility.
While Copilot and CodeWhisperer are specialized, even the general-purpose ChatGPT has proven valuable for engineers. Personally, I've utilized both GPT-3.5 and GPT-4 models extensively and have been impressed by their capabilities. For instance, I recently revisited my Python skills using OpenAI APIs and sought ChatGPT’s assistance to guide me through setup and troubleshooting.
OpenAI has also released a GPT-4 model with Code Interpreter, enabling it to write and execute Python code directly in the chat environment, enhancing its functionality beyond mere code suggestions.
The Competitive Landscape of AI Development Tools
While GitHub, Amazon, and OpenAI dominate the scene, other players like Google have introduced Duet AI for Google Cloud, a code assistant akin to Copilot and CodeWhisperer. Microsoft is also investing heavily in AI solutions across Windows and Office, while Salesforce has branded its products with 'GPT' to stay relevant.
The investment in AI tools is widespread, suggesting a promising shift towards enhanced productivity for developers.
How Will Product Engineering Teams Adapt?
My first significant experience using ChatGPT for coding involved generating user stories. Although I felt out of practice, I could articulate requirements that a developer could understand, thus enabling us to hire a freelancer for the actual coding.
I prompted ChatGPT to create behavior-driven design (BDD) stories, a widely accepted development approach bridging customer needs and engineering work. BDD stories help clarify whether the delivered application aligns with both the product manager's and customers' expectations.
After generating the user stories, I realized I could also request ChatGPT to write the corresponding code, resulting in a simple web application built using JavaScript, HTML, and CSS.
Once the application was functional, I understood the importance of creating tests based on the code and user stories. ChatGPT assisted in identifying a suitable test runner for JavaScript and generating test cases.
The simplicity with which these typically tedious tasks were accomplished was remarkable. For many developers, the allure of coding often overshadows the less appealing aspects like writing tests and documentation.
Reflecting on a conversation with Simon Wardley about test-driven development, I realized tests represent the intricate relationships within a product. Although writing tests might not be the most thrilling task, they serve a crucial role in demonstrating an application's expected behavior.
The collaborative work between product and engineering teams will be essential in defining the scope of a valuable test suite. The future of product engineering teams may well hinge on embracing generative AI tools, ensuring that roles in eliciting customer requirements, analyzing solutions, and prioritizing tasks remain vital.
Exploring the Future in Part 3
In the upcoming Part 3, we will explore:
- The potential disruption of the 5:1 engineer-to-product manager ratio by generative AI tools.
- How tools like GitHub Copilot and AWS Amplify Studio could shift engineers’ focus from coding to design and integration.
- The ways generative AI can assist teams in handling outdated technology.
- The unifying impact of AI tools on mobile and web app development, bridging gaps across various development skills.
- The implications of coding automation for junior developers and career progression.
Stay tuned for Part 3!
P.S. If you find these insights on teamwork engaging, check out my Teamcraft podcast, where my co-host Andrew Maclaren and I discuss what makes teams thrive.
Video Description: Explore how software engineers can distinguish themselves in AI product teams.
Video Description: Learn strategies for standing out in AI product teams as a software engineer.