51 comments

[ 2.9 ms ] story [ 48.4 ms ] thread
read through the article, pretty much agree with everything you have said ... there are certain skills that AI can't even hope to teach or solve especially in the field of DevOps/Cloud ... too often it recommends the more expensive answer out of the box simply because its the most popular.

Its trained on masses ... well, unfortunately, masses are wasting a lot of dough

I'm biased as I've not been a beginner dev for nearly 20 years, however I have found Copilot is pretty helpful for is learning Rust. In combination with Intellisense, it helps ease some of the mental overhead of the syntax, letting me focus on learning the important bits of the language. It helped me go from opening up a book on Rust to having a working tool in about a week.

I won't pretend that it's turned me into a senior engineer, of course, but it's definitely gotten me over the 0 to 1 problem much quicker than I think I could have without it nudging my code in the right direction.

For what it's worth, I don't ask Copilot to write the code, I just use it as an advanced auto-complete, reading the suggestion to see if I agree with it before hitting tab.

I thought the same until I tried coding things manually in Rust. It was so hard to write Rust without any assistance. I turned off AI to learn things properly. It was an illusion that I know what I'm doing until I disabled AI.
I thought this was going to be yet another post about how AI is ruining Junior devs so we'll have a Senior replacement crysis in a few years.

It sort of is, indirectly, and I agree with pretty much everything.

But the bit about sycophancy was particularly enlightening. I actually thought "plain" ChatGPT-like interfaces could be good for learning. But the Youtube ROAS example is really powerful. If the student can skew the teacher's conclusions so much just by the way they phrase their questions/answers, we're going to mislead new programmers en masse.

I'm not even sure that the extensive prompting they say they use for their "Boots" is good enough.

I guess in the age of AI you still need someone to repeatedly reject your pull requests until you learn. And AI won't be that someone, at least for now.

I think I agree. From personal experience, even when I ask for scathing critique, the need to placate and make me feel better seems to bleed through ( both on 4o and 5 as far as I could tell ). I am not sure what to make of it.

We go back to this original prediction that the tool will help those, who both want help and are painfully aware of LLMs peculiar issues.

> But the bit about sycophancy was particularly enlightening.

I always try to stay above this by prompting the question twice, with the opposite biases. But I of course don't know, which hidden biases I have that the LLM still reinforces.

"Learning must be uncomfortable."

Critical thinking is hard.

Also, not aligned with modern society, since you kind of need free speech for that.
People just don't want to face the uncomfortable truth that they are probably not as smart as they want to believe they are.
I completely agree with this article. AI (in a pedagogic context) is best when treated like a super-powered man page.
> Don’t use: > AI auto-complete in your editor > Agent mode or agentic tools for your educational projects

While I am not learning "coding" as a beginner anymore, I am constantly learning new frameworks, language features, algorithms etc. as is the norm in the industry, and I disagree it's bad to use AI auto-complete. Pre-AI IntelliSense-style autocomplete from Visual Studio or ReSharper makes learning new libraries and language features much easier. ReSharper for example will suggest taking advantage of new language features when you write something an older way, and many times this was my introduction to that new feature.

The new AI-based autocomplete can be even better; it demonstrates one way to do something and regardless of whether you use it or not, you can learn from it. You have to be curious enough to actually read what it is doing, but if you lack that curiosity it isn't AI's fault (before AI this was just "copy-pasting from Stack Overflow").

100%. I enjoy AI Agentic programming because I make new things to tinker with and/or try out ideas. I'm not trying to code to push to some production, and I'm not worried about what others think of my code.

I want to be able to say I've tried and done things when speaking with highly technical people. I've been a 'programmer' since I was 10, I'm 35 now but never joined the work force as a programmer; I don't know why, but now that AI is here, the love for coding, tinkering, making system level things, trying things like WASM which may be the future of our www; these all give me that joy. I found my limitations as a programmer and excelled because I have different skillsets.

I love learning that doing something MY way is a good idea, but has been thought of and some amazing programmer already built the ground-work for it.

My Cursor AI agent even setup git for me for my projects so I can easily push with my SSH keys: do I know I can do that myself? Yes. Do I want to? no.

> ReSharper for example will suggest taking advantage of new language features when you write something an older way, and many times this was my introduction to that new feature.

