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
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.
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 ...
The idea of XP is illustrated in the following diagram
Recommended by LinkedIn
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.
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!