AI in Development (Part 1 of 2)

This post has been republished via RSS; it originally appeared at: Microsoft Tech Community - Latest Blogs - .

DevOps has made waves over the past couple of years in the Software Development Life Cycle (SDLC). It has been a driving force behind internal cultural shift and has allowed for businesses to completely change the way they deliver to customers.

 

In 2023 we saw a rapid rise of AI (in many different aspects) and yet again, as people and organisations are beginning to work out how to best use it, it is becoming a driving force behind more change and how products and services are delivered to customers.

 

In this article I will break down how AI is infiltrating the Development side of DevOps. We’ll look at the first 4 stages of the DevOps Lifecycle and break this down into different ways teams can incorporate AI.

 

Plan

In the planning stage of the DevOps lifecycle, you can use AI to assist with several activities. As a project manager or a team leader this is a daunting part of the process as this will outline most of the work needed for the upcoming sprint.

 

  1. Data-driven decision making: You can use AI tooling to analyse large amounts of data in a short amount of time to provide insights and recommendations for project planning. It can help identify trends, patterns, and potential risks, in turn enabling your team to make more informed decisions for the project and tasks in hand.
  2. Demand forecasting: Based on historical data and market trends, you can use AI for predictive analytics to predict future demands. You can then use this information to plan resource allocation, capacity, and scalability requirements more accurately for the team as a whole.
  3. Automated project management: Using automated tools to help with project management is always a win-win situation as you are getting a lot of help with tedious and time-consuming tasks such as scheduling, resource allocation, and task assignment. This can streamline the planning process and optimise resource utilisation.

 

Code

In the coding stage of the DevOps lifecycle, this is arguably where most developers will feel the impact of AI driven technologies. Some of these include:

 

  1. Code generation / Optimisation: With the help of Generative AI and tools such as ChatGPT and GitHub Copilot, code generation is getting better and more precise to help you write code and learn new languages. This does raise questions of how and where the information is coming from but again, since it is AI generated, due diligence is always needed and as a developer you should be checking the logic and suitability.
  2. Code review and quality assurance: Reviewing code is a difficult task and sometimes important aspects can be overlooked, leading to bigger and more impactful problems. Using AI tooling can help you work through Pull Requests and better understand the written code if the style is different to yours. This is a good approach to take as it is not impeding on the actual development but rather helping your understanding and potentially raising awareness to parts you might miss.
  3. Automated testing: We have all probably seen from the use of GitHub Copilot that you can use it to auto-generate test cases for your written code. This is a great way to develop safe, secure, and well-constructed code for general applications. This however might not work as well for Test-Driven Development (TDD) given you need to write the test case first, but I am sure this could be worked around with well written and formed Generative AI prompts. Furthermore, this is a good opportunity to analyse test results and consolidate them using AI tooling to create consumable output.

 

Build

In the build stage of the DevOps lifecycle, it is imperative to keep a hands-on approach and not give AI tooling full (or majority) control. The “Build” stage is imperative to ensure your application is running correctly and is compatible with your target systems.

 

  1. Automated build processes: By using AI to automate various aspects of the build process, such as compiling code, managing dependencies, and packaging applications you can significantly reduce manual effort, but manual intervention will still be needed to ensure consistency and correctness of the output. Only a well-defined process should be automated or enhanced with AI tooling.
  2. Continuous integration (CI): Using AI in Continuous Integration can help to identify code changes, detect conflicts, analyse config drift, and much more. This helps in maintaining code integrity and streamlining the integration process for the whole team but should be used with great caution.
  3. Build optimisation: This is a great stage to use AI tooling to test the build performance of your application. This can be a long and hard process to complete with any issues meaning you may need to revisit the Code stage and rework logic. This is typically where you will identify bottlenecks or slow performant code and using AI tooling, you can save developer time and can then give suggestions for potential fixes or optimisations going forward.

 

Test

By this point, your development is pretty much complete and only testing to go. When testing your application, there is more than just Unit tests, it needs to integrate and perform well will with other components too. Since we have covered this lightly in the “Code” stage, we will look at this from a different angle on testing and how AI tooling can impact the team experience here.

 

  1. Test strategy generation: Once you have the context of your application, you can now apply this to automatically generate a comprehensive test strategy before it is released into the market. This is an arduous task and covers the “what”, “why” and “how” of testing the application. It will also outline the scope, flexibility, purpose and much more. Using Generative AI to create a foundation will speed up any testing that needs to take place before the application is released. This will also be beneficial to prevent boilerplate templates being used for each release and allow for more dynamic testing to take place.
  2. Test data generation: We have all used “Lorem Ipsum” at one point or another, but you can us Generative AI to generate realistic / diverse test data to ensure comprehensive test coverage and identify potential issues or vulnerabilities within the tests, be it unit, integration, or system tests.

 

To fully immerse yourself in the different AI tools available to help at these different stages of development, I would suggest visiting the Microsoft AI website.

 

In a nutshell, AI methodologies and tooling can offer a whole host of benefits throughout the Development part of the DevOps Lifecycle. This shouldn’t be taking away the fact that teams should have a hands-on approach, but rather be assisting with it. This is very evident with any role that AI plays in development, it is imperative that there is an oversight of the actual content being produced to prevent anything sinister or misleading from happening.

 

In a bid to make this consumable, Part 2 will cover “AI in Operations” and will be linked to the bottom of this article once published.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

This site uses Akismet to reduce spam. Learn how your comment data is processed.