Breaking Barriers: The Use of AI as a Secret Weapon in My Software Development Process

Yen Nguyen
Vibentec-IT
Published in
11 min readMay 30, 2023

Lately, there has been a considerable increase in the popularity and usage of AI in various fields. The idea of machines that can learn, reason, and aid humans has captivated people, causing anticipation and concern about how AI will affect us. Software development has recently become a notable area of focus for AI.

Many people believe that AI will take over jobs in software development, but in reality, the situation is quite different. AI is not replacing human programmers; instead, it is becoming a valuable tool that helps enhance their abilities. AI has proven to be useful in supporting developers, streamlining processes, and driving innovation.

Through this blog, I will share my encounter with implementing AI in software development, highlighting its practical advantages. As a developer, I have realized that AI is not a menace to my profession but rather a valuable and essential collaborator that has aided me in working more efficiently and maximizing productivity.

Assistance from AI-powered tools for issue management processes.

The software development industry is witnessing a revolutionary change in how to issue descriptions are formulated and acceptance criteria are suggested, thanks to AI-powered tools. These tools deploy advanced natural language processing algorithms and machine learning techniques to offer intelligent assistance, enhancing the precision and excellence of issue descriptions and simplifying the process of creating all-inclusive acceptance criteria.

I have found a practical use for AI in managing the software development process. Specifically, I utilize AI to aid in problem description and solution design. An AI-powered tool can analyze user inputs, contextual information, and historical data to automatically generate informative and precise issue descriptions by providing a brief summary of the issue. This allows me to articulate the problem details and explore potential solutions accurately.

In addition, contemporary AI tools can effectively articulate concepts of a particular subject matter. This guarantees that fellow programmers within the team can readily comprehend the matter at hand.

Example: Write a Jira task description for implementing the API for user story “As a user, I want to be able to filter products by price range.” (in implementing steps and without documentation and communication with customer)

ChatGPT-generated issue description:

Jira Task Description: Implement the API functionality to enable users to filter products by price range in the application. This task is part of the user story “As a user, I want to be able to filter products by price range.” The following steps should be followed to complete this Jira task:

1. Create a new API endpoint to handle the price range filtering request.

2. Modify the existing database query or create a new query to fetch products based on the specified price range.

3. Apply the price range filter to retrieve the relevant product data from the database.

4. Return the filtered products as a response from the API endpoint.

5. Handle potential error cases, such as invalid inputs or no products matching the specified price range, by providing appropriate error messages or default behavior.

6. Write unit tests to validate the functionality of the new API endpoint and ensure the correct filtering of products based on price range.

Additionally, utilizing AI-powered tools can provide valuable insights and suggestions to ensure that user stories have comprehensive and complete acceptance criteria that cover all necessary scenarios. The result is a more efficient and effective process.

Through careful analysis of relevant documentation and contextual information, these tools are designed to identify patterns, common scenarios, and dependencies. This process enables the generation of comprehensive acceptance criteria for all necessary functionality and edge cases, which in turn ensures that all requirements are adequately addressed, and no acceptance criteria are overlooked. As a result, we cover a more comprehensive range of possible user behaviors.

Example:

User story: “As a user, I want to be able to filter products by price range.”

AI-suggested acceptance criteria:

1. The filter options should allow users to set a minimum and maximum price range.

2. When the user sets a valid price range, the product listing should update to display only the products within that range.

3. If no products fall within the specified range, a message should be shown indicating that no products match the criteria.

4. The filter should consider both the minimum and maximum price values as inclusive bounds

5. The filter should handle decimal values and support both whole numbers and fractional amounts.

6. If the user enters an invalid price range (e.g., minimum price greater than the maximum price), an appropriate error message should be displayed.

7. If no products fall within the specified price range, a message indicating no results should be shown.

8. The filter should update dynamically as the user modifies the price range inputs without requiring a page refresh.

9. The product listing should maintain any other applied filters (e.g., category or brand filters) when the price range filter is used.

10. The filter should handle a wide range of prices, including very low and very high values.

11. The filtering functionality should be responsive and provide a smooth user experience, even when dealing with a large number of products.

These examples showcase how AI can aid in crafting issue descriptions and proposing acceptance criteria. Utilizing NLP and machine learning, AI tools empower developers to effectively communicate issues and guarantee that all essential functionalities are included in the acceptance criteria.

