35 comments

[ 2.5 ms ] story [ 53.9 ms ] thread
This is why I still haven't embraced agents in my work but stick with halfway manual workflow using aider. It's the only way I can keep ownership of the codebase. Maybe this will change because code ownership will no longer have any value, but I don't feel like we're there yet.
Reviewing code is absolutely different from writing it, and in my opinion much harder if the goal is more than surface level understanding.

This is what I am still grappling with. Agents make more productive, but also probably worse at my job.

The biggest problem in my head with AI generated code is that its mistakes are subtle but can still be critical. There will be a point where people don't understand generated code and just leave it unmodified allowing other code to pile up and depend on it. At that point you no longer have a bug, but a new feature. Also, AI doesn't grasp things on a big scale, just shits out output with highest score. This doesn't mean output is a great fit for your project or for upcoming plans.
> reviewing code is very different from producing it, and surely teaches you less

Maybe he meant "reviewing code from coding agents"? Reviewing code from other humans is often a great way to learn.

  > I do read the code, but reviewing code is very different from producing it, and surely teaches you less. If you don’t believe this, I doubt you work in software.
I work in software and for single line I write I read hundredths of them.

If I am fixing bugs in my own (mostly self-education) programs, I read my program several times, over and over again. If writing programs taught me something, it is how to read programs most effectively. And also how to write programs to be most effectively read.

> I work in software and for single line I write I read hundredths of them.

I'm not sure whether this should humble or confuse me. I am definitely WAY heavier on the write-side of this equation. I love programming. And writing. I love them both so much that I wrote a book about programming. But I don't like reading other peoples' code. Nor reading generally. I can't read faster than I can talk. I envy those who can. So, reading code has always been a pain. That said, I love little clever golf-y code, nuggets of perl or bitwise magic. But whole reams of code? Hundreds upon hundreds of lines? Gosh no. But I respect anyone who has that patience. FWIW I find that one can still gain incredibly rich understanding without having to read too heavily by finding the implied contracts/interfaces and then writing up a bunch of assertions to see if you're right, TDD style.

Most of the software engineers out there do the support, augmenting source code behemoths the least possible way to achieve desired outcome. I believe that more than 90% of software development was support roles as early as 2K or so.

Not that I had an opportunity to write new code, but most of my work through my experience was either to fix bugs or to add new functionality to an existing system with as little code as possible. Both goals mean reuse and understanding of the existing code. For both "reuse" and "understanding" you have to thoroughly read existing code a dozen or so times over.

Tests (in TDD) can show you presence of bugs, not the absence of them. For the absence of bugs one has to thoroughly know problem domain and source code solving the problems.

> For example, to add pagination to this website, I would read the Jekyll docs, find the right plugin to install, read the sample config, and make the change. Possibly this wouldn’t work, in which case I would Google it, read more, try more stuff, retest, etc. In this process it was hard not to learn things.

How is this any different than building Ikea furniture? If I build my "Minska" cupboard using the step-by-step manual, did I learn something profound?

I am not sure how many other people on here are old enough to remember, but I first learned to program before I had the internet. I had to read books, and then if I was trying to figure out how to do something, I would have to figure out which book to look it up in, and then figure out where in the book to find it and how to apply it to my situation. It made me learn a ton, because I would have to read a lot of books to even know where to look; I had to do my own ‘scraping and indexing’.

I remember as the internet took off and you could just search for things, I thought it made programming too easy. You never had to actually learn how it worked, you can just search for the specific answer and someone else would do the hard work of figuring out how to use the tools available for your particular type of problem.

Over the years, my feelings shifted, and I loved how the internet allowed me to accomplish so much more than I could have trying to figure it all out from books.

I wonder if AI will feel similar.

Even people with the Internet growing up still learned largely through books, probably until StackOverflow really took off. One "hack" prior to SO that sometimes goes under-acknowledged was Google Groups. Around 2000, they bought and made free to the public the entire Deja News USENET archive, and suddenly you could search comp.lang.whatever and usually find someone who'd asked (and someone who answered) whatever question you had. And the signal-to-noise ratio was extremely high, given the barriers to entry (technical and financial) to being active on USENET's technical groups in the 90s.

