ML Augmented Development (1 of 3)
In the last few months, the world has come to know ChatGPT as a source for ML generated writing. Along the way it generated controversy about the quality of the answers and is it cheating to use ChatGPT for papers.
If you look a few months earlier, in the summer of 2022, AWS Announced CodeWhisperer and GitHub revealed Copilot. Both are ML powered tools for speeding up software development. While more focused than ChatGPT, three tools coming out in one year clearly demonstrates a significant change in the way software will be written in the future. But what is the best way to use the tools to improve productivity, how accurate are they, and what does the future hold? These are some of the questions I’ll be looking at in this series of blogs.
The impact of machine learning on programming
Along with programming languages, the development environment evolved as well. We went from text editors like Vim to Full IDEs like Visual Studio and VSCode. They added features like class lookups, suggested autocomplete, syntax highlighting.
Today we are at another major shift in how people will program in the future. With ML Aided programming, it’s another tool in the IDE that can help developers write better code faster.
For example, instead of looking up a package on npmjs.com programmers can type a prompt and get suggested code and how to use it from an ML assistant.
I’m sure there will be those that it’s better to code it all by hand. But the most productive programmers already don’t type it all by hand. They leverage auto complete and other features that their IDE have to speed up the process instead of typing the same variable name over and over.
How accurate are these AIs in their programming?
In later blogs, I’ll go into some details about ChatGPT, AWS CodeWhisperer, and GitHub Copilot. Few of my tests ran perfectly without changes the first time. (Programmers jobs are still safe). But how often does a human developer run perfectly the first time?
We are not to the point where someone can type a few sentences and get a perfect program out.
How can a software engineer use machine machine algorithms?
I’ll go into specifics of each product later. In general, these fall into a few different categories:
- Prompt vs Intuitive
- Section vs Holistic
Prompt vs Intuitive
Intuitive ML tools run in the background and suggest code as you write. This is very similar to auto complete in Gmail or texting tools. If you like what pops up, hit Tab, if not keep typing.
Prompts take a, well, prompt. The engineer provides a statement describing what they want and the ML Tool will suggest anything from a line of code to a block to an entire function. This brings up a new skill that engineers will need to learn, like they have learned how to google for specific problems and questions.
Section vs Holistic
Section ML tools provide code in small bits as you go about programming. This can be in tiny sections, like finishing the line, up to the rest of a function if it thinks it has a good idea on how to complete the task.
Holistic ML Tools provide large segments, generally in functions or multi functions that are intended to be lifted into a program with little editing.
Whether we like it or not, ML Programming tools are here. And once a useful tool is developed, it doesn’t go away. We should learn to use these tools because they will change the way we work and even think about the future.
Ready for more? Read Part 2: ML Augmented development with ChatGPT
Add new comment