AI Augmented Software Development with Agents (Assistants)
IBM watsonx for code generation
A recolored leadspace using the Watson for Customer Care leadspace as its basis.
Overview

One of the most exciting advancements in LLMs is the concept of Agents, also known as Assistants. These are specialized versions of Large Language Models (LLMs) that are pre-prompted and fine-tuned to support specific roles. Here, we are exploring how such agents can be used to support roles in software development.

An AI Agent is essentially a virtual assistant empowered with AI capabilities. These agents are designed to understand and process natural language, enabling them to interact with humans in a natural and intuitive manner. What sets these AI Agents apart is their specialization. Unlike general-purpose AI models, AI Agents are trained on specific tasks relevant to a particular role.

For instance, a Product Owner AI Agent would be trained to assist with tasks such as market analysis, feature prioritization, and business case creation. A Developer AI Agent, on the other hand, would be equipped to automate code generation, optimize existing code, and assist with bug identification.

This specialization comes from pre-prompting and fine-tuning the LLMs on data relevant to the role they are designed to support. This could involve training the AI Agent on a dataset of code for a Developer AI Agent or on a dataset of market research and product features for a Product Owner AI Agent.

AI Agents are revolutionizing the way software development teams operate. By providing role-specific assistance, they can increase productivity, reduce the likelihood of errors, and allow team members to focus on more complex and creative tasks. As these AI Agents continue to evolve, they promise a future where every member of a software development team has a personalized AI assistant, making the development process more efficient and effective.

Very powerful role-specific agents can be produced by combining Retrieval Augmented Generation and Internet / Code / Corpus Search techniques with Fine Tuning and dynamic prompting.

Humans

Incorporating AI assistants into the software development process can be transformative. By augmenting each role on the team with an AI assistant, we can enhance efficiency, reduce the likelihood of errors, and free up human talent to focus on more complex and creative tasks.

However, it's essential to remember that these AI assistants are tools designed to support, not replace, software engineers, and there are limitations on GenAI technology.

At the moment, Large Language Models struggle complex troubleshooting, debugging, integration into an existing codebase, and lack the industry or domain specific / company specific information, or up to date training data to generate perfect code. They also lack agency - and need to be prompted to generate any kind of output.

AI Augmented Product Owners

Product Owners have an integral role in a software development team, driving the vision and roadmap for the product. An AI assistant can support them by providing data-driven insights to aid decision-making. For example, the AI could analyze customer usage data to identify features that are popular or lacking in the market.

This could help the Product Owner in prioritizing features in the product backlog. The AI could also assist in creating business cases, performing market analysis, and forecasting trends.

An AI Assistant for a Product Owner can provide multifaceted support, enhancing the role in several ways:

A Product Owner AI Assistant could aid in creating robust business cases. It can help gather and analyze relevant data, identify key value propositions, and draft the business case document. The AI could provide templates for structuring the business case, ensuring it covers essential aspects such as market analysis, cost-benefit analysis, risk assessment, and strategic alignment

AI Assistants can support Product Owners in the ideation process. By analyzing market trends, customer feedback, and competitor analysis, the AI can propose new feature ideas or product improvements. It can also facilitate brainstorming sessions by providing prompts and stimulating creative thinking.

AI Assistants can help manage the product backlog efficiently. The AI can prioritize features based on factors such as business value, customer demand, and development effort. It could also automate the creation of user stories and acceptance criteria, saving the Product Owner valuable time.

AI Assistants can assist in communicating with stakeholders. They can help prepare status updates, draft emails, and create presentation slides. They can also analyze stakeholder feedback and provide insights to the Product Owner.

AI Assistants can perform comprehensive market analysis. They can gather data on market trends, competitor products, and customer needs. The AI can then analyze this data to provide insights and recommendations to the Product Owner.

AI Assistants can support risk management by identifying potential risks and proposing mitigation strategies. They can monitor project progress and flag any deviations from the plan, allowing the Product Owner to take timely corrective actions.

Example of how such a Product Owner assistant could be pre-prompted to produce a business case

You are AI-Pam - an AI Assisted Product Manager that focuses on the X Industry. You will take any customer requirements as input, and provide an executive summary, estimate the business value and identify any potential dependencies and risks.

You will include requirements specific to X industry, and to Y company..

Example input: .. Example output: ..

AI Augmented Scrum Masters

Scrum Masters ensure the smooth running of the Agile process. An AI assistant could support Scrum Masters in organizing and managing sprints. It could automate the creation of user stories, help in sprint planning by predicting potential roadblocks, and track team velocity. The AI could also analyze team performance data to provide insights on how to improve efficiency and collaboration within the team.

Integration with Kanban Boards and tools can often make their jobs easier.

 

AI Augmented Developers

Developers are at the heart of the software development process. An AI assistant could aid developers in various ways. It could automate code generation, optimize existing code, and enforce coding standards.

The AI could also assist in code review by identifying bugs or security vulnerabilities. Furthermore, it could support developers in choosing the right APIs and libraries for their applications.

LLMs also excel at writing documentation, or helping document code. For example, authoring well crafted variable names and docstring in Python.

Refactoring code to generate docstring documentation

Refactor the code below to include Python best practices, docstring documention and type hinting, including all recent best practices

def add(a, b):
    return a + b


Results:

def add_numbers(num1: int, num2: int) -> int:
    """
    This function adds two numbers and returns the result.
    
    Args:
        num1 (int): The first number to add.
        num2 (int): The second number to add.
        
    Returns:
        int: The sum of num1 and num2.
    """
    return num1 + num2

 

AI Augmented Testers

Testers ensure the quality of the software product. An AI assistant could automate the generation of test cases based on the product requirements.

It could also assist in performing regression testing, load testing, and performance testing. With AI's ability to learn from data, the assistant could predict potential areas of failure in the software, enabling proactive bug fixing.

 

AI Augmented Site Reliability Engineers (SREs)

SREs are responsible for the reliability and stability of software systems. An AI assistant could help SREs in managing and automating deployment processes.

It could also assist in monitoring system performance and predicting potential system failures. For SREs working with infrastructure as code (IaC) tools like Ansible, the AI could automate the creation of playbooks and optimize existing scripts.

 

AI Augmented Engineers

Engineers, whether they are backend, frontend, or full-stack, can benefit from an AI assistant. For frontend engineers, the AI could assist in creating responsive designs, optimizing user interfaces, and ensuring accessibility standards.

For backend engineers, the AI could help in optimizing database queries, managing server resources, and ensuring security compliance. For full-stack engineers, the AI could provide end-to-end support, from optimizing code to managing deployments.

Next steps

Talk to our experts about implementing a hybrid cloud deployment pattern.

More ways to explore Hybrid Cloud Architecture Center Diagram tools and templates IBM Well-Architected Framework
Contributors

Al Hamid, Mihai Criveti

Updated: December 5, 2023