It's not so much that, although I'd argue that LLMs can certainly teach you some bad habits from time to time, much more so than Deep Blue ever would.
Rather, it's because early on, when beginners are learning the basics, they need to do the hard work of figuring stuff out so they develop problem-solving skills. It's not the code-writing skills they need to develop--that's easy. It's the problem-solving skills.
If I could figure out a way to grade on effort rather than correctness, I'd do that every time. Bust your ass and get a program 80% working and learn a ton doing it? You get an A. Spend 2 minutes copying ChatGPT output of a perfectly-working solution? F.
The effort is where you build the skill. And the skill is critical problem-solving. Having someone (or something) else do that work does not improve your skill.
Now, eventually, when you get to be better than the AI (and it's not hard to do that), stuff that you find easy is not longer beneficial to your learning. I've implemented linked lists a hundred times by now; I no longer learn anything from doing it. When you're that experienced with a subtopic, then sure, get ChatGPT to write it, and you verify it.
Going back to the weight lifting analogy, once you've been lifting the 2 kg weights for a while, you're not going to get much out of it. At that point, if the 2 kg weight must be lifted because it's part of your job description, have your robot do it. Meanwhile, you go on to the 4 kg weights and build muscle.
Maybe we crossed the Rubicon and there's too much opportunity cost to learn how to implement the fundamental DS&A. Instead of memorizing the ~10 lines of code for binary search, memorize the words "binary search". Thanks to the C compiler, we don't have to remember to push our registers and then jump to the subroutine. I think LLMs provide similar benefits. It frees your headspace for other stuff.
The analogy isn't perfect since a compiler will error if it can't create valid output. LLMs hallucinate. But still. Time is limited. I don't think it's a good idea to spend your formative years learning how to manage registers.
We don't tell chemists they shouldn't spend their formative years learning how to manage electron orbitals. You need to understand the fundamentals of how a computer works, or else you get people who write software with the wrong mental model of the machine (namely, that it's some sort of inscrutable, magic black box). Learning the fundamentals of the machine teaches you that is not, in fact, magic at all, it's just a lot of simple circuits built on top of each other, providing what we know as computation. Will you sling bits in assembly all day at your job? Probably not, but that knowledge is invaluable to being a better programmer.
We make surgeons learn anatomy. We make hardware engineers learn physics. I think we can expect programmers to learn how computers work.
This response turned into more of an essay in general, and not specifically a response to your post, marginalia_nu. :)
Sharing information, to me, was what made things so great in the hacker culture of the 80s and 90s. Just people helping people explore and no expectation of anything in return. What could you possibly want for? There was tons of great information[1] all around everywhere you turned.
I'm disappointed by how so much of the web has become commercialized. Not that I'm against capitalism or advertising (on principle) or making money; I've done all those, myself. But while great information used to be a high percentage of the information available, now it's a tiny slice of signal in the chaff--when people care more about making money on content than sharing content, the results are subpar.
So I love the small internet movement. I love hanging out on a few Usenet groups (now that Google has fucked off). I love neocities. And I LOVE just having my own webpage where I can do my part and share some information that people find entertaining or helpful.
There's that gap from being clueless to having the light bulb turn on. (I've been learning Rust on and off and, believe me, I've opened plenty of doors to dark rooms, and in most of those I have not yet found the light switch.) And I love the challenge of finding helpful ways to bridge that gap. "If only they'd said X to begin with!" marks what I'm looking for.
I'm not always correct (I challenge anyone to write 5000 words on computing with no errors, let alone 750,000) or as clear as I could be, but I think that's OK. Anyone aspiring to write helpful information and put it online should just go for it! People will correct you if you're wrong[2] :) and you'll learn a *ton*. And your readers will learn something. And you'll have made the small web a slightly larger place, giving us more freedom to ignore the large web.
[1] When I say "great information", I don't necessarily mean "high quality". But the intention was there, and I feel that makes the difference.
[2] It can be really embarrassing to put bad information out there (for me, anyway). I don't want people to find out I don't know something and think less of me. But that's really illogical--I don't even personally know my critics! And here's the thing: when the critics are right (and they're often right!), you can go fix your material. And then it becomes more correct. After a short time of fixing mistakes critics point out, you get on the long tail of errors, and these are things that people are a lot less judgmental about. The short of it is, do the best you can, put your writing out there, correct errors as they are reported or as you find them, and repeat. I cannot stress how grateful I am to everyone who has helped me improve my guides, whether mean-spirited or not, because it's helped me and so many others learn the right thing.
You're absolutely correct, of course. And part of that is because the degree that you get when you want to be a programmer is a "Computer Science" degree in the US.
I've added a clarification to the first chapter about the naming and rationale.
I think that's a valid point. The naming came from the fact that the (my) students reading this are in a degree program called "Computer Science". But I do thing that's worth a mention in the guide. Cheers!
In some places, free market healthcare is great. Dermatologists, dentists, chiropractors, things like that. And part of the reason it's great is because you get to shop around and people fight for your business.
In other areas, like heart attacks and strokes, you do not get to shop around. And you pay whatever they say you will pay. When those are the circumstances, there is simply no free market. And since no one is competing for your business with lower prices in that case, you do not get to see lower prices. They charge whatever they can maximally wring out of you.
In those places, free market healthcare is great because they don't have healthcare practitioner cartels and can pay their doctors middle-middle-class salaries instead of investment banker salaries
The average cost per person is more in the US (quite a bit more), but as with all statistics the devil is in the details. In a public system like Canada, while the average cost for health care per person is lower, if you make above average income you are paying more than average in taxes, and hence more for (everyone else's) health care. Combine that with a far lower average income across the whole country than even the poorest US states, and the relative impact on you can actually be far higher. In my case my effective tax rate was about 45%, which meant I was paying 4-6x average taxes, most of which went to health care. I haven't lived in European countries, but it's virtually certain to be a similar story.
Our incomes are far higher too. Health care in the US isn't perfect, but public systems aren't either. The flaws of private health care seem to be a favorite target by people who are biased against the US.
Because we pay less tax for other things; for example, making post-secondary education affordable. Our taxpayer-funded system for healthcare-over-65 costs us more than Germany's taxpayer-funded system for healthcare-over-0.
reply