<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/teach-yourself-programming-in-ten-years-lehjvh5ok" -->

---
title: Teach Yourself Programming in Ten Years | daily.dev
description: Peter Norvig's classic essay argues that the popular '24 hours' or '21 days' programming books are misleading, and that true programming expertise requires...
canonical: https://daily.dev/posts/teach-yourself-programming-in-ten-years-lehjvh5ok
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Teach Yourself Programming in Ten Years | daily.dev
og:description: Peter Norvig's classic essay argues that the popular '24 hours' or '21 days' programming books are misleading, and that true programming expertise requires...
og:url: https://daily.dev/posts/teach-yourself-programming-in-ten-years-lehjvh5ok
og:image: https://api.daily.dev/og/posts/LeHJvH5OK.png
og:image:alt: Teach Yourself Programming in Ten Years
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Teach Yourself Programming in Ten Years

**[Hacker News](https://daily.dev/sources/hn)** · 13 min read · 2 upvotes · 2 comments

## Summary

Peter Norvig's classic essay argues that the popular '24 hours' or '21 days' programming books are misleading, and that true programming expertise requires roughly ten years of deliberate practice. Drawing on research by Bloom, Ericsson, and others, the essay outlines a practical recipe for becoming a skilled programmer: staying curious, writing lots of code, collaborating with others, learning multiple programming paradigms, understanding computer hardware fundamentals, and embracing long-term commitment over shortcuts. It also includes advice on choosing a first programming language (recommending Python or Scheme) and debunks the myth that book learning alone is sufficient.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://www.norvig.com/21-days.html>

## Community take

How the wider developer community reacted, aggregated from 2 discussions and 128 comments across hackernews (as of 2026-07-29).

**TL;DR:** The community uses Peter Norvig's classic 1998 essay as a springboard to debate whether deep programming mastery still matters in the AI era, with many mourning the loss of joy and meaning in hand-coding while others argue technical fundamentals remain essential for debugging, architecture, and quality.

**Sentiment:** 25% positive · 45% mixed · 30% skeptical

**The case for**

- Several commenters note that experienced programmers still outperform AI on non-trivial, novel, or domain-specific problems that LLMs haven't seen before.
- Commenters point out that AI can accelerate commodity/boilerplate work, freeing skilled developers to focus on architecture and critical sections.
- One commenter argues AI-assisted coding enforces good discipline like writing reproducible automated tests.
- Some find AI lowers barriers for non-programmers to build real, usable projects, representing a genuine democratization.

**The pushback**

- Many commenters feel AI has stripped away the joy, meaning, and creative satisfaction of learning and writing code by hand.
- Commenters warn of rapid skill degradation from LLM-driven coding, with debugging AI-generated code often costing as much time as writing it yourself.
- Reading AI-generated source code no longer offers the human insight and learning that studying others' handcrafted code once provided.
- Managers and non-engineers pushing AI-generated code to production without understanding it is seen as a dangerous trend.
- CS enrollment drops (~20-30% at some UC campuses) raise concerns about a future with no one left who can review or understand AI-generated code.

**By community**

- hackernews (mixed): Commenters are deeply divided between mourning the loss of craft and joy in hand-coding versus pragmatically accepting AI as just another abstraction layer, with a strong undercurrent of grief about what the profession is becoming.

**Hottest debate:** Whether AI represents a legitimate new abstraction layer analogous to moving from assembly to high-level languages, or a fundamentally different and more dangerous shift that degrades understanding and transfers authorship away from the programmer.

**Open questions**

- Will there be enough skilled programmers left to review and maintain AI-generated codebases in the future?
- How can developers preserve the joy and craft of programming as a hobby when its professional value is eroded by AI?
- Is vibe-coding a career transition toward project management rather than a new form of programming?
- Will LLMs ever be reliably capable of non-trivial, novel software that experienced engineers currently handle?

**Highlights**

> I used to have this feeling, and I just got over this hurdle. I now continue coding by hand with zero AI usage. It's amazing how much better you feel when you get to use your brain. What really helped me was many perspective shifts perspective shift 1: the people that never cared about programming/engineer finally left of the room. the people chasing the trends, trying to grift, or just after money are finally gone. we can finally be in a room and just talk about good engineering. the people we as engineers never wanted to hear from are off attempting to force the world to use a tool that everyone 40 and under passionately rejects (this is spicy for HN terms, but the avg joe hates AI. people aren't stupid - they know they only stand to lose from it in the longer term). perspective shift 2: I just read Zen, and the Art of Motorcycle Maintenance. It taught me a lot. I came away from that book understanding what "quality" means at a very philosophical level, and it gave me a lot of confidence for some fuzzy thoughts I already felt. it's too abstract to explain here, but it does a good job of explaining that there is perceived and strong difference between caring something into existence, verses just generating something into existence. this book breaks down how quality is not some artifact that lives in what you're making, and or is some feeling you get when you look at something that is aesthetically pleasing - quality is an event that occurs before you mind has differentiated yourself from the thing subject/object you're admiring - and in that moment, quality arises from the care you give it. there must exists energy and care towards what you're doing for quality to arise. generating anything with AI will never bring that fruition. many people try to counter this stance by saying that they iterate with AI forever, and assume that iteration is a the same as the caring event described in ZATAOMM - but the difference is that grading output is not the same as creating/authorship. it's must a read and deep study I think if you're into programming and this mental state perspective shift 3: This talk from Brandon Sanderson called We are the Art [1]. I personally do a lot of creative coding - like games and such. this talk does a great job of breaking down how art and creation ultimately lives in the person. I won't summarize here, just a must a watch perspective shift 4: I got off all the mainstream social media site bc the PR machine for AI is relentless. of course you're going to feel like crap when every site says, future generations will be homeless, K shaped economy, permanent underclass, etc. you gotta log off these sites to create some distance with the beast - it's not you, the world really is just messed up rn. Also I barely browse HN anymore. this place is the public square for VCs and people who lost hte plot with technology - I just happened to be here, and wanted to help my fellow programmer grinding through the same mental trenches I was in perspective shift 5: go find some programming communities on discord. I'm in a discord with like 5000 active members that really care about coding, and doing so without AI. this is a very active discord. once you realize there is a strong community still building like this, it really showed me we're not low in numbers, and there still a large group of people that will celebrate engineering efforts done by hand. and there are still people that need to understand these machines at a very deep level - you're efforts aren't wasted perspective shift 6: look at AI on the job as a way to get your work done faster to get home to do real programming. work code can be trash, home is where the real work is done. perspective shift 7: The overall environment we live is just depressing. I just re-read Fahrenheit 451, and I came away feeling like the world has never been this actively disengaged while also being passively entertained. this book draws a lot of parallels with modern times, and it's a
> — [drudolph914 on hackernews · 5 comments](https://news.ycombinator.com/item?id=49093468)

> One thing AI did take away; I love reading source code written by other people. Node modules, plugins, LUA, python scripts... whatever. I loved seeing how people organized their logic, named their variables, the flavor of their comments... all of it. I learned so much diving through the source code of all the major tools. Now it's all AI generated. You don't know if you're reading a novel human's take on a pattern or an LLM's attempt to reproduce. Worse; even if the AI presented something novel it produces at such a rate it's a needle in a haystack. I feel cautious of any claim people make about their use of AI. I'm not even anti-AI; I use it. But at minimum wish there were a mechanism to know where the lines were.
> — [oneneptune on hackernews · 2 comments](https://news.ycombinator.com/item?id=49093379)

> They 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
> — [beremaki on hackernews](https://news.ycombinator.com/item?id=49093121)

> I just spent the past three hours debugging a long latent bug from vibe coding a thing. The only way I found it was running a debugger through the C++ code and tracing everything -- Claude was utterly useless until I basically pointed out the problem to it. I don't think understanding technical aspects of programming is a waste of time at all, it's still very necessary. The annoying thing too is that, whatever time I saved having the LLM write it, I pretty much just lost having to debug it. (For what it's worth: the bug it introduced is one I never would have introduced on my own, because it fundamentally misunderstood a key component of the design)
> — [overgard on hackernews](https://news.ycombinator.com/item?id=49093724)

> Hm 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-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 [2] https://www.nand2tetris.org/ [3] https://operating-system-in-1000-lines.vercel.app/en/
> — [weiliddat on hackernews](https://news.ycombinator.com/item?id=49095131)

**Source threads**

- [hackernews](https://news.ycombinator.com/item?id=41340518) · 3 points · 2 comments
- [hackernews](https://news.ycombinator.com/item?id=49055816) · 89 points · 126 comments

## Similar posts on daily.dev

- [Good developers learn to program. Most courses teach a language.](https://daily.dev/posts/good-developers-learn-to-program-most-courses-teach-a-language--2dqwgtgrp) · Hacker News · 2 upvotes · 0 comments
- [I Only Had 60 Minutes a Day to Learn Coding — This Is the System That Changed Everything](https://daily.dev/posts/i-only-had-60-minutes-a-day-to-learn-coding-this-is-the-system-that-changed-everything-4ac1trw2n) · Medium · 1 upvotes · 0 comments
- [Practical Methods for Programming Self-Study](https://daily.dev/posts/practical-methods-for-programming-self-study-smtge6m92) · Simple Thread · 47 upvotes · 3 comments

---

Tags: [#career](https://daily.dev/tags/career)

[View this post on daily.dev](https://daily.dev/posts/teach-yourself-programming-in-ten-years-lehjvh5ok)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Teach Yourself Programming in Ten Years","url":"https://daily.dev/posts/teach-yourself-programming-in-ten-years-lehjvh5ok","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/teach-yourself-programming-in-ten-years-lehjvh5ok"},"datePublished":"2026-07-29T02:36:04.455Z","dateModified":"2026-07-29T10:57:01.749Z","description":"Peter Norvig's classic essay argues that the popular '24 hours' or '21 days' programming books are misleading, and that true programming expertise requires...","image":"https://media.daily.dev/image/upload/s--CxzD6vbw--/f_auto/v1722860399/public/Placeholder%2005","thumbnailUrl":"https://media.daily.dev/image/upload/s--CxzD6vbw--/f_auto/v1722860399/public/Placeholder%2005","isAccessibleForFree":true,"articleSection":"Hacker News","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Hacker News","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/hn","url":"https://daily.dev/sources/hn"},"commentCount":2,"discussionUrl":"https://daily.dev/posts/teach-yourself-programming-in-ten-years-lehjvh5ok","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":2},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":2}],"keywords":"career","timeRequired":"PT13M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Hacker News","item":"https://daily.dev/sources/hn"},{"@type":"ListItem","position":3,"name":"Teach Yourself Programming in Ten Years"}]}
```