That's actually news to me and sounds amazing. I started coding with C syntax when I was young. You learn habits then, it sticks with you.

I'm since enjoying python for backend things, flask for little webserver stuff and javascript for front-end things.

WASM Python ain't there yet, but I _love_ tinkering. I _love_ finding bugs. I _love_ poking and prodding at how things work. I'm almost always re-inventing the wheel with concepts but you know what? At least it's mine and I can tinker and learn.

Some of us enjoy the craft as a hobby and learning. Even within my teams some are more sophisticated tech wise than I am; to get on their level remotely requires me to tinker.

Often times, I find a solution for my problems that were the most simple; engineering minds like to overcomplicate things.

Very much agree. AI autocomplete is the best thing ever, because it spares you from having to read the docs but it's few enough lines that you can review and make sure it does what you intended.

It won't write big chunks, so it won't hinder your learning.

The advantage of traditional auto-complete over AI is that it will typically list everything that fits: all methods, all variables and constants in scope, etc... It can even fetch the documentation if available. It is great for learning because it tells you all your options without deciding for you.

AI autocomplete essentially searches stackoverflow for you and pastes the first answer without context, adjusting it to match your code. If you are learning, just do the stackoverflow search yourself, or prompt you favorite chatbot if you insist on using AI, so you can have at least some explanation about why it is done like this.

> "I don’t understand the docs, anyone have a video?"

As an experienced dev, I hate this trend. I don't need my hand held for 10 minutes; I need to see three specific lines of config that may or may not be somewhere in the video.

A video can be helpful to me in some cases. Demonstrating how to set up a project or run a utility that scaffolds something. Or even some basic coding idioms. But these should be focused and short, i.e. 5-10 minutes. Show one thing, maybe a couple of examples of common scenarios, and that's it.
I commend all the ideas the author has here about better education. I agree it's a big problem. But perhaps the biggest problem is the idea of one curriculum.

I grew up with a learning disability. I was extremely curious and able to hyper-focus on learning, but only when I found it interesting or easy to pick up and run with ideas. Other kids didn't have the same problem as me, so they excelled while I dragged behind. What I learned (after attending 5 schools in 2 years) is that I have to find my own path to learning that works for me.

It's impossible for me to focus on dense text. You could point a gun at my head and I still couldn't absorb the information. I need spatial learning. Moving pictures, flow charts, multi-level cutaways. Lists and sections broken up into hierarchies with clear simple headings and compartmentalized concepts. This way my brain can organize a literal map of the information for me to traverse later. But some other people might find that a nightmare.

At the same time, I learned programming extremely slowly, because I only used the methods that were easy to me. I just gave myself projects to accomplish and used trial and error to slowly learn how the language worked, along with a book for reference. It took me years to finally understand the academic underpinnings of how languages (and software) worked. I wish I could've seen a map of the different concepts, to reinforce what I needed to know to learn the next thing.

But there's also different kinds of information which need different learning methods. What's a sine, cosine, and tangent? I honestly still don't know, because the words themselves are foreign to me. For that I would need some kind of Duolingo-style repetitious-card-memory-trick-thing to even remember what word is what concept.

I don't know any framework to break up any subject into multiple course methods. And AI can't do it either. AI sucks at visualizations, and it doesn't have a deep understanding of how to teach things in multiple ways. EdTech needs to be extremely careful not to put all its cards into one "thing" if that thing can't do what people need. (That said: AI is great at quickly explaining things you don't know, and providing you an insanely fast path to the information you need)

In terms of CS itself, I feel like what we're lacking is a big-ass wikipedia or knowledge base. A lot of it is in Wikipedia, but not nearly detailed or interlinked enough. Once you have all the content, then you can reorganize them into different curriculums for different learning styles. But these are two separate problems. The tutorials are way too shallow, and the dense academic verbiage is far too detailed. You need a way to intermix them that's tailored to the user.

> What's a sine, cosine, and tangent? I honestly still don't know, because the words themselves are foreign to me.

They are conversion functions between different fraction-based ways of measuring angles.

You can draw a right triangle for the angle you want to build and you can measure it based on the ratio of any two sides of the triangle.

You can also view the angle as a fraction of a circle. It's up to you decide whether a full circle counts as 360 or 2pi (or 400 or 1 or whatever).

sin/cos/tan and their inverses let you convert between the two. Both are useful, neither is always better. The conversions let you use whichever is easier.

The sine/cosine names don't really make sense in Indo-European languages because they are based on terribly mangled old Arabic. No, they do not come from the Latin word "sinus" = bay or bend. Yes, they probably did affect the direction of the mangling because there was this nice Latin word that looked like it ought to have something to do with it... but they started out as Arabic.

The name of the tangent function comes from the geometric tangent as a line that touches a curve. Tangent comes from a Latin word that means to touch -- hence why they keys on a keyboard are called that in some languages. If you do some fancy geometric drawing involving a unit circle, a radius, and an angle, then the tangent function naturally appears as the length of a line segment that 1) just touches the perimeter of the circle and 2) is at a right angle to the radius.

