This comment captures it.
AI can do 80% of the work. I can review it later. And I spend much less time reviewing than I would have typing up everything manually.
I recently used it to add some logging and exception handling. It had to be done in multiple places.
A simple 2 line prompt one shotted it. Why do I need to waste time writing boring code?
Are you still going to have the skills to review it a year from now? Or 5 years from now when you’ve become accustomed to only writing <20% of the code? I’m already witnessing my coworkers skills degrading because of this, and it’s only going to get worse. Programming is a language, and when you don’t use it, it fades.
What will happen is that we as developers will move one layer up in the abstraction. In the future it would seem a bit nonsensical to focus on individual lines of code and syntax because AI can more or less deal with it.
We will be focusing more higher level design - which database, where the data flows, which service is used where and so on. So you will just need different skills. Coding as a skill won't be that important.
Anyone old enough to remember when UML promised the same thing? Never have to touch code again -- just draw boxes, charts, activity diagrams, etc. and right-click and generate code! Rational Rose is the future of programming!
It always turns out that when you have to make a computer execute a very precise set of operations, the absolute best way to communicate this is not English, not diagrams, but code.
It also turns out that the challenge is generally not writing that code, but figuring out that precise set of operations in the first place.
Yes, and in the enterprise space, many workflows are nowadays done with lowcode/no-code tooling, like PowerApps, Adobe Workfront Fusion, Outsystems, among others.
Many of these tools, have started to go one step further, and the traditional ways are supplanted with AI, reducing even further the amount of low code/no code scenarios that a human has to produce.
The only thing left are the few serverless deployments to call into some code that needs more complex integration logic, and that is about it.
I have seen enough of these projects, to realize it is going to happen, not everywhere maybe, but in specific industry sectors certainly, it already is.
It's almost as if we write code because it is a very precise language... a feature that natural languages don't have.
I'm just going to leave this here...
You still communicate in code and fix the errors.
> You still communicate in code and fix the errors.
But you just said
> Coding as a skill won't be that important.
So coding is only important if you need to make your software actually work, I guess?
I just said its not that important. Your time won't be spent coding but rather fixing stuff here and there.
... so how are you supposed to fix things without coding, given that you admitted you need to dive into the code to fix things?
Its not a binary - we will spend less time thinking about code and occasionally fix things and more time on higher level abstractions.
Just like I sometimes need to understand and dive into assembly but not always. Its a spectrum and the value in the spectrum changing has consequences for how we work.
That is wishful thinking. Every layer we added between humans and the machines (and even the ones in the machines themselves) take hordes of dedicated humans to maintain: IDEs, compilers/interpreters, linters, CI tools, assemblers, linkers, operating systems, firmware, microcode, circuitry, circuit elements (manufacturing processes).
Just about every time somebody on this site says “we developers”, you can assume they’re ignoring the (large majority of) developers that don’t work on the same things they do, in the same way.
Yes, all those ever-growing layers of intricate abstraction that you take for granted and “don’t have to worry about” are conceived of, designed, built, and maintained by developers. Who do you think wrote the compiler for that syntax you don’t want to learn?
The point of abstraction is that it doesn’t leak. Most developers don’t need to understand compiler theory or assembly to be productive.
No one in my company writes assembly. very few developers work at that level of abstraction - this means those who made the compilers are doing a good job.
Yes, and very few people working on compilers do OS kernels, and very few people working on databases do compilers, etc. etc. My point is, they're all developers, so when you say "we developers", you'd better be speaking for all of them.
I agree with you. But not many people work with or understand the abstraction at OS or circuitry level.
That’s kind of my point: most people will work on higher abstractions but there will be some who maintain lower ones.
I write C# but I barely care about memory, gc nor microcontrollers nor assembly. Vast majority of people work on higher abstractions.
I would challenge that it is really a vast majority working at these highest levels of abstractions. There are thousands of people working on C#, Java and JavaScript runtimes and basic libraries. There are thousands of people working on compilers and thousands more (morw likely tens of thousands) working on operating systems and drivers etc... I think that the amount of effort that goes into all of this is severely underestimated because it so far removed from the perspective of a high level application developer.
if this is true we will have to trust committing prompts not code.
I don’t worry about assembly because the abstraction layer is reliable. I don’t worry about ISAs, ucode, transistors, etc. the abstraction layer is reliable.
The same is not true for LLMs today. Circumstantial evidence: people commit the lower layer. That’s not an abstraction any more than an IDEs tab complete or “new project template” is an abstraction.
When someone stops reading the output entirely and has a codebase that is only prompts, I’ll hear them out on skill obsolescence.
(Edit: changed to hypothetical)
> individual lines of code and syntax because AI can more or less deal with it
Individual lines of code can bring down an entire system.
> and syntax
I’ve never seen this be a real issue even for lower performing devs.
[dead]
If that’s a real effect, the best programmers absolutely will. You could spend 10% of your working time doing exercises, and still have double the productivity you used to have.
> Why do I need to waste time writing boring code?
Some people actually enjoy that, believe it or not.
seriously! excuse me while I cry with the artists about the robot doing the fun part. automate my goddamned dishes, not the coding! I chose this field because I liked that part ;_;
honestly I've largely stopped coding for fun since Claude Code got popular. It's too expensive to use for personal projects, and it does the fun part. I don't want to pay but if I'm not using it, all I can think about is how inefficient doing everything manually is
..
I'm going to get into gardening or something :(
I can highly recommend gardening. Even before LLM's I found it much more satisfying than coding as a hobby.
> AI can do 80% of the work. I can review it later. And I spend much less time reviewing than I would have typing up everything manually
Are you sure you're actually reviewing the code? Deeply, properly reviewing and understanding it? Because from what I've seen people that say they do, don't. That's why they 'speed up' from using LLM-generated code.
The old adage that it's far harder to review code than to write it still holds true.
> Why do I need to waste time writing boring code?
The better question is: should that boring code be written? Code should only be non-boring.
The boredom of writing the code is not the only problem. The subsequent continued indefinite existence of that code is also a problem.
Yes who needs logging :)
This reminds me of the phenomenon of competence being inversely correlated with confidence until some inflection point is reached on the journey to mastery.
I think the argument being put forward here is that writing that boring code is part of the journey to mastery. If you haven't crossed the inflection point, a backwards slide in skills will result in less competence and more confidence, which is a scary thought given how software runs the world.
What you shouldn't forget also is that, while AI may be good at coming up with a "first shot" solution, it may be much worse if you want to change/correct parts of it.
In my experience, AI very often gets into a sort of sunk-cost fallacy (sunk prompt?) and then it is very hard to get it to make significant changes, especially architecturally.
I recently wrote an extension for a popular software product and gave AI the same task. It created a perfectly working version however it was 5x the lines of code of my version because it didn't know the extension API as well, even though I gave it the full documentation. It also hard coded some stuff/solutions to challenges that we totally don't want to be hard coded. A big reason why I arrived at a much better solution was that I used a debugger to step through the code and noted down just the API interactions I needed.
The AI also was convinced that some things were entirely impossible. By stepping through the code I saw that they would be possible by using parts of the internal API. I suggested a change to make the public API better for my use case in a GitHub issue and now it is totally not impossible.
At the end of the day I have to conclude that, the amount of time invested guiding and massaging the AI was too much and not really worth it. I would've been better off debugging the code right away and then creating my own version. The potential for AI to do the 80% is there. At this time though I personally can't accept its results yet but that may also be due to my personal flavour of perfectionism.
The fear and pain of writing boring code gave us the processes and systems we have today. i.e. microservices, (I know they have their own problems) were born out of pain from maintaining monoliths. Agile (again, own problems) was born out of pain from waterfall.
What happens when all pain and boredom is taken away? Why do we need to invent new frameworks, systems, design patterns in that scenario?
This comment captures it: https://news.ycombinator.com/item?id=44906987