Posted by tchalla 4 hours ago
How's about a test? Put all the smart AI researchers/developers onto an airplane that its software was entirely created by AI. Now tell that airplane to travel around the world with airborne refueling and land at an airport. When will this happen and how many of AI advocates will get on this autonomous airplane?
It's absolutely not true that it "just" moved the difficulty around. If that were true then I'd be just as well off continuing to use my decades of programming expertise just as I always have; but the reality is I can get more done, and get better work done (depending on level of vibing), than ever before.
Thing is, though, making programming easier doesn't mean programmers will work less hard. That's how competitive markets work. LLMs made programming easier. Capitalism prevents workers from capturing that value.
What new skills?
Figuring out when it's appropriate to fully wrap your head around the details of a solution, and when it's appropriate to let the agent handle that and only know a bunch of properties of the solution. Knowing when it's appropriate to try 10 things, throw them all away, then go deep. Knowing how to learn from these things so you can make something better, not just faster.
Some YAML formalities now take zero effort while architectural thinking became way more important and difficult.
Did it though? I think the architectural stuff was always there and was always hard. And still is. I don't buy that it got harder now that you've got a pretty smart AI you can bounce ideas off, ask to investigate stuff, maybe make a quick mockup trivial test of both options on an architectural choice you face, send off to do research etc.
...so in my mind the aggregate {{programming}} got easier because the hard parts are still hard and the trivial parts got AI'd.
The only step up in complexity imo is wrangling a bunch of agents. Even very good coders report mental exhaustion from that
Previously, I would've only thought through the really important high level choices up front (e.g. things that would affect interfaces with other parts of the system, or 'do I need a queue here' etc). For the smaller minutiae of good code structure, appropriate abstractions etc. I would allow myself flexibility to address those while working through the problem.
I found it easier to work at those different levels of granularity in sequence, and the latter one I specifically found easier to see the problem clearly and make a good decision while hand-writing the diff. In that sense, I think good architecture has been made more difficult to practice. For me, at least.
And I also think what you describe is true in some contexts where you know exactly what you’re after.
You also don’t make architecture decisions in a vacuum, so the decision others make also affect you and you need to sell your decisions to others.
I didn't think it would work just 6 months ago, but reality is that at this point AI writes better code than me and I'm not the average developer, but someone who loved the craft and was good at it.
Lots of effort was required to get the repositories to a good level, best practices, documentation, etc, but reality is that once you do that and have strong rails most of your work is having it to write a plan focused on business logic, review it, have it derive an implementation plan, review it and then it's mostly on its own.
Codebases have never been healthier, cleaner, better documented, consisted and thoroughly tested as they are now. There was just no spare time and mental energy to bring them there before, now there is and experimenting to get there was cheap.
Needless to say I no longer enjoy the job anymore and thinking of changing domain. I loved tinkering about implementation details, etc, but the job nowadays is more of qa and architectural design than writing or reviewing code.
The way to think about coding agents is that a good one should in theory literally replace the developer entirely. No, a whole organisation of developers.
In theory a product owner should just be able to dictate how they want to product to function at a high level and the AI should take care of the rest in the same way a human programmer or team of programmers would have in the past. If there are conflicts in what's being requested, then the AI should be able to recognise that and ask for production direction.
As always with every generation of AI people seem to way over index on the now.
- "They're good for autocomplete, that's about it"
- "They're good for quickly mocking up small functions, but they make a lot of mistakes"
- "They're good for scaffolding some parts of the system if you're good at prompt engineering"
- "They're good at writing most of the code, but humans will always need to do the last 10%"
- "They can write all of the code, but humans will still need to architect the system"
You are here. Perhaps this is where progress stops. I wouldn't bet on that however.
AI is making programming an irrelevent field.