Another way to look at this is you’re outsourcing your understanding to something that ultimately doesn’t think.
This means 2 things: your solution could be severely suboptimal in multiple areas such as security and two because you didn’t bother understanding it yourself you’ll never be able to identify that.
You might think “that’s fine, the LLM can fix it”. The issue with that is when you don’t know enough to know something needs to be fixed.
So maybe instead of carts and oxen this is more akin to grandpa taking his computer to Best Buy to have them fix it for him?
I see this take brought up quite a bit and it’s honestly just plain wrong.
For starters Junior engineers can be held accountable. What we see currently is people leaving gaping holes in software and then pointing at the LLM which is an unthinking tool. Not the same.
Juniors can and should be taught as that is what causes them to progress not only in SD but also gets them familiar with your code base. Unless your company is a CRUD printer you need that.
More closely to the issue at hand this is assuming the “senior” dev isn’t just using an LLM as well and doesn’t know enough to critique the output. I can tell you that juniors aren’t the ones making glaring mistakes in terms of security when I get a call.
So, no, not the same. The argument is that you need enough knowledge of the subject call bs to effectively use these tools.
This is no different than, say, the typical anecdote of a junior engineer dropping the database. Should the junior be held accountable? Of course not - it's the senior's fault for allowing that to happen at the first place. If the junior is held accountable, that would more be an indication of poor software engineering practices.
> More closely to the issue at hand this is assuming the “senior” dev isn’t just using an LLM as well and doesn’t know enough to critique the output.
This seems to miss the point of the analogy. A senior delegating to a junior is akin to me delegating to an LLM. Seniors have delegated to juniors long before LLMs were a twinkle in Karpathy's eye.
Of course the junior should be held accountable, along with the senior. Without accountability, what incentive do they have to not continue to fuck up?
Dropping the database is an extreme example because it's pretty easy to put in checks that should make that impossible. But plenty of times I've seen juniors introduce avoidable bugs simply because they did not bother to test their code -- that is where teaching accountability is a vital part of growth as an engineer.
You read this quote wrong. Senior devs outsource _work_ to junior engineers, not _understanding_. The way they became senior in the first place is by not outsourcing work so they could develop their understanding.
Or you’re assembling prefab plywood homes while they’re building marble mansions. It’s easy to pick metaphors that fit your preferred narrative :)
Which one are there more of nowadays, hm?
If you haven't learned how all this stuff works, how are you able to be confident in your corrections?
> I’m driving a tractor while you are pulling an ox cart.
Are you sure you haven't just duct taped a jet engine to your ox cart?
> I review every small update and correct it when needed
How can you review something that you don't know? How do you know this is the right/correct result beyond "it looks like it works"?
You just hope you are on a tractor.
LLM is a teacher that can help you learn by doing the work you want to be doing and not some fake exercise.
The more you learn though, the more you review the code produced by the LLM and the more you'll notice that you are still able to reason better than an LLM and after your familiarity with an area exceeds the capabilities of the LLM the interaction with the LLM will bring diminishing returns and possibly the cost of babysitting that eager junior developer assistant may become larger than the benefits.
But that's not a problem, for all areas you master there will be hundreds of other areas you haven't mastered yet or ever will and for those things the LLM we have already today are of immediate help.
All this without even having to enter the topic of how coding assistants will improve in the future.
TL;DR
Use a tool when it helps. Don't use it when it doesn't. It pays to learn to use a tool so you know when it helps and when it doesn't. Just like every other tool