Photo by Gertrūda Valasevičiūtė on Unsplash

A.I Driven Software Development Workflow

Alex Ilovan
salt&pepper
Published in
5 min readApr 27, 2023

--

Every software project has a workflow. A step of high-level steps that repeat themselves in order to create a software project.

These steps are standardized and the steps of the standard development workflow or life cycle.

The steps are:

  1. Planning/ Requirement gathering

In the planning and the requirement gathering steps, you create the project instance on your task management system, timelines, milestones, team members, ownership, communication channels and general project setup.

Using the project management software, you assign tasks and track progress for the entire workflow.

Also, in this step, the version control system (such as GIT) and the version control strategy are set up to manage and track the source code.

2. Design

In the design step, you use the requirements gathered and you design the software solution. This includes UI/UX design and high-level design that outlines the architecture, components and functionality of the software.

3. Implementation

Once the design is complete, the development team begins writing the code for the software. This involves programming, development testing, and debugging the code to ensure that it meets the requirements and functions as intended.

4. Testing/Deployment

Once the code is complete, it is tested to ensure that it meets the quality standards and specifications set forth in the requirements. Testing may include unit testing, integration testing, system testing, and user acceptance testing.

After testing is complete, the software is deployed to the production environment. This involves installing the software on the production server, configuring it for the production environment, and ensuring that it is ready for use.

5. Maintenance

After deployment, the software is monitored and maintained to ensure that it continues to function properly. This may include bug fixes, security updates, and feature enhancements.

https://media.giphy.com/media/k74OUg6bPJKy2JmyoS/giphy.gif

“But where does A.I. factor in? I was promised A.I. in the title of this article.”

Unfortunately, a standardized methodology for using A.I. in a software development process does not exist. Or at least, not at the time this article was written.

We are now in an experimentation phase with OpenAI’s ChatGPT, Github’s Copilot and others. We are fumbling around, trying things, scaring ourselves needlessly with the “End is near for software engineers”, “A.I. will take our jobs” and “ChatGPT will replace programmers”. I’m kinda tired of this clickbait-ish form of content.

In short: No. It will not replace programmers.

Instead, if used properly, these tools will give us superpowers and our productivity will skyrocket.

A.I. has the potential to affect every step of the classic software development lifecycle or SDLC on every flavour of methodology that is based on it albeit Kanban, Waterfall, Agile or others.

Now, here is my take on how the SDLC can be improved using A.I. in the mix.

Personally, I see these A.I. tools as superpowered feedback loops for every step of the way in the workflow. Some sort of an optional sub-step in the SDLC workflow.

So, I would see it something like this:

  1. Planning and requirements gathering

Use A.I. to generate ideas and provide feedback on the project requirements.

2. Design

Use A.I. to generate ideas and provide feedback on the software design.

3. Implementation

Use A.I. for guidance and suggestions on code snippets and for troubleshooting issues.

4. Testing/ Deployment

Use A.I. to create automated tests for your methods. (Ex: Unit tests generator) and to provide recommendations for deployment strategies and configurations.

5. Maintenance

Use A.I. to troubleshoot issues and provide guidance on bug fixes and feature enhancements.

Photo by Brett Jordan on Unsplash

Use it like a super-enhanced rubber duck to tell it issues and then resolve those issues.

In a visual form, upgrading the standard software development lifecycle from:

Software Development Lifecycle/Workflow

Will become:

Using A.I. to enhance every step of the Software Development Lifecycle/Workflow

Again, if applied properly, this flavour of SDLC has the potential to increase the velocity of development for a team quite considerably. Or at least in theory. Experimentation in larger teams still needs to be done in order to confirm it. Personally, I’ve only tried it out on a small scale. The results are promising.

Now, let’s talk about the drawbacks.

From my point of view, the biggest risk is the certainty of knowledge. The AI models can be biased on the data that they were trained on. This can lead to errors and inaccuracies in their suggestions and recommendations. This can be quite problematic in experience design for example. They may not account for diverse user perspectives.

Another drawback is the limited capabilities and overreliance of/on A.I. Models like ChatGPT can be highly effective with simple things but they may not be able to fully understand the nuances of a specific programming language or development environment. If developers rely too heavily on AI suggestions and recommendations, they may become less proficient in certain areas of software development.

For example, if they always rely on AI to troubleshoot issues, they may not develop strong problem-solving skills themselves which in turn lowers the quality of expertise in the long run.

Some other drawbacks include but are not exclusively:

  • Security risks

If an AI model is used to test the security of a system, it may not identify all potential vulnerabilities and could itself become a target for attackers. This can compromise the security of the software being developed and deployed.

  • Cost

Developing and integrating AI into a software development workflow can be expensive and time-consuming. Not all businesses may have the necessary resources to invest in AI, which could limit their ability to compete with larger organisations that do have the resources.

  • Ethical considerations

As AI models become more sophisticated and are integrated into software development workflows, there are ethical considerations that need to be addressed.

For example, there may be concerns about the privacy of user data or the potential for AI to be used in ways that harm society or marginalized groups.

It’s important to note that these potential drawbacks don’t necessarily mean that integrating AI into a standard software development workflow is a bad idea. Instead, we need to be careful.

We need to plan and use these tools wisely in order to maximize their potential benefits while minimizing their potential drawbacks.

Let me know if you tried integrating some of these A.I. tools in your day-to-day work and how it went 🎶

--

--

Alex Ilovan
salt&pepper

🚀Head of Mobile Development @S&P 💻Comp. Engineer 🪐Engineering Manager. You can visit at: https://www.linkedin.com/in/alex-ilovan-129161b4/