In software engineering, the integration of Artificial Intelligence has been nothing short of revolutionary. AI's impact on developer efficiency, code quality, and the overall software development lifecycle is profound. AI tools, particularly ChatGPT, have transformed Nimble Gravity's software engineering processes. AI-powered tools have enhanced productivity in not just coding, but also problem solving, onboarding and idea generation. We've found using ChatGPT and/or GitHub Co-pilot saves us 40% to 60% of our time on all aspects of a software development project from the very beginning to deployment and ongoing maintenance.
From the beginning of the project, we've tailored ChatGPT to our individual preferences. We've set up different profiles with custom instructions. Developers can receive concise, context-specific answers, enhancing the interaction quality. In some cases, more junior developers configure ChatGPT to provide more broad answers to help them learn about possible solutions.
Design/Prototyping
AI tools have been invaluable in prototyping and enhancing initial concepts. In a simple JIRA analysis script, we used ChatGPT to generate code for pulling data from the JIRA APIs including history. The initial prompt needed to be enhanced several times before we could use it for the actual analysis. The first pass didn't include the changelog for the history. Then we needed to split the data into smaller files to be able to upload and analyze it. After a few iterations and just a half hour, we were able to begin the analysis. Which, of course, ChatGPT assisted with. This quick prototype saved probably 75% of the time needed to look up the exact syntax of each JIRA API call, pull out the needed data and write the data to multiple files. Individually, these are relatively straightforward tasks. ChatGPT saved time on the basics.
Implementation
Once the initial concept proves out, we then strengthen it by adding code that automates repetitive tasks for best practices, setting up standard REST APIs, and unit testing. The coding and unit tests include a wider variety of negative scenarios that can be quite often missed. Negative scenarios were added for possible problems such as thread-safe mechanisms for writing to files, testing larger datasets, handling network issues, and implementing rate limiting. Because the repetitive tasks were handled by AI, this allowed our teams to focus on the business problems and provide more value to our customers.
We've used ChatGPT for 'Rubber Duck Programming'. For instance, when debating how to merge two columns, ChatGPT provided pros and cons for different approaches.
Testing
We've used ChatGPT as a co-pilot in testing and troubleshooting. We've worked with ChatGPT to engage in interactive problem-solving, asking us questions which helps us narrow down problems more easily. In one example, we were having issues with two endpoints, we described the problem to ChatGPT and requested it to ask us more questions. Initially, it started with 4 different possible issues, but after it asked us questions, we were able to narrow it down to one possible root cause and it was correct. It helped us narrow down the focus of the response, making the answers more relevant.
Deployment
For Infrastructure as Code, ChatGPT is almost cheating. We can describe the environment we need, which cloud provider we're using, and ask us other details and context around the problem we're trying to solve. Using our responses and description, it can generate scripts for an entire environment in minutes.
Ongoing Maintenance
We've used ChatGPT to document code as it is being written. This saves development time by autogenerating the documentation allowing developers to focus on business value. If the documentation on legacy code is lacking, ChatGPT is instrumental in helping developers quickly understand and contribute to projects by explaining the reasoning behind different code sections. We've taken snippets of open-source code, asked ChatGPT to review and explain the code to us. This saves valuable time diagnosing problems and getting more junior developers up to speed quickly.
Throughout our growth in using AI for making our software development process more efficient, we've found the key to leveraging AI effectively is creative and specific prompting. Adding context and detailed descriptions in prompts results in more relevant and accurate responses.
Conclusion
The integration of AI in software engineering has been transformative. When using AI on your own projects, tools like ChatGPT not only enhance code quality and developer efficiency but also open new avenues for innovative software development. Think outside the standard "using GitHub Co-Pilot to generate code" box. AI can be used in all aspects of software development.
If you need assistance integrating AI into your development processes, please reach out to us! We'd love to help your kick your software development processes into overdrive!