Live data from Hacker News

Teach yourself programming in ten years (1998)

norvig.com

121–130 of 142 posts

Re: Teach yourself programming in ten years (1998)

#121
post #12

These days, I'm not sure anymore. I learned through self-study, reading documents. I don't have a degree, and I don't have the exceptional talent to be involved in language standardization. Everyone around me codes with AI, and most of them produce better results than I do. That's natural. I'm good at some things, but I'm bad at many others. I still hand-code occasionally, but now the main is AI coding, and hand-codi…

I have used AI almost exclusively for a year, but I was programming by hand for almost 30 years before that. I don't think there is any difference between going from assembly -> C -> Java, TypeScript, C#, Go, etc, and taking the next step to AI. It is just another intermediate abstraction layer that allows you to work at larger scale. Programming with AI enforces some good disciplines, which were always true, but cou…

There is a massive difference between an LLM and a compiler. Compilers work deterministically, an LLM does not. You cannot ever trust an LLM to actually produce working code and must review it all yourself, as all models (yes, even $latest_model) will happy insert hallucinations into random places in the code. But once you take the time to do that, you have not saved any time and could've just written it yourself. That is why LLMs are not actually useful for programming, contrary to the hype, unless you want to just YOLO stuff out there without caring if it works.

Re: Teach yourself programming in ten years (1998)

#122

Wasn't Claude supposed to do all the coding by now? Did we have a change of mind or did we run out of tokens?

I don't personally know anyone who writes code any more (for work). Is this not the case for you? The distinction I see now is between teams that read PRs and teams that don't. I still think the former is a good approach... for now, but I don't expect this will necessarily be the case in a year (or less). This article was such an inspiration to me when I was younger, and the advice, for that time, was very correct. H…

I do not know anyone competent who stopped writing code. You have to write the code yourself if you want good results, or spend so much time reviewing the clanker that you may as well have written it yourself.

Re: Teach yourself programming in ten years (1998)

#123

Earlier quoted context omitted.

Because I find that an interesting question. There are lots of experimental and somewhat esoteric things out there. And sure, it can be fun learning about them. But the proof is in the pudding, and if something is rarely useful for anything in production then it's more of an artisan entertainment factor and less of an actually useful programming language.

> But the proof is in the pudding, and if something is rarely useful for anything in production then it's more of an artisan entertainment factor and less of an actually useful programming language. That's not true at all. In first place, what you can think is good for production, i can think otherwise.. Beside it there is a lot of things/paradigms/languages that we learn, to help us to either understand better the b…

[dead]

Re: Teach yourself programming in ten years (1998)

#124
post #20

Earlier quoted context omitted.

Did AI take it away, or did you give it away? Now that you've made the Faustian bargain at this low low introductory price, how long until they start ratcheting up the price? How long will you be able to bear it? You're still allowed to do things the old fashioned way you know. Given the rapid skill degradation that results from LLM-driven coding usage, I'd recommend it if you want to retain any skill at all.

So much life enjoyment is tied to feeling competent and respected. Seeing a new, more talented challenger on the horizon is bound to be discouraging to some extent. It's like going from high school to college all over again: you used to be the top of your class, now you're surrounded by people just as competent as you.

To be happy as you age, you have to embrace being a clueless newbie. Some people seem very pessimistic that there is a method of creating networked software systems in a high quality way with LLMs, but it seems no different from many other changes - there are salient technical details that matter, and there is boilerplate, and as all the tools and problems shift, we find ways to highlight the stuff that matters and reduce the problems of boilerplate. I like GCC and haven’t run into a compiler bug in decades, nor looked at disassembly much in this millennium (except some go allocation stuff that puzzled me). I feel myself gaining skills to do that with LLMs in just the same way that higher power editors changed my behavior.

I am pretty old, and it does take conscious effort to give up my cherished skills and plunge into new things professionally, but it’s the only way for me. And I am not exaggerating “clueless” here - I continue my practice of expertise via making all the mistakes. When I am new to something and there are others not new, I lean on them and have my lacks very clearly seen. When I am more isolated, I take pains to have very conservative release plans.

But it is worth it: I get that pleasure of understanding a lot more often with new stuff than with the same old.

Re: Teach yourself programming in ten years (1998)

#125

One of may favorite things to do was to spend some time tinkering around to learn a new programming language. I collected quite a few and it was fun to learn new paradigms and how to organize programs. But now since AI… idk I just can’t do it, it seems just completely useless in the age of AI. Like getting better at the technical aspects of programming just doesn’t feel important anymore. I don’t think I’ll ever be a…

It's not true at all. I recently vibe coded a REST API in Golang even though I never wrote any production Go code. However, I had to make copious use of my previous experience as an engineer to achieve quality. You can see this in the real world. The people who are getting the most out of AI are the ones who already have experience coding without AI. CEOs don't want to admit it but AI can't code anything non-trivial…

I rewrote a very slow backup lambda from Python, which I know well, to Scala, which I have done like three sections of the intro to scala exercises, in about 4 hours, totally vibe coding, but I know enough to skim it and see it is doing things a sensible way, and to get error handling and retries in the robust way. (New job they use Python for slow stuff and Scala for higher performance things).

