I do agree about most of this, but at the end he mentions they will increase the efficiency of delivering software. That might be true, but only at the cost of the quality of that software. Eventually, you’ll need to pay off that technical debt.
They can increase the efficiency in developing quality software. For most use-cases, we still want active human collaboration and review… describe the intent, discuss approaches, let it implement changes one by one, fixing/reviewing as you go. More like pair programming, with fewer typos.
But the moment you just wave through some change without thinking, you’re not doing software engineering anymore.
It’s similar when writing… invest the time, think through it and discuss it, review as you go, and you can get quality out of it. I hate it for normal email/letters, but I love it for docs, where everything can be cross-referenced, queried, updated more consistently and faster than I could manage it myself. Same caveat applies.
Why do that when I can just write it faster (and with fewer bugs)?
If you can, then do it.
I work faster with CLI coding agents though. Previously I would spend less time designing and more time iterating on code as ideas evolve - this was natural, as coding was slow enough to let me think through the design as I went.
Now, I spend more time on design, and then have mini-sessions to implement it. I prefer scaffolding codebase + types, then implementing it feature by feature.
The more I use AI, the better I am getting at this flow, and the better the resulting code is. New projects get completed in days, and now come with good docs.
Where it really adds value nowadays (but not in the beginning) are cross-project changes and coordination. UI changes + API changes + DB changes + Workflow changes, different codebases & languages… Feature design & Implementation plan, discuss and agree, then implement it across all projects, each with their own norms & constraints.
Legitimate question:
Are you worried this will affect your progress as a developer? Like, the way I’m thinking about it is like an artist paying someone to do sketches for them. They’ll get the art done faster and with potentially better results, but they won’t improve at drawing sketches.
I get that most people are fine to pay $20 to scaffold a project for them, but it does make me wonder if they’ll pay once those costs aren’t subsidized anymore. Like, if it cost $200 for the same scaffolding, would the same dev pay for it? If not, I feel like they might regret neglecting their own practice at it.
I haven’t done 9-5 programming (edit: and especially not on a single codebase!) in many years. My job slowly evolved to be more architecture and collaboration (between product teams, architects & dev teams), with the odd code to kickstart a project or diving in to help resolve an issue.
In that respect, it’s great to be working more directly with code again. Both in languages I know well, and those I am learning. Most teams around me are embracing AI tools, and coordination is easier.
As a general risk to cognitive ability - it absolutely comes with risks. But there have always been people who want to understand more, and those who are happy to solve a problem without really understanding it (often producing poor code / laying landmines, costing everyone time)
We now have more tools at our disposal to build & maintain quality systems. Those who learn to use the tools well and understand the problem domain will outperform those who don’t. Those who can’t (or won’t) will slowly be pushed out. And businesses who can’t differentiate will dig their own graves.
I definitely don’t see the use of AI as being a benefit for developers’ careers, seeing as the quality of the code they produce is quite low. I feel like AI powered devs will basically be a dime a dozen, and they generally will be hired to do slop work, if they get hired at all. It’s pretty easy to tell an AI to write some code.
Devs who can code without AI I think will be the desirable ones, since they will produce high quality code.
That’s kind of how it’s always been, with AI devs taking the role of junior engineers and interns.
It’s all about the ability and willingness to judge. If you can judge good code, you can write good code, and you can guide juniors and AI to write good code. If you give up your judgement, all is lost.