Streamlining the issue-resolution process and promoting collaboration among team members improves the overall quality of software development.

The AI has helped with the documentation process

AI-powered tools are revolutionizing the process of documenting problems and relevant issues that arise during software development. These tools offer intelligent assistance and streamline the documentation process for developers.

In problem documentation, AI-based tools can assist in automating documentation formatting and provide pre-defined templates. Developers can rely on these tools to automatically structure and style their documentation, ensuring consistency and saving time on manual formatting tasks. Additionally, customizable templates can help developers follow best practices and guidelines specific to the project or organization.

Documentation template generated by ChatGPT

Providing administrative document templates has been instrumental in enforcing discipline and fostering a positive company culture. It also serves as a helpful guide for novice programmers to create documentation and take notes efficiently.

AI-powered tools go beyond just offering document templates. They can also analyze code snippets, contextual information, and error messages to provide automatic and concise descriptions of problems.

Let's say a developer comes across a bug or error. They can use an AI tool to input the code snippet or error message. The tool will extract relevant information from the code, identify the potential issue, and provide a detailed description of the problem. This includes the error message, related code lines, and suggestions for possible resolutions.

By reducing the occurrence of recording errors, this solution not only saves time for programmers but also eliminates boredom. Moreover, it enables developers to document issues with precision, which serves as a reliable basis for future investigation or collaboration with peers.

Visualizing your concept

Developers can use illustration AI to create clear, concise diagrams, flowcharts, and architectural representations. This technology employs advanced algorithms and machine learning techniques to simplify the process of producing visual representations that facilitate comprehension of complex concepts and ideas.

Example illustration from the prompt “In a typical frontend React application communicating with a backend Node.js server to implement a requirement”

The AI-powered tool enables efficient creation and modification of visual elements, saving valuable time and effort. It automates creating diagrams, reducing the need for manual drawing or graphic design skills.

Developers can benefit from focusing on the core aspects of software development instead of spending too much time creating visuals. Visuals can enhance documentation and make it more engaging, leading to better understanding and retention for developers and stakeholders.

Voice Transcription and AI-generated Meeting Summaries

Voice-to-text AI technology provides valuable assistance in meeting documentation within the software development process. For instance, I can effortlessly transcribe and document meaningful conversations, decisions, and action items discussed during software development meetings with the help of Otter AI (Otter.ai — Voice Meeting Notes & Real-time Transcription ).

Instead of manually taking notes or relying on memory, participants can focus on the discussion while the AI system automatically converts spoken words into written form.

The use of voice-to-text AI significantly improves efficiency and accuracy in meeting documentation. It eliminates the need for extensive manual transcription, saving time and reducing the risk of errors during manual note-taking. This allows developers to dedicate their attention to the meeting content and actively participate in discussions, knowing that important information will be accurately captured.

Furthermore, AI-based tools can analyze meeting recordings, transcriptions, or notes to generate concise summaries of key points discussed. These tools can identify essential topics, extract action items, and highlight decisions made during the meeting. By automating the summarization process, AI tools save developers valuable time and ensure that the meeting’s main takeaways are captured accurately.

Example: Meeting topic: “Sprint Planning for Project XYZ” AI-generated meeting summary:

Key Discussion: The team reviewed the backlog and prioritized user stories for the upcoming sprint. There was a focus on completing critical features related to the login and registration functionality.

Decisions Made: The team decided to allocate additional resources to address performance issues and agreed to conduct daily stand-up meetings to track progress effectively.

Action Items: John will create the user interface mockups for the new dashboard, and Sarah will investigate the third-party API integration requirements.

This saves time for developers and enables them to focus on critical aspects while providing comprehensive documentation.

Code analyzing and automated code review

Contrary to fears that AI may overshadow human creativity and problem-solving, it acts as a catalyst for innovation. By leveraging AI-powered testing and bug detection tools, I have identified potential issues in my codebase, enhancing my software's overall quality and reliability.

AI can facilitate automated code review. This involves comparing the code with established coding standards and guidelines. Consequently, actionable suggestions and recommendations can be provided to address any issues and ensure compliance with industry best practices.

