8 ms·
Teach yourself programming in ten years (1998)
- tomhow 2mo agoSeen here once or twice before... :) Teach Yourself Programming in Ten Years (1998) - https://news.ycombinator.com/item?id=44697007 https://news.ycombinator.com/item?id=44697007 - July 2025 (102 comments) Teach Yourself Programming in Ten Years (1998) - https://news.ycombinator.com/item?id=39001755 https://news.ycombinator.com/item?id=39001755 - Jan 2024 (302 comments) Teach Yourself Programming in Ten Years (1998) - https://news.ycombinator.com/item?id=33287618 https://news.ycombinator.com/item?id=33287618 - Oct 2022 (112 comments) Teach Yourself Programming in Ten Years (1998) - https://news.ycombinator.com/item?id=27411276 https://news.ycombinator.com/item?id=27411276 - June 2021 (115 comments) Teach Yourself Programming in Ten Years (1998) - https://news.ycombinator.com/item?id=20543495 https://news.ycombinator.com/item?id=20543495 - July 2019 (87 comments) Teach Yourself Programming in Ten Years (1998) - https://news.ycombinator.com/item?id=16574248 https://news.ycombinator.com/item?id=16574248 - March 2018 (51 comments) Teach Yourself Programming in Ten Years (1998) - https://news.ycombinator.com/item?id=9395284 https://news.ycombinator.com/item?id=9395284 - April 2015 (61 comments) Teach Yourself Programming in Ten Years (1998) - https://news.ycombinator.com/item?id=5519158 https://news.ycombinator.com/item?id=5519158 - April 2013 (86 comments) Teach Yourself Programming in Ten Years by Peter Norvig (2001) - https://news.ycombinator.com/item?id=3439772 https://news.ycombinator.com/item?id=3439772 - Jan 2012 (29 comments) Teach Yourself Programming in Ten Years - https://news.ycombinator.com/item?id=191235 https://news.ycombinator.com/item?id=191235 - May 2008 (19 comments) Norvig: Teach Yourself Programming in Ten Years - https://news.ycombinator.com/item?id=43243 https://news.ycombinator.com/item?id=43243 - Aug 2007 (7 comments)
- taneq 2mo agoIt’s been almost long enough to teach yourself programming three times!
- zkmon 2mo agoMaybe an yearly ritual?
- sunsetSamurai 2mo agoif you had started the guide on the first time it was posted, you'd be done by now!
- ebiederm 2mo agoI started before the guide was published. I am 40 years in on challenging myself and learning and improving and there remains so much more I have the opportunity to master.
- justaman123 2mo agoLyf short
- sunsetSamurai 2mo agoI myself am spending a lot of time leveling up, I recently realized there are so many things about programming and CS that I don't know about or only have a superficial knowledge. There's so much to learn but it's very rewarding.
- markus_zhang 2mo agoFrom my experience, just to say the thing that many such articles never mentioned, because the author has the innate ability anyway: Seek mental stability, or whatever mental state that can push you to programming for 10 years without completely burning you out. If you can’t even do some programming after a relatively easy work day, you are burnt out. BTW ^ is my state nowadays.
- taneq 2mo agoIt’s okay to recognise when you’ve had enough. If your workday involves programming, ours pretty normal (for me at least) to not want to do more programming at home. You gotta let yourself miss it a bit if you want to want it.
- MichaelMoser123 2mo agoWasn't Claude supposed to do all the coding by now? Did we have a change of mind or did we run out of tokens?
- LoganDark 2mo agoWas this known in 1998?
- crystal_revenge 2mo agoI 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. However seeing it today really drives home how big the gap is going to be in really understanding code in just a few more years.
- eventualcomp 2mo agoProgramming without writing, to me, feels like doing mathematics by reading proofs but not doing proofs. Which quite frankly works very poorly for me. I write code if, for nothing else, so that I can spot bad code/proofs with an easier time, rather than dealing with an equation that blew up in prod.
- zero-sharp 2mo ago>I don't personally know anyone who writes code any more (for work). Is this not the case for you? I hear this from time to time. But I still write code at my job. I'm not a software engineer and I don't work for a software engineering firm.
- my-next-account 2mo agoI do! A lot of the work I do is not simple CRUD, and I have to think about what's going on. Reading code doesn't do that to the same degree.
- jdw64 2mo agoThese 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-coding is the sub. This document probably held true until about 3 or 4 years ago. But since last year, I'm not sure. I have nothing to say other than 'Just do it.' People say vibe coding has security issues, but honestly, I have security issues in my own code too, from TTL and all that. In the end, with vibe coding, knowing the right security keywords and understanding the problems seems to come from experience anyway. Reading 'So You Want to be a Programmer,' I feel like conversations with other programmers and the whole process of being a programmer feel distant to me now. Since AI came out, I barely talk about programming with other programmers. It's not just me—most Korean programmers around me are the same. The reason is simple: those kinds of programming discussions make us realize how limited our knowledge is, since our understanding is often filtered through English sources and then translated into Korean. So we just end up not talking to each other about it. When I saw this document about 4 or 5 years ago, it felt like it was absolutely true. The environment has changed drastically, and reading this again now. Back then I treated it like a Bible, but not anymore. I realize that if you don't have a degree or aren't a native English speaker, there was always a limit to how much you could participate. These days, everything is changing so fast. As AI breaks down the English barrier, the quality of materials I can read has gone up, and I'm starting to think that even programming mindsets might change depending on language background. But if I were to advise someone starting programming from scratch today, I'd probably just tell them to learn through vibe coding and get familiar with programming keywords and black-box coding. Vibe coding has become the baseline these days. The domains individuals need to handle have become so broad that it's gotten more complex. In the past, being good at just one domain was enough to make a living. But these days, everyone wants to become a full-stack developer—something that used to be rare. Even then, full-stack developers had a clear front-end or back-end bias, with some areas being shallow and others deep. Now, people are expected to be good at everything. If you want to become a true expert, I'd say keep hand-coding and focus on a single domain. But if not, I'd say just go all in on vibe coding. Use it a lot, and build your own worldview through it The feeling of hand-coding and vibe coding is so different that I can't help but tell people to practice both. They complement each other, but they don't really feel like they're connected or intertwined. They rely on different kinds of intuition. Still, I think I'll keep hand-coding. Not because it's more productive, but purely because I enjoy it as a hobby. AI writes better code than I do, but hand-coding is still enjoyable enough as a hobby
- yoyohello13 2mo agoOne 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 able to forgive LLMs for that. It really took away something I enjoyed.
- fancyswimtime 2mo agosame camp
- afry1 2mo agoDid 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.
- beremaki 2mo agoThey are talking about the enjoyement. AI did disolve a lot of the meaning and magic behind pure code exercises. What felt like a creative endeavor now feels and is even more treated by society and other software engineers as grossly mechanical. And to me too that hurts. I think a lot of people whose identity or passion was tied to this feel like that. It is very much a "what is painting purpose now that photography exists ?" or "what is craft in an era of industrial mass production" moment for some of us. There are answers but finding them require exploration and being willing to change what we are I think that's their deeper point
- sheepolog 2mo agoSo 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.
- throwaway17_17 2mo agoWhen I decided to really learn how to program, after dabbling in very basic C++ from books and using BASIC this article and Eric S. Raymond’s ‘How to Become a Hacker’ [1] (CATB is struggling to load at all these days it seems) were two of the first articles I found. While HtBaH was probably more influential on me immediately, Teach Yourself was a great appetizer for the concept of pacing myself in my learning and in the choices I made. With all the “AI” has made coding/learning to code a dead end and unnecessary crud being peddled currently I don’t know if people who want to actually learn to program are going to find resources that can be as motivating as this and other articles from `the before times`. It leaves me slightly bummed out, but in my less pessimistic moments I think motivated learners are going to see through the hype and find these types of resource anyway. On a side note, the Norvig’s articles about implementing a Scheme in Python were my first foray into designing and implementing programming languages, compilers, and interpreters which really shaped my interest all the way through to today. 1) http://www.catb.org/~esr/faqs/hacker-howto.html http://www.catb.org/~esr/faqs/hacker-howto.html
- axus 2mo agoIt'd be embarrassing if you have to spend $10 in AI tokens for it to fix one line that you could have fixed quicker yourself for free. Not sure if the savings add up enough to offset the investment in learning to program.
- teiferer 2mo agoI wonder if people writing these comments actually do this hands on. That's because I do and a one line fix rarely costs anything but cents. Unless you first need to let it figure out which line it is, but that's not a fair comparison because you'd also first need to find out. And if it takes you an hour then instead paying $10 could be a reasonable price to pay.
- imdsm 2mo agoOnly way it's costing $10 is if you're putting your whole code base in without without any work or guidance, which is what people who don't use AI day to day think is what happens.
- whattheheckheck 2mo agoIt ain't gonna be 10 bucks for long
- superb_dev 2mo agoDoes their comment not read as hyperbole from someone frustrated at the state of the industry?
- deleted 2mo ago[deleted]
- ramon156 2mo agoOn the other hand, sometimes the hardest bugs are only a few lines of code and days of debugging. If an LLM can do it in a day, you've saved time.
- coolThingsFirst 2mo agodont waste your time, it's a dead field.
- bigfishrunning 2mo agoProgramming is only dead for people who had contempt for it in the first place. Turns out that's most programmers and almost all managers.
- primitivesuave 2mo agoFWIW, Peter Norvig also gave an updated take on what programming will look like with LLMs around 2 years ago. It did give me some hope back then, but with the development of Fables and Kimis and Sols I think it's truly anyone's guess where the art of programming will go. https://www.youtube.com/watch?v=ia6aJIplmtc https://www.youtube.com/watch?v=ia6aJIplmtc
- zerr 2mo agoWhat most miss today is DX - Developer Experience, many (most?) devs don't want to become Prompt Engineers. Another thing is that not many can afford Fable or similar and I don't think prices will go down, since it is already heavily subsidized?
- noduerme 2mo agoI've always spent 90% of my work time thinking and sketching what the architecture should be to solve a problem. I find that once I've worked that out, it's actually still faster for me to code it than to try to explain it and refine it in prompts. And the code ends up more succinct and covers the edge cases I've already considered. If I need a fast script to do one thing, or unit tests, sure an LLM is faster at writing those. But for clean code, nothing beats knowing what you're going to write and just writing it yourself.
- kakacik 2mo ago... and 10x that for long term maintenance and evolution of the code. When you read your code later, understanding of it comes more naturally/faster than somebody else's code (at least for me). I break down bigger problems into small chunks in one way, other folks may view things differently.
- witx 2mo agoExactly. At my previous work we spent an awful amount of time planning and architecting the solutions and refining them. No matter the person who prompted or the model used, the solution was never close to satisfactory. Layers of unnecessary abstraction, weird decisions (like wth it used triple pointers once) hard to debug issues and obvious race conditions. Segfaults are through the roof and people are burned out and gasping hard to solve the bugs. I called their attention to this at the time and I was ignored and a bit laughed about. I left and couple months later I know others are too.
- incanus77 2mo agoWhy is this marked as 1998 when it references Khan Academy and Go, among other things?
- flohofwoe 2mo agoOn Wayback machine references to this post (a much shorter version though) go back to 1998, this is the oldest reference: https://web.archive.org/web/19980206223800/https://www.norvig.com/21-days.html https://web.archive.org/web/19980206223800/https://www.norvi...
- cubefox 2mo agoSo he changed the text as time went on, since the 1998 version doesn't reference Khan Academy. Though the "(1998)" might still be justified if the changes are minor.
- dirkc 2mo agoI see a reference to Khan Academy, but not Go?
- el_io 2mo ago> Learn at least a half dozen programming languages. Include one language that emphasizes class abstractions (like Java or C++), one that emphasizes functional abstraction (like Lisp or ML or Haskell), one that supports syntactic abstraction (like Lisp), one that supports declarative specifications (like Prolog or C++ templates), and one that emphasizes parallelism (like Clojure or Go).
- dirkc 2mo agoThanks, clearly my caffeine intake is at issue
- KaseyKim 2mo ago[dead]
- zombot 2mo agoIn ten years. The kids may not believe that, but you could give realistic timeframes without getting hanged for it. In the age of LLMs, if you weren't done yesterday, it takes too long.
- deleted 2mo ago[deleted]
- deleted 2mo ago[deleted]
- madhu_ghalame 2mo ago[dead]
- lumos_huang 2mo ago[dead]
- lumos_huang 2mo ago[dead]
- weiliddat 2mo agoHm since the discourse is mostly on how AI changes this, I still want to make a point that it's worth learning programming (and more), even if I'm a huge proponent of AI being economically valuable. Humans at the moment are still better at building on our own knowledge and compounding our effort:output ratio, due to our superior plasticity. See https://joyemang33.github.io/blog/2026/humans-dont-just-sample/ https://joyemang33.github.io/blog/2026/humans-dont-just-samp... for a small experiment. That's why for programmers experienced with a particular language/codebase/domain, it feels like minimal effort to know where and what to change. "Why use LLMs when I can do it in 10 minutes"? Of course, relying on our long term memory instead of re-ingesting the code, is also a problem for having assumptions that don't get updated, e.g. revisiting a codebase that's been updated by many others. With the rate of change/churn of codebases I'm wondering if this is naturally forcing us to use AI anyways, since it's really hard to keep track of a lot of code changes by AI as a human. Once you start down the path of not reading code yourself, the friction to start reading code gets higher in a feedback loop. I know people (incl. myself) who are still reading code in their own coding/agent sessions, but that's unsustainable in an organizational setting - you won't be able to ingest N'0,000s of LoC of changes every week if there is no incentive to do so. Is that a good thing? It's unlikely LLMs in their current state will be "neuroplastic" for a single person's use case (mostly market reasons - cost of owning, running, tuning models will likely be unattainable for the foreseeable future). In a few generations, this would be a total surrender of all foundational coding to LLMs (unsure about knowledge work in other domains). Will text files with superintelligent models be enough to encode long term and broad understanding of a domain? Is it necessary if a model is superintelligent? What if a person/nation/species loses access to LLMs through supernatural / political reasons at that point? Will it be like losing the last remaining COBOL programmers to your mainframe? I'm sure we're resilient enough to re-learn all of that, but it will be a huge crutch like never before. All that to say, it's still worth learning programming, and doing some things by hand, even if it's not "economically valuable" (at least on the surface). Even with web frameworks, it's still worth manually plumbing between frontend/backend/database. Even with interpreters and compilers, it is still worth understanding and doing a bit of assembly. Even with assemblers, it's still worth understanding machine code, CPU and architecture quirks. It's worth looking at the historical artifacts (both senses of the word) and understanding intents, constraints, and creativity (as another comment [1] has more beautifully said). Two "further than programming" courses that also embody the spirit of the article (get interested, hands-on, play) have been impactful on my appreciation of computing systems are nand2tetris [2] and OS in 1000 lines [3]. Both are "easy" in the sense that they make certain design decisions so you don't have to dig through thousands of pages of manuals. If you wish, during or after the process, you can explore specific concepts further. It's broken down in the right pieces and checkpoints, so you get quick feedback on whether something is working or not. It's still very much a puzzle you have to solve, but the right difficulty/complexity ladder (great instructional design). [1] https://news.ycombinator.com/item?id=49093468 https://news.ycombinator.com/item?id=49093468 [2] https://www.nand2tetris.org/ https://www.nand2tetris.org/ [3] https://operating-system-in-1000-lines.vercel.app/en/ https://operating-system-in-1000-lines.vercel.app/en/
- emmelaich 2mo agoThe Abstruse Goose comic mentioned: https://archive.is/HEHmt https://archive.is/HEHmt
- hdivider 2mo agoI think what doesn't get surfaced enough is that the cost of AI tokens is likely to decrease as new computing hardware gets scaled, such as neuromorphic (or later, photonic) computing. To assume the current cost of Claude Code and the like is largely fixed is not likely to be accurate. The economic incentive to lower the cost of ML compute at both training and inference is very strong -- and likely even stronger once the bubble bursts. Once the compute cost is much lower, and the systems more advanced as well, then the future of programming changes. The role of the human in this may be more like: we need one senior experienced full-stack, and like 1-3 others, to build and maintain large complex apps reliably.
- dzonga 2mo agogood thing - these articles keep getting shared so often. yeah people's attention might be shot. but it's still a blessing to those who read it the first time, and the ones that re-read it. the unfortunate thing in the 'llm' era - we seem hell bent on destroying the foundations of knowledge.
- alt227 2mo ago> the unfortunate thing in the 'llm' era - we seem hell bent on destroying the foundations of knowledge. I disagreee with this. I personally have filled large gaps in my underlying concept knowledge through deep conversations with LLMs. Its so easy to learn huge amounts when you can pull on whatever thread that sparks your imagination. Just being able to keep drilling down into the core of a complex subject without having to stop and manually find the next piece of information is incredibly addictive to me. It gives me hope that LLMs can actually aid humanity instead of detracting from it.
- raptdev 2mo agoAgreed. Use of LLM with a true focus on learning, not allowing it to give you the answers but having it guide you through structured reasoning about new concepts, is very useful.
- rixed 2mo agoTrue! But it is also true that you learn better by doing yourself. The knowledge acquired by chatting endlessly is vast but shallow, that acquired by researching yourself and practicing is deep but narrow. We should be equally afraid of both.
- DavidPiper 2mo agoWhen I was 11, I pulled a book off the shelf at the nearby library called "Teach Yourself C++ in 21 Days". I remember thinking the title was clearly nonsense, but if I could even learn a fraction of it, that would be pretty cool. We didn't have a computer at home yet, so I wrote out the exercises by hand. I think I got about a third of the way through. I knew (debatably) what inheritance was, that a Dog is an Animal, etc. School, university, and 10 years of career later across multiple stacks and companies, there's still a heap I don't know, but you can drop me in a lot of codebases and I'll figure it out. > So go ahead and buy that Java/Ruby/Javascript/PHP book; you'll probably get some use out of it. But you won't change your life, or your real overall expertise as a programmer in 24 hours or 21 days. True, but it DID change my life.
- ecshafer 2mo agoThere was a webcomic abtruse goose that made fun of that book by humorously showing what you would have to do to get it done in 21 days. https://gabrielcoarna.com/2010/11/05/how-to-teach-yourself-c-in-21-days/ https://gabrielcoarna.com/2010/11/05/how-to-teach-yourself-c...
- chux52 2mo agoI had this same book, only made it to chapter 3 or so (making an OK button) is how I remember it. Ended up in Accounting, dabbled with Python and now back to programming with Cursor/Claude. It did get me just far enough so I could see that computers were complicated but not actually magic and like you did change my life.
- rushil_b_patel 2mo agoGreat read
- rrvsh 2mo agoI went down a five hour rabbit hole learning about jwz as a result of this post. What an interesting guy - if I knew about the DNA lounge a week earlier, I would have visited when I was in the city
- FinnLobsien 2mo agoI totally agree with this when it comes to skill acquisition and deep expertise, which I care about more with skills than whatever rewards I might get for that expertise. It's just important not to conflate this deep expertise with the milestone you need to get a job or something. Especially when combined with expertise in other fields, even very little effort can let you advance a lot.