Re: Teach yourself programming in ten years (1998)

#126

Earlier quoted context omitted.

It's not true at all. I recently vibe coded a REST API in Golang even though I never wrote any production Go code. However, I had to make copious use of my previous experience as an engineer to achieve quality. You can see this in the real world. The people who are getting the most out of AI are the ones who already have experience coding without AI. CEOs don't want to admit it but AI can't code anything non-trivial…

I agree with you, but now we have managers pushing code to production, people that never coded but are "IT versed"..so you get PR/MR not just with code, but with PR/MR comment written by Claude, Commit Message written by Claude.. all super verbose, and you know the people operating Claude, have no clue. Super dangerous combination. But part of the reality.

My son works in a place where this happens pretty regularly, and it actually increases his job security to clean it up.

Re: Teach yourself programming in ten years (1998)

#127
post #118

Earlier quoted context omitted.

Thanks for this. Another perspective shift: do real things in the real world. Read physical books, make art with your own two hands, garden, go for a walk. I’m going to re-learn cursive handwriting. No real reason other than my handwriting is bad and I want to incorporate more writing into my life. The recent post here about Neal Stephenson was an inspiration.

link, please? :)

https://news.ycombinator.com/item?id=49022152

Re: Teach yourself programming in ten years (1998)

#128

One of may favorite things to do was to spend some time tinkering around to learn a new programming language. I collected quite a few and it was fun to learn new paradigms and how to organize programs. But now since AI… idk I just can’t do it, it seems just completely useless in the age of AI. Like getting better at the technical aspects of programming just doesn’t feel important anymore. I don’t think I’ll ever be a…

> learn a new programming language. I collected quite a few and it was fun to learn new paradigms Let's be honest here: how many actually distinct paradigms are we really talking about here? I challenge you to name more than 5 which are not just flavors of the same core approach. Bonus if they are actually all relevant for production software.

The old ones are so ingrained it seems hard to imagine they were new at one point. But generally, assembly, top down programming (structured functions, modular hierarchies, no goto), bottom up programming (easiest to feel in Lisp or Python, doable in C after your first few programs, and arguably the basis for agile, the real version), object oriented (keep you verbs in your nouns), functional as pure compute (useful even in C) and functional as a bunch of chained standard meta functions (Haskell and ML and those ilk), closures/let over lambda (super powerful Lisp and what I think let JavaScript become excellent; let your verbs have the nouns they want), repl oriented programming (Python and lisp, and as a very fast way to explore a new interface from the bottom up), stack languages (Python, forth), interpreted VMs (Python again and JVM at first, many small weird examples at work), wrapping IO around poll/Linux type mechanisms (Node, gevent, high performance C), threads (so many thread per request frameworks), green threads(go, modern Java), declarative languages (prolog and Terraform), embedded languages for easy customization (TCL/Lua).

Re: Teach yourself programming in ten years (1998)

#129

Earlier quoted context omitted.

> Bonus if they are actually all relevant for production software. Why it should be relevant for production software?

Because I find that an interesting question. There are lots of experimental and somewhat esoteric things out there. And sure, it can be fun learning about them. But the proof is in the pudding, and if something is rarely useful for anything in production then it's more of an artisan entertainment factor and less of an actually useful programming language.

https://paulgraham.com/avg.html

Re: Teach yourself programming in ten years (1998)

#130
post #96

Earlier quoted context omitted.

Cutting-edge models are capable of much more than generating CRUD apps and understanding the details is orthogonal to whether you wrote the lines yourself or not.

>understanding the details is orthogonal to whether you wrote the lines yourself or not Reading the code does not give you the knowledge of the 10 different approaches you would have tried and failed before coming up with that code. Why exactly a piece of code is the way that it is cannot be determined by just reading the code. Reading a mathematical proof does not give you any meaningful understanding of it.

You haven't considered that I probably already discussed 10 different approaches with my agent before authorizing a particular implementation. Or that I didn't ask about alternatives during review. You're confusing physically coding with thinking. You can still think just fine without writing code yourself.

If you are experienced, attentive, curious, willing to explore, etc., that doesn't change after an LLM allows you to deeply discuss any concept at will, quickly try different prototypes and zone in on the correct implementation. You will use these tools to their full extent.

> Why exactly a piece of code is the way that it is cannot be determined by just reading the code.

If you maintained a good commit history and your code is self-documenting and you're not capable of understanding and navigating code you read, you can still literally just ask the LLM to explain the code within the context of the codebase. They are extremely good at that exact task. They will give you as much as you give them. If you want to know, and can understand, the nitty gritty, you can do that and no one is stopping you.

> Reading a mathematical proof does not give you any meaningful understanding of it.

Again: these things can function as personal tutors. Run the proof through an LLM and ask it what you care about. Furthermore, there are plenty of elegant proofs you can read which confer "meaningful" understanding.

Before just assuming that everyone telling you these tools are useful is less capable or experienced than you, it's worth considering if it's actually you who needs to maintain an open mind and attempt to learn from others.

Post reply on HN