My understanding is that AI/LLMs can generate code that works, but often that code is more bloated/convoluted than code written by a decent coder, making it less efficient and more difficult to maintain. I can see that being acceptable for many in situations where hardware/performance/maintainability aren’t a concern like a one-off app or proof of concept. But for something as low level as a kernel I would think that performance and maintainability are the most important things since slowdown in that part of the system ripples up to affect everything a user does anywhere in the operating system.
I understand that a skilled coder can take AI output and clean it up into something at least approaching the quality of their own unassisted code, and I’ve been led to believe that Linus is able to do that for himself. But I fear that other/future maintainers of Linux won’t match that caliber, and it will start to feel that AI bloat. I think I’ve also read of Linus complaining about a torrent of low-quality, AI-based submissions and so I also fear that this will lead to him restricting who can participate in the work, overcompensate, and end up in a situation where Linux becomes less open and more closed.
So here’s how I see it: There is a big difference between “AI generated” code and “AI assisted” code. Or just anything.
To put it in terms most people can more understand let’s say you were writing a book. If you have an LLM generate the book its gonna suck and be slop. But if you write the rough draft, then paste it into an LLM and say, “Look through this and find typos and other mistakes and point them out to me”. Then you go and check the things it finds and fix them yourself, that is fine. It’s just a really good spellcheck at that point. Even if you say “suggest a fix” it’s fine. For coding you could even tell it like “Take this line of code and suggest 5 different ways to do the same thing that might work better” then test them all out and see which one you like best.
I have personally used an LLM to help clean up my dotfiles for example. I don’t want to read through all that shit and find the old junk I need to remove or change. So I just throw them at an LLM and have it point things out to me. Or say you know you have a file but don’t know the exact filename. Go into the folder its in and dump the output of ls into an LLM. Tell it what file you need vaguely. Have it read them and give you the correct filename. Then check it yourself.
The problem comes from people who just generate stuff and don’t do the work of double checking it themselves.
My understanding is that AI/LLMs can generate code that works, but often that code is more bloated/convoluted than code written by a decent coder, making it less efficient and more difficult to maintain. I can see that being acceptable for many in situations where hardware/performance/maintainability aren’t a concern like a one-off app or proof of concept. But for something as low level as a kernel I would think that performance and maintainability are the most important things since slowdown in that part of the system ripples up to affect everything a user does anywhere in the operating system.
I understand that a skilled coder can take AI output and clean it up into something at least approaching the quality of their own unassisted code, and I’ve been led to believe that Linus is able to do that for himself. But I fear that other/future maintainers of Linux won’t match that caliber, and it will start to feel that AI bloat. I think I’ve also read of Linus complaining about a torrent of low-quality, AI-based submissions and so I also fear that this will lead to him restricting who can participate in the work, overcompensate, and end up in a situation where Linux becomes less open and more closed.
So here’s how I see it: There is a big difference between “AI generated” code and “AI assisted” code. Or just anything.
To put it in terms most people can more understand let’s say you were writing a book. If you have an LLM generate the book its gonna suck and be slop. But if you write the rough draft, then paste it into an LLM and say, “Look through this and find typos and other mistakes and point them out to me”. Then you go and check the things it finds and fix them yourself, that is fine. It’s just a really good spellcheck at that point. Even if you say “suggest a fix” it’s fine. For coding you could even tell it like “Take this line of code and suggest 5 different ways to do the same thing that might work better” then test them all out and see which one you like best.
I have personally used an LLM to help clean up my dotfiles for example. I don’t want to read through all that shit and find the old junk I need to remove or change. So I just throw them at an LLM and have it point things out to me. Or say you know you have a file but don’t know the exact filename. Go into the folder its in and dump the output of ls into an LLM. Tell it what file you need vaguely. Have it read them and give you the correct filename. Then check it yourself.
The problem comes from people who just generate stuff and don’t do the work of double checking it themselves.
One thing people forget is that many human coders absolutely suck at what they do and or don’t care.
80% of the code I’ve seen at clients is shit, some of it is hilariously bad, like absolute dog shit.
I’ve had a meeting where I had to explain the codebase to a new joiner, we were crying laughing at how bad the code was.
This particular fortune 500 company never cared to fix it, they just wanted more features.
So yes AI can be shit, but god I trust it more than some of the shit I’ve seen humans write.
Shit devs will make shit code with or without AI. Good devs will make good code, just faster with AI