A Perspective: Effects of AI on Current Developers
Significantly, AI plays a vital role for current developers, including me. The question here is: Is it good for us? Yeah, it depends on how we are using it. I can assure you that AI will be helpful only if it is used in the right way. More specifically, I need to talk about AI-generated code, which has become both a boon and a challenge to the tech industry. I want to share my perspective on it. Let’s dive deeper…
Transition from developer to debugger:
One notable consequence of the widespread use of AI-generated code is few developers copying and pasting these snippets into their projects. Initially, it seems to be time-saving; actually, it is not from my perspective. (Your comments are appreciated.) The AI-generated code may not always align perfectly with your requirements (it may cause some errors, or the algorithm it generates may be slow). In this scenario, as developers make a transition in their roles, they find themselves taking on the responsibilities of a debugger to solve the intricacies caused by the AI-generated code.
Indeed, debugging code often proves to be a more challenging task than its initial creation. Contrary to popular belief, debugging is not a straightforward endeavor. When it comes to debugging AI-generated code, it necessitates a profound comprehension not only of the project’s specifications but also of the technical stacks employed in the development process.
Hence, there may be a chance that this transition will extend the overall time taken to complete the project compared to building it from scratch.
An Example: Comparison of AI-Generated Code vs. Human Written Code
I have taken a medium-level LeetCode problem and asked the popular AI model ChatGPT-3.5 to solve it, and it gave me a solution. Fortunately, the solution works well for all test cases. But the problem with the code is efficiency. The runtime of the AI-generated code is 1 ms (which beats only 9.11% of users with Java).
Attempting to enhance the runtime speed by debugging and modifying the logic generated by AI proved to be a time-intensive task. Consequently, I took matters into my own hands and crafted an algorithm to outperform the existing solution, presenting a more efficient alternative. Also, I arrived at a better solution with a runtime of 0 ms (which beats 100.00% of users with Java).
Note: I have used a small example to explain the point, but it’s actually a lot tougher in real-world projects to go with AI-generated code, especially after undergoing extensive debugging to address any complexities that may arise in the generated code.
Then, what’s the right way to use AI?
- Use AI-powered IDE plugins or tools that provide intelligent code suggestions and autocompletions based on context.
- Integrate AI into automated testing processes to identify test scenarios, generate test cases, and predict potential areas of failure.
- Use AI to assist in writing and updating documentation, ensuring it is clear, concise, and follows best practices.
- Use AI to understand and learn a new programming language, framework, or tool relevant to your project. (Even for this, I prefer to go with the owner’s official documentation.)
- Request feedback from AI on your code to identify potential improvements and best practices.
etc…
Bottomline:
In summary, integrating AI into development processes may offer developers opportunities to boost productivity and code quality. However, it’s crucial to use AI responsibly, understanding its role as a supportive tool rather than a replacement for core skills. The synergy between human expertise and AI capabilities holds the key to innovation and efficiency in software development.
“Nurturing AI as a collaborative ally, not as a replacement”