Hacker News new | past | comments | ask | show | jobs | submit
I've been wondering if there would be a benefit to inverting how we teach subjects now. Previously we would teach from the bottom, and build up. Semi-colon goes here, curly brace goes there, and then build up to architecture, systems, etc.

But this doesn't seem to make sense when someone comes to a topic with an LLM in-hand. They need to know high-level techniques, architecture, best practice, etc. As they pursue the topic they start to get down into the details, although probably never learn to do it fully independently.

I quite like this view because it paints a somewhat optimistic way forward from where we are now.

You can ask LLMs about high-level techniques, and their answers will usually be good enough. What you can't get from LLMs is the taste and judgment, which you can only obtain by having a strong CS base and coding manually for years.

High-level techniques were never a problem. You could Google tens of articles on this topic. They are useless too, it's like learning how to drive a racing bicycle from reading a book. Sure, you will know a lot about nuances, but you will fail miserably when it comes to a real race.

The other day I just wanted to loop through characters in a std::string to copy data to a new string with a few escape characters (sending to peripheral device). Simple enough task for AI. I got a coroutine monstrocity back, with copies to std::array and a range based iterator, since I specified C++23. If I specified C++11, I would have received a: char p = src.data(); while (p) { … p++; }

I had the experience to keep calling out AI to simplify and downgrade the solution to something primitive, which ended up smaller, faster, easier to maintain. Juniors with real world experience would not bother, they’ll take the first working AI result.

taste and judgment, which you can only obtain by having a strong CS base and coding manually for years.

I disagree, the definers of taste; art and food critics, movie and book reviewers, don’t need to have learned the craft by doing. Taste is a separate skill.

No one seriously expects a food critic to be able to cook a Michelin-starred meal. The job of that kind of critic is to be insightful and entertaining, and it's very different to the taste required to create top quality food, which is a combination of solid technical skill and creative flair.

Taste in coding is a combination of insight, experience, native talent, technical skill, and flair. Tasteful coding produces clever but straightforward minimal elegant solutions that an average developer can't imagine but can adapt and maintain.

loading story #48398002
I'd say taste is a consequence of lifestyle, which is learned by doing. And art critics often have bad lifestyle, which is visible in their bad taste. When art is virtual life, it would define a lifestyle, which is adopted by doing, in its turn producing taste.
Agreed.

Taste implicitly requires discipline of what one chooses to expose themself to and what not to.

> which you can only obtain by having a strong CS base and coding manually for years.

I hope this isn’t the case. It is the route I took, but it also doesn’t seem to be a likely route going forward. Strong CS grounding is feasible for sure, but I have a hard time believing that a meaningful number of people will be spending the requisite years coding manually.

Exactly. Repeating or rephrasing a definition is trivial, teaching someone is not.
I can't speak for other disciplines, but for math and CS, both with a really heavy focus on abstraction, the final result of learning is to build a nice intuition on top of the abstractions we find useful/expressive. And to build the intuition, the old, usual, and perhaps the only way is to see and practice a lot of concrete examples, after which the motivation of building some abstraction can be understood, and after which the abstraction itself can be fully grasped.

e.g. The "group" abstraction requires one see a lot of int, polynomial, modular arithmetic etc. before knowing why we want such a thing. It's unskippable.

This idea sounds good at first, but if you look closer, it would just make workers, not experts who really understand. What we could do, and already do, is tweak the learned abstractions. In our field, it's easy to see: most of us first learned about computing abstractions, not how processors actually work, or started with Java, not assembler. Plus, you can't teach math from top to bottom.
> As they pursue the topic they start to get down into the details, although probably never learn to do it fully independently.

It's hard to claim one has mastered a subject without independent command of its fundamentals. A less charitable take on this future is that students only learn to hand-wave answers and correspondingly cannot evaluate statements beyond "sounds about right".

> Semi-colon goes here, curly brace goes there, and then build up to architecture, systems, etc.

If that's happening, that would be a weird way to teach CS in my opinion.

In my undergrad program, languages and syntax were learned on your own. Class material and lectures were all conceptual.

I keep trying to convince people that English majors and Philosophy majors will benefit the most from LLMs. English majors in particular, have been trained to be VERY exact in how they word things.

That awareness of how to structure the English language, it will benefit those who use LLMs.

Then again, maybe someone will just make a LLM that’s built to turn poor English and poor reasoning into excellent English and excellent reasoning. Maybe this is just a technical puzzle that needs solving.

I disagree with you, for the very reason you give:

> Then again, maybe someone will just make a LLM that’s built to turn poor English... into excellent English

That's already been done, for some (pretty weird) definition of "excellent".

I work with, or at least in the vicinity of, someone who is very good at getting work out of LLMs. He has a whole system of CLAUDE.md files and skill files and things. He makes TONS of typos. When I first saw that, I was itching to go in and fix them all, it seemed viscerally wrong to be adding an extra layer of correction required between the instructions and the LLM's behavior. But in practice, I don't think it mattered at all. The LLM didn't care. Typos in particular might require a bunch of RLHF in the chatbot, but my hypothesis is that the LLM is already mapping messy human input to the nearest surface of some high-dimensional manifold and the added noise of typos is inconsequential to where it ends up (as long as there isn't any real ambiguity -- though even there, you could probably construct cases where that would help rather than hurt!)

Typos are different from sloppy writing, but I think the AI companies have put a lot of work into training these chatbots on dealing with typical non-English major writing with all of its imprecision. Also, it's easier to construct cases where that imprecision and sloppiness would help rather than hurt: a mistake in the input that is common enough to show up in the training data is going to be a good match for the needed correction as well as associated corrections. The precise language could easily result in the LLM overestimating the user's competence.

That doesn't address whether an English major's careful composition would help for hard tasks where getting the specification right really matters -- perhaps that was your point? I guess it's an open question whether "boiling away the typos" and "boiling away a poorly articulated specification" are related enough.

I don't think you can learn high level techniques or architectures without first understanding the basics first. This means boring boiler plate coding.
I’m not sure. We’ve always had to pick the level of abstraction we start teaching at. Voltages, transistors, registers, assembly, C, etc. This feels like it could just be a progression of that.