The rapid pace of AI advancement has left many developers feeling fatigued, but it's clear that AI is here to stay in software development. Microsoft Research's Victor Dibia aptly describes the "particular kind of fatigue that comes from trying to match the unprecedented pace of AI advancement." However, developers can no longer afford to sit on the sidelines; AI's impact on software development is undeniable, and its effective use is now a necessity.
Applied AI engineer Sankalp Shubham provides valuable insights into the evolution of AI-driven coding assistants, likening them to a car. He explains that features like autocomplete offer maximum control but move slowly, while more ambitious tools trade granular control for speed and automation. This analogy highlights the importance of understanding when to relinquish control to AI and when to take the reins.
However, the irony lies in the fact that more experienced developers tend to play it safe, using AI in "first gear" to maintain control, while less experienced developers give AI more control, often resulting in errors and bugs. This is a critical point, as AI is not a replacement for human intelligence in software development. As Santiago Valdarrama puts it, the "whack-a-model AI workflow" can lead to a never-ending cycle of bug creation and fixing, ultimately resulting in more problems than solutions.
Honeycomb CTO Charity Majors echoes this sentiment, stating that AI has done nothing to aid in the work of managing, understanding, or operating code. In fact, it has only made the hard jobs harder. Stanford researcher Yegor Denisov-Blanch's team has found that AI increases both the amount of code delivered and the amount of code that needs reworking, which means that actual "useful delivered code" doesn't always increase with AI.
So, how can developers ensure they get more done with coding assistants, not less? The key lies in self-awareness and understanding when to give control to AI and when to take it back. Shubham's car analogy serves as a reminder that "the lower the gear in a car, the more control you have over the engine, but you go with less speed." By recognizing when to shift gears, developers can harness the power of AI without sacrificing control.
More senior engineers seem to understand this, using AI tools cautiously to get more done while maintaining control. However, junior engineers and non-engineers often trust AI tools too much, which can lead to errors and bugs. This can be attributed to years of marketing by low-code/no-code platforms that promise to turn everyone into a developer without requiring software knowledge – a false hope.
The solution lies in recognizing that AI coding assistants are not a replacement for learning to code. Developers who know software best will get the most out of AI assistants, as they'll know when to give control to the coding assistant and how to constrain that assistance. Less-experienced engineers run the risk of moving fast but then getting stuck or not recognizing the bugs that the AI has created.
In conclusion, AI can be a valuable tool in software development, but its helpfulness correlates strongly with the relative expertise of the developer using it. By understanding its limitations and using AI effectively, developers can harness its power to improve their workflow. However, it's essential to remember that AI is not a replacement for good programming – it's a tool that can assist, but not replace, human expertise.