Of course, asking a question was another matter, likely to result in a rebuke for violating the group's arcane decorum. But given how pervasive "RTFM" culture was back then, most "n00bs" were content to do just that (RTFM) until they came up against something that genuinely wasn't covered in some FAQ or manpage.

> I had to read books

Same here. Except that as native french speaker there simply weren't that many quality books about programming/computers that I could easily find in french.

So at 11 years old I also learned english, by myself, by using computers (which were in english back then) and by reading computer books.

And we'd exchange tips with other kids in the neighborhood who also had computers and were also learning to code (like my neighbors who eventually, 20 years later, created a software startup in SoCal).

So much AI moaning and groaning these days seems based on the idea that people have to be forced to do anything of value, even for themselves.

It seems to imply a great deal of pessimism about human self-determination. Like, I can't be anything good unless there is an external mold pressing me into the good shape. And it can't be my choice because I would never choose anything good. I'll only do good things for myself if forced.

Since AI is supposedly taking everybody's jobs and making it so we can choose never to better ourselves, maybe future governments will need to institute taskmasters to force us into regimens of physical and mental health and vigor. A whole new adult school system will have to be instituted.

I find the opposite is true for me. In my wheelhouse I can use an agent to do a thing, and I can be very critical of the implementation. Outside of my wheelhouse I actually learn quite a lot by watching the agent solve a problem. Since I do have a strong background I am still able to judge the overall approach and identify obvious stupid things the agent tries to do. I would say the code quality is probably a bit worse in those situations than I would have ended up with, but takes about 1/3 of the time. The most difficult part is opening a PR and worrying there might be a couple stupid blips left that I missed, didn’t affect the implementation, but my coworkers are going to look at and ask me wtf I was thinking
Whether we want to accept it or not, we’re now QA. That’s not derogatory, at all.

But I don’t think the answer here is to double down on reading the code and understanding that deeply. We’re rapidly moving past this.

I think the answer is to review the code for very obvious bad choices. But then it’s about proper validation. Check out the app, run the flows, use it for real. Does it _actually_ function?

Or that’s what is working for me. I cannot review all the LOC and I’m starting to feel like I don’t want.

  [...] since I work at an AI lab and stand to gain a great deal if AI follows through on its economic promise.
And there it is.
We should be very concerned for the next generation. When you have the constant temptation of digging yourself out of a problem just by asking an LLM how will you ever learn anything?

My biggest lessons were from hours of pain and toil, scouring the internet. When I finally found the solution, the dopamine hit ensured that lesson was burned into my neurons. There is no such dopamine hit with LLMs. You vaguely try to understand what it’s been doing for the last five minutes and try to steer it back on course. There is no strife.

I’m only 24 and I think my career would be on a very different path if the LLMs of today were available just five years ago.

> We should be very concerned for the next generation. When you have the constant temptation of digging yourself out of a problem just by asking an LLM how will you ever learn anything?

This is just the same concern whenever a new technology appears.

* Socrates argued that writing would weaken memory, that it would create only superficially knowledge but incapable of really understanding. But it didn't destroy it. It allowed to store information and share it with many others far away.

* The internet and web indexers made information instantly accessible, allowing you to search for the information you just need, the fear is that people would just copy from the internet, yet researching information became way faster, any one with Internet access could access this information and learn themselves, just look at the amount of educational websites with courses to learn.

Each time a new technology came and people feared that it could degrade knowledge, the tools only helped us to increase our knowledge.

Just like with books and the internet, people could simply copy and not learn anything, its not exclusive to LLMs. The issue isn't in the tool itself, but how we use it. The new generation will probably instead of learning how to search, they will need to learn how to prompt, ask and evaluate whether the LLM isn't hallucinating or not.

My concern is also, how will programming and software design ever improve?
I've seen a lot of posts like this one, but this is the first to encapsulate how I feel so well.

Honestly, I don't really know what to do. I spent my whole life (so far; I'm still very young) falling in love with programming, and now I just don't find this agent thing fun at all. But I just don't know how to find my niche if using LLMs truly does end up being the only way for me to build valuable things with my only skills.

It's pretty depressing and very scary. But I appreciate this article for at least conveying that so effectively...

