I stopped using AI code editors
lucianonooijen.com
lucianonooijen.com
Over the centuries we’ve lost and gained a lot of standalone skills. Most people throughout history would scoff at my poor horse-riding, sword fighting or my inability to navigate by the stars.
My logic, reasoning and oratory abilities on the other hand, as well as my understanding of fundamental mechanics and engineering principles would probably hold up quite well (language barrier notwithstanding) back in ancient Greece or in 18th century France.
I believe AI is fine to use for standalone skills in programming. Writing isolated bits of logic, e.g. a getRandomHexColor() function in JavaScript or a query in an SQL dialect you’re not deeply familiar with is a great help and timesaver.
On the other hand, handing over the fundamental architecture of your project to an AI will erode your foundational problem solving and software design abilities.
Fortunately, AI is quite good at the former, but still far from being able to do the latter. So, to me at least, AI based code editors are helpful without the risk of long term skill degradation.
Some better more suitable examples would be warranted here, none of these were as widespread or common as you'd assume. Little to no metaphorical scoffing would happen for those. Now, sewing and darning, and subsistence, while mundane, are uncommon for many of us.
Too many people think what I do is "write code". That is incorrect. What I do is listen, read, watch and think. If code needs writing then it already basically writes itself because at that point I've already done the thinking. The typing part is an inconvenience that I'd happily give up if I could get my thoughts into the computer directly somehow.
AI tools make the easy stuff easier. They don't help much with hard stuff. The most useful thing I've found them for is getting an initial orientation in a completely unfamiliar area. But after that, when I need hard details, it's books, manuals, blogs etc just like before. I find juniors are already lacking in their ability to find and assimilate knowledge and I feel like having AI isn't going to help here.
This is why I don't see LLM assisted coding as revolutionary. At best I think it's a marginal improvement on indexing, search and code completion as they have existed for at least a decade now.
NLP is a poor medium for specifying abstract symbolic systems. And LLMs work by finding patterns in latent space, I think. But the latent space doesn't represent reality, it represents language as recorded in the training data. It's easy to underestimate just how much training data were used for the current state-of-the-art foundational models. And it's easy to overestimate the ability these tools have to weave language and by induction attribute reasoning abilities to them.
The intuition I have about these LLM-driven tools is that we're adding degrees of freedom to the levers we use. When you're near an attractor congruent with your goals it feels like magic. But I think this is over fitting: the things we do now are closely mirrored by the data we used to train these models. But as we move forward in terms of tooling, domains, technology, culture etc, the data available will become increasingly obsolete, relevant data increasingly scarce.
Besides there's the problem of unknown unknowns: lots of people using these tools are assuming that the attractors they see pulling on their outcome is adequate because they can only see some arbitrary surface of it. And since they don't know what geometries lie beneath, they end up creating and exposing systems with several unknown issues that might have implications in security, legality, morality, etc. And since there's a time delay between their feeling of accomplishment and the surfacing of issues, and they will be likely to use the same approach, we might be heading for one hell of a bullwhip effect across dimension we can't anticipate at all.
I understand what you mean, but for some reason I cannot imagine my younger self getting into his first programming practice, going "ugh, why do I have to type this? Why can't I just think and let the computer do it for me". I don't think I would've reached where I am if I saw the act of practice as a tedium that I wish to get it removed.
You probably see it like that because you're not that kid anymore, and for today's "you" code is just a means to provide and nothing more.
Even your engineering principles are probably superior to ancient Greeks, since you can simulate bridges before laying the first stone. "It worked the last time" is still a viable strategy, but the models we have today means we can often say "it will work the first time we try."
My point being that theory (and thus what is considered foundational) has progressed as well.
It's like NP. Solving an NP problem is very hard. Verifying that the solution is correct is very easy.
You might not know the statements required, but once the AI reminds you of which statements are available, you can check the logic using these statements makes sense.
Yes, there is a pitfall of being lazy and forgetting to verify the output. That's where a lot of vibe coding problems come from in my opinion.
So my concern is more "do you know how to verify" rather than "did you forget to verify".
I literally felt myself getting AI brain rot, as one Ask HN put it recently, where it felt like I started losing brain cells and depended too much on the AI over my own thinking and felt my skills atrophy. At the end of the day, in the future, I sense there will be a much wider gap between those that truly know how to code, and those that, well, don't, due to such over-reliance on AI.
Definitely never trust an LLM to write entire files for you, at least if you don't want to spend more time in code review than writing or you expect maintaining it.
Also, a good quote regarding the AI tools market:
> A lot of companies are creating FOMO as a sales tactic to get more customers, to show traction to their investors, to get another round of funding, to generate the next model that will definitely revolutionize everything.
Off-topic, but I just wanted to say I love this as a statement!
Like a lot of others in the thread, I've also turned off Copilot and have been using chat a lot less during coding sessions.
There are two reasons for this decision, actually. Firstly, as noted above, in the original post and throughout this thread, it's making my already fair-to-middling skills worse.
The more important thing is that coding feels less fun. I think there are two reasons for this:
- Firstly, I'm not doing so much of the thinking for myself, and you know what? I really like thinking.
- Secondly, as a collary to the skill loss, I really enjoy improving. I got back into coding again later in life, and it's been a really fun journey. It's so satisfying feeling an incremental improvement with each project.
Writing code "on my own" again has been a little slower (line by line), but it's been a much more pleasant experience.
I still use the chat whenever I need it.
The only thing I'd worry about is when no one knows how to solve these when everyone relies on AI.
Even then, it's mostly never.
"I don't want to use the web."
What backs up this claim? And when will it reach it?
We could be very well reached a plateau right now, which means looking at previous trends in improvements does not allow us to predict future improvements. If I understand it correctly.
As of now (and this could change, but that doesn’t change the moral and ethical obligations), software engineers are richly rewarded specifically because they should be able to write and understand high quality code, the code written is the foundation of how our entire modern world is built.
I could drive a manual car, but why? Automatic transmission is so much more convenient. Furthermore, for some use-cases FSD is even more convenient.
Another example: I don't want to think about gait movement of my robots, I just want it move, from A to B.
With programming, same thing: I don't want to waste time typing `if err != nil {}`, I want to think about the real problem. Ditto on happy-case unit tests. I don't want to waste my carpal tunnel prone wrists on those.
So on and so forth. Technology exists to make life more convenient. So why reject technology?
That is not clear, actually.
Some technology exists to drive sales.
However, in most codebases I can't see that happening. Once the codebase is complex enough, AI will not work, take more time to use than writing the code yourself or breaks the existing code.
The author himself said that AI isn't usable for anything more complex than an University project, yet he complains he lost his skills because he used AI.
As far as I see it, in the current stage of AI, it has limited usage.
You can use it to start a greenfield project or start a new feature that is independent of the rest of the codebase. It will help with most of the setup and boiler plate.
Past that, it will either not be able to do what you need, it will take more time or will break the code. So this pretty much doesn't allow you to modify large code bases or add logic. But you can still use it to generate a function, a method or a service, provided that function, method or service does not require much context and you don't need to modify the rest of the codebase to accommodate it.
I see AI as merely an accelerator, not solving problems by itself but helping you solve problems faster, sometimes. I think it is very similar to Intellicode in Visual Studio and other editor tiols, which don't write code but provide method autocompletion, provide small suggestions, provide syntax highlighting, provide formatting and warn you when you make syntax errors.
Was I using a text editor instead of a good IDE, my speed of development would be slower.
It is also likely LLMs will change programming languages, we will probably move to more formal, type safe languages that the LLM can work with better. You might be good at your language but find the world shifts to a new one that everyone has to use LLMs to be effective for.
And in your LLM future, who will maintain all of the legacy systems that are written in languages the LLMs don't end up assimilating? It's reasonably safe to assume there will be plenty of work left there.
It's interesting, but I'm finding I'm spending a lot of time just figuring out how to describe something to the LLM. A bit less than writing it myself, really, except for the Qt-related stuff, which I've read up on and practiced a bit, but I wouldn't say I'm competent, yet. The generated code is OK and it works the first time, exactly the way I describe it to the LLM. I believe you can easily spot the problem there.
It will take a while to learn how to integrate AI into my workflow, and I can't say it's exactly an enjoyable experience, but I feel like it's something I need to do. I do feel it's a crutch, though.
I will say, there are two areas where it shines so far: writing tests and making me practice my code reviewing.
We'll see how it goes. It's going to take amazing results to ever get me to pay a monthly fee for something running remotely that seems like it should run locally.
I also find explicit/concious LLM interaction a happy medium.
Building tooling into my editor to expedite this concious usage made it much more enjoyable when I didn't have to context-switch into another app (ie. take my current text selection, or error under cursor, etc) https://github.com/xenodium/chatgpt-shell?tab=readme-ov-file...
No. Going back to the stone age is not the solution. For the majority of our day, commuting without a vehicle will be impractical. So will coding without AI, especially as AI improves.
To retain human competency, we will have to find a novel solution. For walking, we created concentrated practice time - gyms/outdoor runs. Some evolution of leetcode, or even an AI guided training, might be the solution for coding skill preservation.
Yes, pretty please.
I live in a town of 400 thousand, it's basically 10 kilometers accross. Very easily walkable. Why does everyone drive? I'm about as fast on foot as when they're stuck in morning traffic. I'm also enjoying my time more than the people stuck in traffic. (And I'd enjoy it even more if there weren't so many cars around!)
I don't understand people who drive to the gym to walk there. They could just walk to the gym and back, instead of going to the gym...
Perhaps an apt analogy. One could argue that the lure of convenience of automobiles led to one of the worst decisions of the 20th century, to restructure society around automobiles, causing a self-perpetuating reliance feedback loop with many destructive side-effects (physical, environmental and cultural). We should pause a bit and not rush head-long into AI without trying to think the path forward through. It's a decision that we will all make together as a culture. There are many current troubles with AI already, even if they make no mistakes at all.
If you're in a codebase of tens or hundreds of thousands of LOC, these systems don't work well, which leaves only two options, you enter some never-ending chat in which you have to have conversations with these systems and they act like a dimwitted intern, or you just give up on being a serious software engineer and pray and commit things you don't understand.
If I have to understand everything anyway I might as well just write it myself instead of talking to a bot that yaps without end, if i went with option two I should be fired because I'd be unqualified for my job. You're just backloading your problems basically.
Okay, I think you are in the extreme end of most people, in the US at least (among many other countries as well), so it will be difficult to convince you of things most people might want or need. People also live in the woods in log cabins, they might not have asked for central heating, but for most people, that sure does help.
The key challenge with greenhouse emissions is that the sources are so diverse and so distributed. We need to look at all the emitters, even if they are only in the range of 0.1-1.0% of global emissions.
On that note, I'm sure Sonnet 3.7 does indeed approach the asymptote of not good enough better than Sonnet 3.5.
I was using it as docs but had to stop because it gives straight up wrong answers while sounding so confident. It's just faster to go directly to the docs or use Dash.app
It’s not me who figured it out so it’s not my achievement
Companies I work at tend to value quality and correctness over productivity, as ultimately low quality and incorrect software makes for unhappy clients who we have to service out of our own pockets later on anyway as part of the warranty we provide for our software, ending up costing us a lot more in money and reputation. But, like I said, I'm also not seeing any productivity gain, not unless you throw every good practice out of the window and pretend to be the only dev in the team as the AI will willfully rewrite large chunks of the app and destroy your colleagues work in the process.
And for what? So that you can be a manager? What is your moat in the end of this? Will you advertise on your resume the ability to manipulate AI via text prompts as your skill? I suppose if you want to be a manager, maybe that's appealing. I don't. I want to actually make things, and be an active and intellectual part at making those things, not just a manager monitoring butts in (virtual) seats.
However, when I'm working on my own time, fixing those poorly-hammered nails can take 1/4 the time _most of the time_. If I see that the AI (artificial intelligence) is unable to handle the task, then I redelegate it to my own NS (natural stupidity) and bang it out slowly but properly.
AI makes coding boring and tedious. But it happens faster so I can take on more projects, or have more time for other fun things that I enjoy more than actually coding.
I also wonder what is the end of this relying-on-AI cycle? You need good problem solving skills to be able to use AI to make somewhat working solutions. The more you depend on AI, the worse become your problem solving skills. And then what. Since you're no longer capturing knowledge into your own brain, your moat as a problem solver is also slowly disappearing, no? And once the job market figures out you actually can't do anything outside of an AI, or the tech has moved on, and what you knew before you started using AI has become irrelevant, who will even hire you anymore?
I see this a lot with juniors entering the job market nowadays, unable to problem solve (many don't even know how to copy and paste text), and sure enough, they get fired a lot.
On a side note, get diagnosed for ADHD. I did, and ever since I got on meds my life has drastically improved. Though I never had a big issue with motivation, it has greatly helped with memory and mood stability.
Does the author enjoy writing code primarily because they enjoy typing?
Are they not able to have the mental discipline to think and problem solve whilst using the living heck out of an AI auto complete?
What's the fun in manually typing out code that has literally been written, copied, copied again, and then re-copied so many times before that the LLM can predict it?
Isn't it more dangerous to not learn the new patterns / habits / research loops / safety checks that come with AI coding? Surely their future career success will depend on it, unless they are currently working in a very, very niche area that is guaranteed to last the rest of their career.
I'm sorry, this is a truly unnatural and absurd reaction to a very natural feeling of being out of our comfort zone because technology has advanced, which we are currently all feeling.