Developer productivity has been a big topic in the software engineering world. Generative AI is one emerging technology that can take this to the next level and completely disrupt how we build software.
Evolution of productivity improvement
Engineering teams have always sought ways to improve productivity through efficient, agile processes, organizing teams as PODs, measuring productivity KPIs, etc. The next level of productivity improvement came through more automation from DevOps practices, leveraging tools for test automation, Infrastructure as Code, and use of Low code/No code platforms where applicable. In short, we have used all available methods thus far to deliver high-quality products efficiently.
Generative AI has taken productivity improvement to the next level. Code generation tools such as GitHub Copilot and AWS CodeWhisperer translate the natural language to code. They can be useful to automate repetitive tasks traditionally done by developers. It can help improve the productivity and quality of the product, as outlined in the next section. But remember, like agile has not worked for all scenarios and automation doesn’t work in every situation, Generative AI will not write code for everything.
Generative AI in the software engineering lifecycle
Generative AI-based code generation tools will change the actual engineering process, estimation techniques, the way we write code, testing of software, code deployment, tools used, etc.
It can enable productivity improvement for various roles involved in the software engineering process.
It can help Architects
- Helping them make the right choices
- Validate their decisions, provide pros/cons for alternate approaches
- Document architecture flows, and data models
It can help Product Owners and Business Analysts
- Efficient market research
- Feature prioritization
- Product Managers need to redefine and accelerate the product roadmap to accommodate the increased pace of development.
- They will have to come up with requirements faster and ensure there is enough backlog for the team.
It can help UI/UX designers
- Efficient user research to inform design decisions
- Improve design ideas
- Develop front-end screens from a hand-drawn sketch.
- Rapidly create functional prototypes
- Designers will need to interact more closely with development teams to ensure that the screens are being translated into code correctly.
It can help developers
- Write code snippets for common problems, write unit tests, document code, debug code, etc.
- Onboarding developers to new codebases, reducing context switching for experienced coders, to education and exploration.
- Analyze existing code and identify areas that need improvement, such as performance optimization, security vulnerabilities, and code readability.
- Development teams will need to ensure that the code generated by the AI is secure, maintainable, well-structured, and easy to understand.
- Need to develop new processes and tools to manage the code generated by the AI, including version control and code review processes.
It can help QA Testers
- Use generative AI tools for test case generation, management/reporting, and Test data generation.
- Test execution by AI-base test automation tools
- Testing teams will need to use automated testing tools to keep up with the pace of code generation. Today, test automation is optional. In the future, it will become mandatory.
- Testing teams must evolve their testing strategies to ensure the quality and security of the code generated by the AI. They will need to develop new test cases and methodologies to validate the code generated by the AI and ensure that it meets the required standards.
The impact of generative AI tools on productivity varies across roles and the product development lifecycle – but we see a high impact during development and testing and a low impact when the product is in maintenance mode.
For the last few years, we have said, “Software is eating the world, but AI is eating software.” Today, Generative AI has given a whole new meaning to this line!
Continuous productivity improvement
Recent studies have touted productivity improvements from 25% to 50%. While these numbers can vary based on the domain, complexity, size, team maturity, etc., we know that Ai based code assistant tools will bring productivity improvement is never seen before.
These tools can learn from past projects to continuously improve the quality of the generated code. As these tools improve over time, and we also know how to use them effectively; we can expect continuous productivity improvement in our engineering teams in the coming years.
On the one hand, Generative AI-based tools can bring significant productivity improvements resulting in a fear that there will be less demand for software engineers and other roles across the development lifecycle. But on the other hand, it could mean that we can develop software much faster and accelerate product roadmaps. Engineering teams will be able to focus on more complex tasks and the quality of the software. In addition, productivity gains will allow them to focus on tech debt that keeps getting pushed out.
With the help of Generative AI, we will write new software to solve a new class of problems previously considered very complex and expensive. There will also be a big demand to build new software (or rewrite existing software) that uses Generative AI at the core to offer everyone unique experiences and productivity tools. E.g., Reimagining enterprise knowledge management tools can transform them into ChatGPT-type interfaces, enabling access to all enterprise content such as finance, HR, legal, contracts, marketing, etc. This innovation will save significant time for all employees.
Generative AI-based coding tools have the potential to significantly reduce the time and effort required to create complex software. However, it is still in the early stages of development, and there are still lots of unanswered questions:
- What are the use cases and roles that will have maximum productivity impact?
- How does this change how we train our teams, the skills we look for, and the rigor of the interview process of our teams during hiring?
- What new tasks does this introduce in the development process, and what skills are required to complete them?
- As a developer, am I required to understand and fix the bugs in the code generated by AI? Will it produce code with bugs when prompted with code that includes bugs?
- Does it have a 'misalignment' problem? E.g., if I have subtle mistakes in my code, will it "deliberately" suggest code that superficially appears good but is incorrect – to match my coding style?
- Will the code generated by AI be too complex and lack transparency, and will my development team have to understand its logic?
- How will this have an impact on the developer salaries?
- Is the code generated by the AI tool secure? Will it have common vulnerabilities which hackers can exploit?
- If my code is available to AI tools, then is it available to everyone? I don't have any secret sauce left.
- Do I lose my Intellectual Property (IP) rights on the product if AI generates the code?
- What is my legal liability as an organization for potentially using plagiarized code produced by AI?
We are all trying to determine the answers to these questions, but here is what we are doing.
We are looking at the impact of tools like GitHub Copilot, AWS Code Whisperer, etc., on our engineering productivity and see how it helps us write code (better and faster), help identify bugs, improve code quality, document code, clean up inefficient code and tech debt.
We are running an experiment (piloting) with a few project teams to measure the productivity impact on our engineering teams and develop our insights through this. We will calculate the productivity BEFORE (baseline) and AFTER the use of Copilot and use that to inform our strategy further.
Engineering will never be same again
The adoption of generative AI is a game-changer for software engineering. The benefits of this technology are clear, as it brings about productivity gains and introduces new ways of working that will change the face of software engineering forever, despite the need to address certain concerns and challenges. Engineering teams must embrace this change, adapt to new ways of working, and stay ahead of the curve in this rapidly evolving field.