AI-Assist Software Development

Agile development method has become essential for enterprises to build their products in a rapidly changing global market with intensifying competitions. Agile method is based on the following principles

  • Engage customers/users throughout the development process
  • Having a super-simple but complete end2end working system early and refining different components as the development goes
  • Embrace changes with flexible architecture to minimize friction
  • Apply well-known design patterns as much as possible
  • Minimalistic implementation, favor simplicity, don’t over-engineering

In this post, we'll looked into some popular agile development methodologies and see how AI can assist.

Scrum Methodology

Scrum methodology is a predominant agile method which encourages product development in small pieces at a time, with team deliver value incrementally in a collaborative manner with experimentation to obtain fast feedback from customers to learn and make improvements.

The Scrum process can be illustrated in the diagram below.

Article content
source:

In Scrum methodology, product development is broken down into smaller increments called Sprints. All product enhancement ideas go into product backlog maintained by the product owner. Product backlog items which regularly be prioritized and structured into time-bound Sprints (with duration up to 4 weeks). Development team will then take the Sprint backlog and implement the solution. Developers will have daily standup meetings to discuss any blocking issues and get them cleared ASAP. After each sprint, there will be retrospective meeting to look back for inefficiencies to improve. The overall development process will be coached by the Scrum master, who facilitated the development process and educate the teams about the Scrum practice. Throughput the development process, the Scrum team interact frequently with end users who receive the product. This provides high transparency to the development speed to the users and also collect user's feedback early and hence easier to adapt the product towards user's need.

For more details of the scrum methodology, refer to here.

eXtreme Programming

In additional to scrum, XP (eXtreme Programming) is another very popular agile development method. XP focus more on software development and advocates a number of software development practices, including ...

  1. Test Driven Development (TDD) requires developers to write unit tests before writing the implementation code. This forces developers to always look from an user's viewpoint. It cleanly demarcates interface from implementation. TDD also encourage minimalistic implementation (do minimum to just pass the tests)
  2. Pair Programming (PP) requires 2 developers paired up to deliver software together. One developer will be writing code while the other developer will watch on the side, providing feedback and comment along the development cycle. At first glance, pair programmer seems introducing a high resource overhead, in reality enterprises adopting PP usually reduce the software maintenance cost after code is becomes more high quality. PP is also very effective to bring up the skill level of junior engineers through working closely with experienced engineers.
  3. Refactoring encourages developers to actively seek opportunities to improve code (such as easy to understand, extract common functions ... etc.) without worrying about their modification will break the production system. This is based on TDD because developers no longer worry about changing code because bugs can be immediately caught by the unit tests. Also with PP, code ownership is diversified and developers are more comfortably make code changes. By the way, Refactoring addresses a common problem pattern when a very complicated code module being served a critical business and no one dare to modify and make enhancement, resulting in high ongoing maintenance cost.
  4. Continuous Integration (CI) requires the developers to integrate their latest code with the existing code base ASAP, this enforces any integration issues can be detected and fixed early. CI also facilitates experimentation of new ideas, collect customer feedback early to guide the product development.

The idea of XP is illustrated in the following diagram

Article content
source:

However, XP requires substantial changes of coding habits from traditional software development, it has received criticisms such as it relies too much on close collaboration between developers and not work well enough among geographically distributed teams.

AI-Assisted XP

With AI comes into the picture, human developers can pair with AI instead of human to perform his/her development tasks. In this case, AI can also play both the coder or reviewer role in the developer process.

When AI in playing as the coder's role, human developer can provide instructions through comments, and the AI will then generate the corresponding code. Effectively, human developer are coding in natural language and no need to remember the exact syntax of the programming language. In practice, the human developer still needs to be competent to read the generated code to validate its correctness and make modifications if necessary. Since human developers will eventually examine the generated code, the risk of AI hallucination is significantly reduced.

AI (in its coder role) can generate artifacts at different levels, from requirement spec, design specs, test case all the way to code implementation. Dependencies between these artifacts can then be tracked. Whenever there are changes in any artifacts, we can easily trace into what other artifacts need to be changed as well. Traceability also significantly improve the efficiency of debugging, since we now have a clear view of what may be impacted after a change.


Article content
AI-generated artifacts & code


To support XP's Test Driven Development (TDD), AI can generate unit tests based on the comments put on the implementation code.

By having AI to generate the code, the coding style will be more consistent and easier to understand, resulting in a more maintainable code base in long term.

Now, let's switch gear and use AI as a reviewer (human is the coder), AI can examine any code and explain its logic to human developers by inserting comments into the code. This help the human developer tremendously to understand code written by another developers. To support XP's refactoring, AI can propose how the code should be rewritten to reduce redundancies.

With AI become the companion of human developers, we can obtain the efficiencies of XP without paying the cost of changing to its unfamiliar collaboration style with peer developers. I foresee the arrival of generative-AI will transform the way software is built today, and AI-assisted software development process will be a killer app to demonstrate the power of Gen-AI.


Very interesting. The case of AI of reviewer might also avoid the problem of coders taking advice as personal criticism!

Like
Reply

To view or add a comment, sign in

More articles by Ricky Ho

  • AI-Assisted IDE with Code Agent

    As I predicted in a previous post, the Software Development Process Lifecycle is set to experience significant…

  • MultiAgent: A Key to Scaling Specialized Intelligence

    As the race to build generative AI (GenAI) applications accelerates, two distinct strategies have emerged in the…

    1 Comment
  • LLM use cases for enterprise

    Since the arrival of ChatGPT, the potential power of generative AI models has impressed the leaders minds of many…

    3 Comments
  • Emerging paradigm: LLM-in-the-loop

    Recently, the way data scientists apply AI to tackle business problems has shifted since LLM come to the center of the…

    3 Comments
  • Equip LLM with intellectual skills

    Since around 2017, GPT has already been using the sophisticated Transformer-based decoder architecture to train massive…

  • Is LLM an overhype ?

    Since the release of ChatGPT, LLM has been on wild fire and has penetrated almost every corner of our software…

  • Adversarial Attack on Machine Learning Model

    As we enter the AI era, our daily lives depends increasingly on the automated decisions made by machine learning…

  • Great online courses on AI, ML, DL

    Recently, I was compiling a list of material on AI/ML for my son who is going to college after summer. This was not as…

    2 Comments
  • Linear Programming vs Reinforcement Learning

    In today's highly competitive business environment, enterprises are increasingly move away from manual decisions to…

    3 Comments
  • Model training and serving

    Continue from last post on Enterprise data science workflow, we will cover how to build models and later use them in…

    1 Comment

Others also viewed

Explore content categories