I am not entirely sure what makes the AI debate so polarizing, although I suspect it has something to do with feeling threatened by a changing landscape. What I can say with certainty is that I find having a nuanced conversation about AI with people often difficult. It seems to me that people fall into two polar opposite camps — those who thing AI is completely great and that we should fire all the programmers and creatives; and those who think that AI is all bad and we should go backwards in time to a place before it existed.
Honestly, I think neither end of the spectrum is right. I should admit here that my own stance is significantly more nuanced that it was six months ago, but having now used various code assistant LLMs for a few months there are clearly useful contributions it makes to my work day. I think the elevator pitch would be something like “AI is a useful tool if treated like very smart autocomplete in tightly constrained environments”. I would even go so far as to say that one of the measures of “AI maturity” of a code base should be how tight the constraints are — unit tests, functional tests, static analysis, and so forth don’t go away with AI generated code — they are in fact more important than ever.
This is where the inexperienced developers will trip themselves up. If they’re not reviewing the generated code closely and course correcting the machine as required, then they’re likely to end up with a mess that isn’t performant or maintainable. The human still needs to know what “good” looks like. I think version control is key here too, because being able to walk backwards when you went down a dead end remains just as important as ever.
The thing is the current state of the art for code generation AIs is about as good as a junior developer. It requires just as much supervision, coaching, and prompting to think about the right things. However, just as you wouldn’t get a junior developer to mentor another junior developer, I am not sure that everyone has the skills required to adequately supervise the current state of the art in code generation.