Yes, I've devolved into writing listicles. Regardless, these thoughts and themes have been running rampant in my brain, and this will help purge them. So indulge me, for a moment.
The pros...
5: Release from syntax burdens. This is a huge win. I prefer C#, and with the changes that come every year, I don't always know what the most elegant way to write something is. Also, I often forget how to use delegates and events, but the machine can get it right the first time.
4: Import expertise that you don't have. First time needing to use that library, or even that language? The AI's got you covered. It even works figuring out build YAML and such.
3: Pairing partner that works for cheap. Pairing interactions go pretty well, you just have to keep prompting it to get where you know it has to be. It's like working with a junior developer, driving at the keyboard while you discuss things.
2: No documentation hunting. There's always a library or framework that has some feature that I don't understand. Now I don't have to go find the docs, I can just ask the robot.
1: Types faster than you can. This is especially true when you're working on something solo, and not on a team or in an enterprise. You know what good looks like, and you can describe it, go get an energy drink, and come back to exactly what you wanted.
The cons...
5: You have to trust and verify. I don't think this avoidable. You have to check the robot's work to make sure it isn't doing things that are security risks, or performance issues-in-waiting.
4: Coding isn't your biggest problem in the first place. I've been harping on this for weeks. It can generate code fast, yes, but coding by many estimates is 10-20% of the time spent in product development. The creativity and product requirements are the genesis of innovation. AI can't do that.
3: Trained on crappy code. Let's be realistic, most code in the wild isn't great, and that's what the robots trained on. So it's unsurprising when the machine comes up with some ugly code smells, like a nullable boolean. Why does it believe that a boolean with three states is a good idea?
2: Overconfidence. While this is better than it was a year ago, I'm surprised when it generates something that won't even build. When you tell it what to fix, it high fives you and congratulates you on being right. But it was so sure in the first place! Now put this in the hands of vibers, like lawyers or product managers, who don't know what to look for, and you've got trouble.
1: AI lacks context. It doesn't know what it doesn't know. For example, if a user should match the owner of a record fetched by an API, it doesn't know to check that unless you tell it to. Looping back to #4, so much time is spent describing the outcomes that you're after, whether you're a human developer or a machine.
Again, it's a fantastic tool that makes the work better, definitely more fun, but the hype is completely overblown. Software engineers enthusiastically love it, as they should, but a lot of leaders keep making benefit claims that aren't backed up by deep, peer-reviewed studies. Our time as leaders would be better spent figuring out how best to use this magical thing in a way that keeps advocating for better developers, because they're not going to be replaced. The anecdotes produced are usually special cases that don't reflect real-world development in the enterprise. As a reminder, that's typically aging code bases written by people who moved on years ago and left little to no documentation. AI can't supernaturally acquire the context that humans can't.
Let's stop treating the tool like a panacea, and work on figuring out how best to leverage it in real situations.
No comments yet.