Could I ask, what did you love about programming that you now don't find this agent thing fun at all.

I'm genuinely curious, I feel very differently and excited about this agent thing.

Asking because unlike a lot of other commentary, this struck me as being more about the act itself than being depressed/anxious for financial reasons, etc

The pilot analogy hits different when you consider that pilots still train on simulators for exactly this reason — they're legally required to maintain proficiency even when autopilot handles 99% of flights.

There's no equivalent mandate for software engineers. Nothing stops you from spending years as a pure "prompt pilot" and losing the ability to read a stack trace or reason about algorithmic complexity. The atrophy is silent and gradual.

The author's suggestion to write code by hand as an educational exercise is right but will be ignored by most, because the feedback loop for skill atrophy is so delayed. You won't notice you've lost the skill until you're debugging something the agent made a mess of, under pressure, with no fallback.

The term "Children of the Magenta Line" has long been used in aviation to describe the over-reliance on automation. So even though they train to avoid losing manual skills, it's definitely still a concern.
I think this author could consider thinking of the AI as more than just a task rabbit that allows us to not code, not think, not understand.

If the LLM is indeed such a master at complex coding tasks that we don't understand, why not ask it some questions about how the code works?

You can even ask directly about the concern. "I am worried that by letting you do everything I am not learning how the system works. Could you tell me more about what you did and how I might think through it if I needed to do it myself?"

Re: "reviewing code is very different from producing it, and surely teaches you less" - I feel this so much when reviewing the code one of my coworkers writes. My coworker makes plenty of mistakes and I learned the hard way that reviewing his PRs in a web page is not enough. These days when I have to review his code I download his branch locally and load the entire solution in the IDE. I then track his changes and usually find a few things wrong.

BTW - my coworker is not AI. It is a flesh-and-bones SWE.

What the fuck are people working on where it's possible for the LLM to just add entire features. Refactors and class/method level code can be impressive, anything highly structured with good guard rails. As soon as things start to reach beyond that it falls to absolute garbage.
What in the linkedin sudden b2b marketing insight was that.
> I believe in coding primarily as a means to an end

Yes. Absolutely. To what end, though? Is your end deterministic like a cryptographic protocol or loose like pagination of a web page? Is your end feature delivery or 30 years of rock solid service delivery at minimal cost?

AI is a dangerous tool. It exposes fundamental questions by automating away the mundane. We have had the luxury of not thinking deep and hard about intent and value creation/capture and system architecture. AI is putting us face to face with our ineptitude: maybe it wasn’t the tech stack or the programmers or the whatnots? Maybe the idea was shait, maybe I had no understanding of the value added of my product? Maybe …?

You get the best gear - musical instrument, bicycle, camera, etc - the pros have and still the results are not great. Gotta ask why. We are experiencing this at literally industrial scale.

I have also felt something similar.

A few days back, I tried to implement a PDF reader by pure vibe coding. I used all my free Antigravity, Cursor, and Co-pilot tokens to create a half-baked, but working Next.js PDF-reader that (to be honest) I wouldn't have glued together without 2 weeks of work. As an MLE, I have done negligible web development using JavaScript and have mostly worked with Python and C.

But the struggle actually started after the free tokens were exhausted. I was feeling anxious to even look into those Next.js files. I am not able to describe, but it was probably some kind of fear - fear of either not being able to debug/implement a new feature, or not willing to put in precious hours (precious because of FOMO that I could do something cool with AI-paired vibe coding) to understand and build the feature myself.

I abandoned that project since that day. Haven't opened it yet - partly because I am waiting for the renewal of free tokens.

> Coding agents are here to stay, and you’re a fool if you don’t use them.

Why would they be here to stay? The crux of the author's argument is that using them is detrimental in the long term. The correct response to that is not a lukewarm response of "maybe do some coding now and again", it is "don't use tools that make you worse".

Have your agent do red/green TDD - its like double entry accounting, the tests and code mirror each other and the tests are an executable repository of docs of how the thing should behave, that helps immensely when you need to be an archaeologist and understand some deep corner of the system.

Code reviews are a cinch because if you get confused by the real code you can switch to reviewing the tests and vice versa.