This is true of lots of educational shortcuts. I've noticed students misusing college tutors. They have the tutors do their homework and explain it, then they think they're good to go and ready for the exam. Problem is that any solution seems obvious after it's explained, but to have to come up with it yourself is a separate skill than simply understanding it.
Organizations now generate 10x the amount of code, because everyone can do it.

But we have exactly the same number of reviewers. How the heck are we gonna deal with it when we cannot use LLMs for sanity checking LLM code?

Like literally yesterday I had a not-technical person who used codex to build an optimization algorithm, and due to the momentum it gained I was asked to “fix the rough edges and help with scaling”.

The entire thing was trash (was trying to do naive search in a combinatorial problem with 1000s of integers, and was violating constraints with high probability, including the integrality). I had to spend all my day reviewing it and make a technical presentation to their leadership that it is just a polished turd.

It's basically a scheme letting less scrupulous people offload work on others while at the same time making good impressions to manager, PMs and CEOs who want to automate our job and fire us.
<< and make a technical presentation to their leadership

Honestly, this may be the only way to go about it.

The problem can probably almost certainly be solved to provable optimality using HiGHS or even CBC - the open source Python package PuLP comes with CBC.

If you want to be seen as the hero who solves things instead of the realist who says why other solutions won’t work, this could be worth exploring.

OR problems are hard because whoever try to vibe coding it probably don't realize they fall into a specific algorithm and can prompt llm to do thatl; what's worse is that even if you tell them so they won't be able to understand the math behind it and would much prefer their vide coding solution.
> How the heck are we gonna deal with it when we cannot use LLMs for sanity checking LLM code?

Unit testing. LLM's are very good at writing tests and writing code that is testable (as long as you ask it), and if you just check that the tests are actually calling the code and doing so with all the obvious edge cases and that the results are correct, that's actually quite fast to review -- faster than reviewing the code.

And you can include things like performance testing in tests as well.

We're moving to a world where we work with definitions and tests and are less concerned with the precise details of how code is written within functions. Which is a big shift in mindset.

"But we have exactly the same number of reviewers."

LLMs can help with reviews as well. LLMs are not too bad at reviewing code; GPT 5 for example can find off-by-one, missed returns, all sorts of problems that are localized. I think they have a harder time with issues requiring a higher-level global understanding. I wonder if in the future you could fine-tune an LLM on a big codebase (maybe nightly or something) and it could be the first-level reviewer for all changes to that codebase.

The same way that we dealt with Excel programming. Ignore it until it blows up, then spend hundreds of thousands trying to fix it before the company goes bankrupt.
> They’re doing sweet battle with bots that are more interested in getting their newly-generated test suite to pass than solving the user’s problem in the simplest way possible.

Makes having good tests even more important. One technique I've found super helpful for coding with agents is to make the agent do TDD.

Basically ask the agent to come up with the test cases first, manually review those to make sure they make sense, then have the agent game itself to write code to pass the tests. I feel like doing TDD on my own manually is very tedious but having it be AI-assisted helps me move a lot faster.

“If AI doesn’t literally take all the white-collar jobs over the next few years, we won’t just have a stock market bubble to deal with. We’ll have a drought of educated workers.”

Indeed. For me this feels like an “I saw the best minds of my generation” moment.

