The Role of ML Tools in Software Development
There are already several more or less established machine learning-based tools available that aid with software development tasks. GitHub Copilot, JetBrains AI Assistant, and ChatGPT are just a few examples.
These tools can be of great help when writing code, especially when it involves common functionalities such as querying a database, data processing, or implementing web APIs or other interfaces. This 'commodity code' is where ML based tools already work great and generate pretty reliably working solutions.
Personally, I've found these tools very valuable in my own work. For instance, I've used the aforementioned tools to create Go code for Lua bindings, write code for a database interface, and carry out a host of other, less engaging tasks that are nonetheless crucial for implementing complex software systems. The quality of the code generated has generally been reliable and robust.
It's worth noting that machine learning tools may not work that well for complex, obscure, or difficult-to-solve problems. You can read my blog post Discussing Shellcode with ChatGPT for some anecdotal evidence supporting this viewpoint.
When using these tools, an important caveat to consider is the potential risk to data security. These tools often require data submission to a third party. Caution must be exercised to prevent the exposure of sensitive code that carries significant intellectual property value. It's crucial to differentiate this high-value code from the more commonplace commodity code that can be submitted without compromising IP. The vetting of tool providers for data privacy and security is of course also very important.
Recommended by LinkedIn
Returning to commodity code, one might find it underwhelming that machine learning tools excel in generating 'boring' code. However, consider this: a significant portion of code written implements relatively simple tasks, this is the bread and butter of many software development tasks.
The potential impact that these tools could have on software development is huge. They offer a way to efficiently handle common tasks, enabling developers to focus on tackling the complex hard-to-solve problems.
In light of this, it's obvious that companies engaging in software development should seriously consider a strategy on how to utilize these machine learning-based tools effectively and securely.
I had a similar experience when I tried to let GPT-3/4 to generate compute-optimized SQL code to make it compatible with a few different SQL dialects. As soon as you walk away from the well-trodden paths that are discussed at length on stack overflow et al or move around on more of the fringe topics, the results from GPT get less and less reliable and sometimes just absurd.