Ask HN: Did AI make you a worse programmer?
After a year or so using co-pilot and its cousins, I coincidentally tried a new editor and never got around to install any AI support there. I realized that AI had sneaked in on me: It had made me unlearn syntax that used to be second nature. Simple things I knew how to do before, I suddenly had to look up. That made me wonder:
Is the true cost of using AI, which, in its current form, I deem as "autocomplete on steroids", not the subscription you pay, but the decay of your skills?
And if AI decays part of your skillset, to what extent do you think that part of your skillset even matters given the trajectory of AI for coding?
Have any of your stopped using AI directly in your editor for similar reasons? I think you have to ask yourself the following two questions: 1. Is the code that the AI generated something that I would have come up with minimal intellectual effort? (i.e. the majority of the time spent on it would have been looking up syntax, physically typing it, etc. and not higher level thought) 2. Do I understand what the code is doing, how to debug it when it throws an error, and can explain what it is for? If you answer yes to both questions, AI isn't causing you to lose anything important. That sort of code is like long division in math: it's disconnected from your actual understanding of the core concept. If your answer is no to either question, AI might be dulling your coding skills. It's not a guarantee (perhaps you just forgot something that a simple Google search would have helped you remember), but it's a first check against AI eroding your skills. I recently stopped using AI directly in my code editor, and I've felt similarly. However I have noticed I regain the lost syntax knowledge very fast. I think at the end of the day our jobs aren't to memorize syntax, that comes, goes, and changes with the tech we use. Our jobs are rather to have the knowledge needed to engineer software, and AI is just another assistant. I will continue to have it off in my IDE for a few more weeks, but I don't fear the loss of syntax knowledge (to a certain extent) I am in the habit of becoming very familiar with the contents of the official language manuals and learning up how to look answers up there. Often I even look at very basic pages like https://docs.python.org/3/library/string.html#formatspec because I don't have it all memorized. I avoid stack overflow because it's frequently wrong If someone has a CS education I don't expect them to have the algorithm book memorized but I do expect them to be able to know what is in the algorithm book and how to use it, not to mention any other thing that's in the literature. (Lately I've been writing a chess program which is pretty easy if you read https://www.chessprogramming.org/Main_Page but something I couldn't do on my own.) I use Copilot a lot at work. This morning I had to write some complicated tests with Mockito and rather than looking at the docs I asked Copilot a lot of questions, showed it sample of my code, it make me examples like you'd see in Stack Overflow except they were (1) personalized to me and (2) correct. If I don't like the code it shows me I tell it "I'd rather initialize the mocks inside the @Test" and it does that. Once it's shown me a pattern, I might change it a bit to make it my own and then replicate it. I had Copilot write me a simple CMD.EXE script which I haven't done since the days of DOS. Some of it looked like line noise to me and I asked it what it did and I got a good answer and had more faith in the script. So I don't feel like AI has diminished me as a programmer at all. Let me start by saying that I am an experienced developer, so I doubt I'd unlearn syntax any time soon. Also the way I write with AI still has me writing a lot of the code. I use Cursor. The way it helps me is in refactoring it sees 1 example and will apply the same pattern in the following 10 places in the code and it will suggest tailwind classes for colors, etc pretty accurately. That is in Rails. Using AI has let me write pretty complicated Python applications, production ready, in an hour per application, even though I know no Python. The other day in minutes I produced a bash script that let me loop through all sub-directories of a given directory, find all mp4 files, check with ffprobe if the audio stream within was flac or m4a, saved all metadata from those files into JSON using a python script it wrote and then ran ffmpeg to convert the mp4 to either flac or m4a and then reapply the metadata, if the filesize difference was within 800kb it would auto-delete the mp4. All that in a few minutes. Obviously I could've done that either in Ruby or Bash, but this was way way way faster and it would help me debug things super quickly too. I sometimes disable the AI suggestions when I am writing some novel code, but overall AI has released me from writing the 'boring code' and it allows me to leverage libraries and tools from different languages if the use case requires it. Super powerful! I do understand I have the advantage of experience without AI so I am able to steer the AI towards solutions that my experience tells me are useful and I can judge the produced code pretty well. I have no idea how this all feels to a junior developer and whether it does more harm than good to their learning experience. If remembering unimportant syntax differences between languages (e.g. "===" in TypeScript and "==" in everything else) makes you a good programmer, then yes. Or if remembering how to assign variables in stored procedures in MySQL makes you a good programmer, also yes. But overall my ability to design, debug, and maintain code hasn't been dulled by having some of these minutiae stripped away. It actually frees up time and mental effort, so it's easier for me to spend time doing more important things. I'm not a huge CoPilot advocate and worry a lot about the quality of code that a less-experienced dev is going to produce by leaning on it too much, but having written millions of lines of code by hand, it doesn't make me feel like I'm losing anything valuable. Obviously I didn't mean to imply that your merits as a programmer should be judged by your ability to recall specific syntax, like the equality operator in some language. I'm wondering about the long term effects of not paying attention to such details. Do you miss out on picking up patterns used by a certain library, framework, language or whatever, that you could have used to write your own code better? Sometimes there are little details that increase risk if you don't pay attention to them. Like can't you use either "==" or "===" in Typescript but the first one can sometimes do a type coercion that can occasionally have unexpected effects? If I remember right it is a warning but not an error, a programmer who is clearing up warnings will stay out of trouble but if you weren't clearing warnings it would make a difference if you had a "==" or "===". One thing that makes you a better dev as opposed to a worse dev is your habits, especially when it is something obscure where the compiler and IDE don't have your back. Hopefully there's a senior/staff engineer where you're at that actually knows the difference and is able to (find time to) comment on PRs where the wrong one is used. It's one of those "background radiation" things that you develop after working in a language for long enough. TypeScript on the strictest settings + aggressive ESLint rules is incredibly strict and a fantastic target for AI code. It's a good practice to have the CI/CD server reject code that fails ESLint anyway. If you're genuinely worried about it, give yourself a weekly "off-day" where you take the AI training wheels off. Closest equivalent for me is I'll occassionally write Chinese by hand. Do I really need to in the age of modern IMEs like Sogou? No, but I appreciate the deliberate cognitive load. No. I use AI as a fast but stupid research assistant. It aggregates information to point me in the right direction but I don't trust it at face value. I tried copilot for the first time last week and found it useful for writing bash boilerplate but not much else. No. It's made me a much better and more effective programmer, by a huge amount. I'd still be able to get stuff done without AI, and sometimes do, as a practice, but it'd be a drag.