Vibe code hell is the wrong term to be used here. Vibe coding is used in reference to people now rediscovering low code and who have no interest at all in learning about nor owning the code the LLM generated.
> feel like they got it, and then freeze up the moment they had to write anything from scratch.

I had a deep rooted emotional response to this. One of the most gruelling and somewhat distressing experiences of learning to program was going through a tutorial, kind of getting it, then trying to make my own spin of the same idea and getting completely stuck.

But I’m also convinced that this gruelling process was the highest density learning I’ve ever done. I’ve learned much more since then, and a lot of considerably more complex things. But I’ve never matched the same density of learning.

The closest was probably high school math. That deeply uncomfortable “this hurts my brain and is stressing me out” feeling that I suspect isn’t normal for everyone.

(comment deleted)
Disclaimer: I use Zed Pro and GPT daily to code. I have been coding for money since 1989.

I view the rise of these tools and particularly efficacy in programming as an indictment against modern programming. The modern web is both amazing and horrific. If bureaucratic is "using or connected with many complicated rules and ways of doing things" (Britannica), then modern programming may be the ultimate poster child. Sure, we love to slap this on "civil institutions", but the fact that I need an automaton, answers based on probability, to guide me in how to navigate doing some of the simplest things, is pretty sad (IMO).

I used to counsel aspiring new programmers, "It's not about knowing a certain language or framework. Your single most important asset will be an aptitude to constantly keep relearning. Some trends will stand out along the way, but you'll never quit learning new tools and languages".

Maybe it's just my age, but it feels like we've overflowed at some point.

Early programming was too electrical, too mathematical, so pioneers sought to close the gap between coding and human think. And yet, after years of speculative funding, what we're left with, is a whole different set of problems.

> After all, it might just allow me to be more lazy, not more productive.

Is this not the true promise of technology?

Minor part of the article, but the thing about "tutorial Hell" is very true:

> Students would watch (or fall asleep to) 6-hour videos, code along in their own editors, feel like they got it, and then freeze up the moment they had to write anything from scratch. Classic tutorial hell.

This is why, across history, the tried and true method of learning a craft is an apprenticeship. You, the junior, tag along a senior. You work under a shop that is led by a senior-senior that is called a master. Apprentices become craftsmen, craftsmen become masters. AFAIK, the master does not 'offload' project guidance into non-craftsmen, it is an expected part of the craftsmen role to be project/product managers/owners.

I've said this a million times to close friends and at this point I'm only half joking. We, and I'm including myself in the 'developer' crowd although I may not deserve it, have really dropped the ball in not being a 'guild' since way back when. At least since the late 1980's; and certainly since before the Original Boom of software dev as a profession (I'm assuming it was late 90's? I know not)

(Although I suspect that if that were the case we'd have fewer developers throughout the 00s and 10s, which may have impacted the development of the field itself in unexpected, but likely negative, ways)

'Learning must be uncomfortable' - this is the key reason there are some professions which pay more than others. Some people are willing to bear the mental discomfort while others aren't. A lot of people are far more willing to bear physical discomfort but that's almost never monetarily rewarded.
I tried to find a representative phrase in the article that would make a good replacement for the baity title*, but I didn't find one, so I did a best guess. If anyone can suggest a better (i.e. accurate and neutral) title, we can change it again.

* in keeping with https://news.ycombinator.com/newsguidelines.html: "Please use the original title, unless it is misleading or linkbait."

When I was a beginner in school we got "hello world" as an example, and were on our own from there.

Of course things were much simpler. You had an editor, and a compiler that you ran from the command line. At some point you would learn about Makefiles, but not before you would appreciate their value.

And there was no CI, no source control, no IDEs, no TDD frameworks.

I can see that throwing a brand new developer into something like Visual Studio would be overwhelming. Even I find it overwhelming after three decades. I still use emacs and a shell.

Agree with everything in the article, but this isn't a new phenomenon. As long as I can remember (20 years, probably longer), for every student or professional who is seriously and diligently learning to code there are many orders of magnitude more who are simply there to take shortcuts and pad their resume. Vibe coding is just the latest iteration of this. This is why CS programs have such low graduation rates. This is why coding bootcamps don't produce many industry-ready engineers. Coding is hard, and the salaries of software engineers, even in the AI age, reflects this.