As a less experienced developer, I find the support of AI very helpful in my software development process. AI can analyze the written code and identify common mistakes or coding patterns that may lead to errors or inefficiencies.

It can offer explanations and suggestions to help me understand the issues and provide alternative solutions. By pointing out potential problems and offering recommendations, AI helps less experienced developers learn from their mistakes and improve their coding abilities.

Source: https://www.infoworld.com/article/3533351/deepcode-brings-ai-powered-code-review-to-c-and-c-plus-plus.html

Additionally, AI-powered code analysis tools often integrate with popular integrated development environments (IDEs) and version control systems. This integration enables developers to access code review suggestions and best practices directly within their development environment. They can receive prompts and recommendations while writing code, ensuring they follow industry standards and guidelines.

Source: https://github.com/codeclimate-demo/example-foobar

As a result, AI-powered code analysis tools can significantly reduce the time and effort required for manual code review, enabling developers to focus on more complex tasks.

By providing timely feedback and highlighting potential problems early in the development process, AI assists developers in improving the overall code quality, enhancing maintainability, and reducing the likelihood of introducing bugs and security vulnerabilities.

Automated AI-generated Code templates

From automating repetitive tasks to providing intelligent suggestions, AI has significantly eased the burden of mundane and time-consuming activities in software development. Through AI-powered tools like GitHub Copilot and Codota, I have witnessed how intelligent systems can swiftly produce code templates, snippets, or even entire functions tailored to specific requirements.

Firstly, AI-generated code templates save developers valuable time and effort. Instead of starting from scratch or searching for code snippets, I can rely on pre-built templates that provide a solid foundation for my code.

By learning from vast code repositories and best practices, AI understands the conventions and patterns commonly used in software development. The generated templates align with these coding standards, ensuring that the resulting code maintains high quality and consistency.

Moreover, AI-generated code templates empower developers to focus on the advanced business logic of their projects. By automating repetitive coding tasks, developers can allocate more mental capacity to understanding and solving complex business problems.

Therefore, they can delve deeper into their applications' core functionality and unique requirements, allowing for more innovation and creativity. Concentrating on higher-level aspects of development enhances the overall quality and effectiveness of the software being built.

Ideating and supporting creativity

The integration of AI in software development can boost creativity and innovation by introducing new ideas and expanding the limits of what is achievable.

Primarily, AI can assist in idea generation and brainstorming sessions. AI can identify patterns, trends, and potential gaps in the software landscape by analyzing vast amounts of data, including existing code repositories, research papers, and user feedback.

As a result, it can suggest novel ideas, innovative approaches, or even alternative solutions to problems. AI can act as a creative collaborator, helping developers explore new directions and possibilities for their projects.

Source: https://info.orchidea.dev/innovation-blog/ai-in-brainstorming

In software development, AI-powered tools can enhance the design and user experience. One example is the ability of AI to analyze user behavior, feedback, and preferences to provide valuable insights on user interface design, interactions, and usability. AI can suggest improvements to optimize workflows, personalize interfaces based on individual user profiles, and enhance overall user experiences. Such creative input from AI can result in more intuitive and engaging software applications.

Essential role of humans in software development

All things considered, the role of humans in software development is still paramount and irreplaceable. While AI technologies bring valuable support and assistance to the process, the human element drives true innovation and pushes the boundaries of what is possible.

It is crucial to recognize that while AI excels in automating repetitive tasks and augmenting efficiency, it does not possess the intrinsic qualities of human intelligence, such as human creativity. It is the factor that conceives novel ideas, explores uncharted territories, and finds elegant solutions to complex problems.

Those who develop software have a comprehensive grasp of user needs, business demands, and the overall environment in which the software functions. With their expertise and innovative mindset, they can conceive and produce software that not only meets but exceeds expectations.

It’s important to note that while AI can provide support and suggestions, it does not replace human expertise. The collaboration between human developers and AI is crucial for successful software development. Developers can leverage AI’s capabilities as a tool and source of inspiration, combining it with their domain knowledge and creative insights to push the boundaries of what can be achieved.

Conclusion

I aim to eliminate doubts or concerns about AI in software development by sharing my experience. I aim to inspire other developers to welcome this transformative technology and explore its potential. Let us work together to debunk the myths and reap the practical benefits of AI as a valuable companion on our software development adventures.

--

--