[HN Gopher] Teach Yourself Programming in Ten Years (1998)
       ___________________________________________________________________
        
       Teach Yourself Programming in Ten Years (1998)
        
       Author : memorable
       Score  : 129 points
       Date   : 2022-10-21 13:09 UTC (9 hours ago)
        
 (HTM) web link (norvig.com)
 (TXT) w3m dump (norvig.com)
        
       | dbttdft wrote:
       | I'd agree with that it takes 10 years to become competent in all
       | the required fundamentals for programming like math, algorithms,
       | protocols, security, versioning, databases / persistence,
       | scheduling, memory management, some basic electronics. Not
       | gimmicks like C++, those take infinite years.
        
         | echelon wrote:
         | In the right environment (not just university), I'm pretty sure
         | those can be learned in as little as four years. That is, I
         | think you could take someone from zero to somewhere above
         | junior IC in that time.
         | 
         | In the first couple of years they'd need a lot of independent
         | projects with mentorship to start, then get plugged into an
         | actual team with good peers and pairing.
         | 
         | They only need the basics of data structures and algorithms.
         | They might see dynamic programming and AVL trees, but that
         | needs less focus than the practicals of HTTP, MySQL, image
         | processing, version control, hardware, etc.
        
       | comfypotato wrote:
       | Much like his AI textbook, this post was well written.
       | 
       | I'm curious if Rust would fall under any of the categories for
       | languages to learn. I already know Lisp, so that knocks out two
       | categories at once. Perhaps Rust fits his parallelism category
       | nicely.
        
         | belmont_sup wrote:
         | If you truly believe that this is a 10-yr+ journey, then
         | learning Rust just for fun and exploration seems worth it.
         | 
         | Any language that forces me into a new domain, whether by the
         | goal it wants to solve, its paradigms, or environment, seems
         | highly worth it.
         | 
         | P.s. try OCaml
        
           | acedTrex wrote:
           | Seconded on OCaml, it will broaden your horizons in useful
           | ways
        
           | wrs wrote:
           | I took a week of vacation to work through _Programming Rust_
           | uninterrupted. I have no immediate professional use for it,
           | but it's pretty clearly going to be important, and it has at
           | least one new (to me) paradigm, so I wanted to fill that gap
           | in knowledge. But I'm under no illusion that I "know Rust"
           | after doing that! I just inched up to a more comfortable
           | place on the learning curve.
           | 
           | BTW, I know there are plenty of people who wouldn't consider
           | that a vacation, and that's fine, but they are different from
           | me.
        
         | brudgers wrote:
         | I don't think it applies to rust because "teach yourself
         | programming in ten years in Rust" is just too damn awkward.
        
           | Jtsummers wrote:
           | They're referring to this section of the article:
           | 
           | > 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).
           | 
           | The question being what would Rust add to this list or where
           | would it fit here.
        
             | einpoklum wrote:
             | An interesting point about C++ in recent years (since 2011
             | and perhaps earlier) is that it no longer emphasizes class
             | abstractions that much. These days the feel like just
             | another tool in your kit. Also, the declarative specs
             | support has expanded with C++20 concepts.
        
       | CSMastermind wrote:
       | This is one of the articles I recommend to new engineers along
       | with Greg Wilson's "What we actually know about software
       | engineering and why we believe it's true."
       | 
       | https://youtu.be/I0Pt9Lf9JzQ
        
       | DonHopkins wrote:
       | FORTH ?KNOW         HONK!       ELSE         10 YEARS SELF FORTH
       | TEACH IN       THEN
        
       | aatd86 wrote:
       | That's somehow the time it's been taking me and I had the basics
       | of coding.
       | 
       | Coding can be learnt more or less fast.
       | 
       | Programming takes much more time as it's a whole field of
       | knowledge to acquire so that one can produce great, maintanable
       | and effective code. So much so that it is still a field in
       | progress (hence new programming languages popping every other
       | year)
        
         | jvm___ wrote:
         | Learning how to assemble lego takes minutes.
         | 
         | Designing and building a 500 piece Lego set would take you
         | years. You could create one quickly, but then refine it over
         | the years - or it could be beyond you and you need to build up
         | to it.
        
       | commandlinefan wrote:
       | It is kind of frustrating how pervasive the "programming can be
       | learned in an afternoon" mindset is, in spite of all the evidence
       | to the contrary. Pardon me for being insulted by the insinuation
       | that something that took me 40 years to become as proficient as I
       | am with it can be mastered by everybody else in a few months.
        
         | headhasthoughts wrote:
         | Why should you be offended that learning materials are
         | improving, toolchains are getting easier, and net access is
         | available to all now?
         | 
         | It's like complaining that automatics exist. You can still
         | drive manual! You have that on people! But fundamentally it is
         | a simpler field than it was then, due to the gigabytes of
         | abstraction for every little thing you can do with a computer
         | now.
         | 
         | That points toward an attribution error or a fundamental
         | insecurity.
        
           | P5fRxh5kUvp2th wrote:
           | This is not at all what the poster is saying.
        
         | Jtsummers wrote:
         | Programming can be learned in an afternoon, just not mastered.
        
           | wittycardio wrote:
           | No. Some syntax can be learned in an afternoon, that's it
        
             | Jtsummers wrote:
             | Eh, my experience suggests otherwise. I've taught Python to
             | high schoolers and adults in an afternoon. Were they doing
             | anything terribly interesting? Not really, but they were
             | making their own programs. They still had a _lot_ to learn,
             | mind you, but they did learn to program.
        
         | sedeki wrote:
         | Why are you insulted by such a claim if you know it's naive and
         | false?
        
         | jcranmer wrote:
         | > Pardon me for being insulted by the insinuation that
         | something that took me 40 years to become as proficient as I am
         | with it can be mastered by everybody else in a few months.
         | 
         | I don't think anyone who claims that "programming can be
         | learned in an afternoon" understands that to mean "programming
         | can be _mastered_ in an afternoon ". Mastery comes, in large
         | part, from experience, and there is no shortcut to experience.
        
         | Ancapistani wrote:
         | I mean... chess can be learned in an afternoon, too. A few
         | minutes of memorizing the standard movements of each piece
         | followed by maybe a half hour of learning the exceptions
         | (castling, en passant, etc.) and you've "learned how to play
         | chess". A handful of games later and you start to get a feel
         | for the relative importance of the pieces.
         | 
         | I wouldn't argue that anyone expects to be competitive with a
         | grandmaster at that point, though.
        
           | trap_goes_hot wrote:
           | There is always a programmer better than you, as with any
           | skill. In my practical view, programming is using a tool to
           | solve a problem, not a game.
        
       | dang wrote:
       | Related:
       | 
       |  _Teach Yourself Programming in Ten Years (1998)_ -
       | 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 - July 2019 (87
       | comments)
       | 
       |  _Teach Yourself Programming in Ten Years (1998)_ -
       | 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 - April 2015 (61
       | comments)
       | 
       |  _Teach Yourself Programming in Ten Years (1998)_ -
       | 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 - Jan 2012 (29
       | comments)
       | 
       |  _Teach Yourself Programming in Ten Years_ -
       | 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 - Aug 2007 (7
       | comments)
        
         | oh_sigh wrote:
         | Clicking through the usernames on the oldest threads, basically
         | no one there then still posts on HN, most seemed to have
         | dropped off around 2014 or before.
         | 
         | I wonder what they're up to? Just lurking and not posting? Gave
         | up on "the lifestyle"? Burnout? Forgot their password and
         | created a new account?
        
           | Eiriksmal wrote:
           | Definitely some are lurking out of sheer addictive habit. But
           | there's fewer reasons to leave comments because a) the
           | community grew and there's already someone who articulated
           | your point, so no sense in repeating it and b) the hivemind
           | has moved in a different direction and it's more challenging
           | to have reasonable discourse here without it feeling like
           | you're "debating" 14-year-olds on Reddit.
        
             | Goronmon wrote:
             | _...the hivemind has moved in a different direction..._
             | 
             | This is definitely a big one.
             | 
             | The focus did use to be a lot more specific to startups
             | with all the good and the bad that came with it. Things
             | like a less negative view of "dark patterns" and more
             | marketing related topics were definitely a part of a
             | community back then.
             | 
             | Questions like "Should I be tracking as much data about my
             | users as possible" would have been answered with "Yes,
             | absolutely, the more data the better." much more often than
             | you would ever see nowadays.
        
             | bugfix-66 wrote:
             | There is evidence that a large fraction of Hacker News
             | readers are early in their programming journey. Presumably
             | people migrate elsewhere as they mature? I don't know of
             | another forum like Hacker News, so where are they going?
             | 
             | To understand the level of programming skill on Hacker
             | News, consider that less than 5% of Hacker News readers
             | succeed in adjusting a loop iteration variable to avoid
             | unsigned overflow (despite repeatedly attempting to do so):
             | 
             | https://bugfix-66.com/8617f16fa68e021b656b1856f94afebf7a311
             | 7...
             | 
             | This is an empirical observation and not an attack (please
             | don't flag/downvote this comment). It tells us something
             | about the population of users on the forum, and where they
             | are on the developmental timeline as programmers.
             | 
             | It seems like more senior programmers move on, maybe.
        
               | bee_rider wrote:
               | Well, it tells us about the Go programmers on the forum.
               | One possibility is that as Go has become more mainstream,
               | Go programmers have become less competent on average.
        
               | bugfix-66 wrote:
               | Go is very close to C.
               | 
               | A C programmer who understands a for loop should be able
               | to fix this, despite the fact it's Go:                 //
               | We are generating n-1, n-2, ..., 1, 0            func
               | below(n uint64, to chan uint64) {           for n--; n >=
               | 0; n-- {               to <- n           }
               | close(to)       }
               | 
               | Maybe I'm wrong in thinking this, maybe you're right: It
               | could be that Go programmers tend to be less experienced.
        
               | Gollapalli wrote:
               | Does your bugfix problem actually test said code? Or does
               | it just look for a specific change to be made, because
               | I'm reasonably certain I input multiple correct solutions
               | and they were all marked as having not solved the
               | problem.
        
               | bugfix-66 wrote:
               | Yes, the code you enter is compiled and run against a
               | suite of tests. Any change that fixes the function will
               | be accepted.
               | 
               | Any change that doesn't compile (bad syntax) or fails the
               | tests is rejected. Code that produces deadlock or panic
               | or timeout is also rejected.
               | 
               | If you give me an example of a rejected solution, I'll
               | show you why the solution wrong.
        
           | bloqs wrote:
           | I perpeturally wonder things like this.
        
           | cortesoft wrote:
           | I clicked on the older post, and then the first couple of
           | comments... and one of them has commented within the last few
           | months.
           | 
           | Not sure what the exact turnover rate is, but it seems pretty
           | normal that there would be some turnover over 15 years.
        
           | [deleted]
        
           | rongopo wrote:
           | I could not care less: every time I reach 100 karma points I
           | feel I need a new account to project my renewed self...
        
             | pvg wrote:
             | this seems like way more work than the established best
             | practice of two joints at every ten thousand points.
        
           | neilv wrote:
           | One possible explanation is that people often just move on
           | between techie online communities after awhile. I've done it
           | several times.
           | 
           | Or, a lot of HN activity seems to be by people in hustle
           | mode. Maybe a lot of them finally made their fortunes, and
           | are now spending their time with their kids, or windsurfing.
           | 
           | Then there's wasting time while stuck in-office all day. Less
           | a problem with WFH, when you can go do dishes while you're
           | waiting for that build or someone to respond. And WFH means
           | less of a need to kill time at your desk before it's socially
           | acceptable to go home (or get a train/shuttle), even if you
           | put in a solid day and you're at a good stopping point before
           | a busy day tomorrow.
        
           | jspash wrote:
           | That's almost 10 years ago. Maybe they're all gainfully
           | employed with their hard-won knowledge in programming? Albeit
           | a tad prematurely...
        
           | marincounty wrote:
        
           | aamoscodes wrote:
           | A bit macabre but some non-zero number are dead. I've
           | frequently wondered if there will be a way to scrub/compile
           | my online activity (within reason) for my family and friends
           | to review after it's all said and done, otherwise I'll just
           | live in a database forever.
        
             | ant6n wrote:
             | It'll probably deleted.
             | 
             | Then again, conversations are usually deleted the moment
             | they happen, in the sense that they don't get stored.
        
               | mixmastamyk wrote:
               | Roughly nothing has been deleted since 2005 or so, with
               | limited exceptions.
        
       | avg_dev wrote:
       | god, how i love this article. i understand the criticisms; i see
       | forbiddenvoid discussing that people want to get paid and be able
       | to live comfortably. -[i recall luu writing an essay about how to
       | get better at things quickly (im probably quite poorly and
       | incorrectly paraphrasing him here).]- (edit: shit, after a quick
       | search of danluu.com, i believe i may have fabricated that
       | entirely) i believe they are approaching the discussion at cross-
       | purposes.
       | 
       | this is not about being comfortable paying your bills. this is
       | not saying not to learn quickly or that you should avoid
       | shortcuts. it's about mastery... it's about understanding the
       | craft, weighing the tradeoffs that come with each decision, and
       | repeating that process week-in and week-out for years...
       | decades... a lifetime.
       | 
       | i _did_ learn to program from one of those  "for dummies" books.
       | that was (checks calendar) 25 years ago. it didn't teach me
       | everything. i still don't fucking know everything!!! and that's
       | fine. i wake up eager to learn. i enjoy code reviews, and
       | learning from my peers. as norvig mentions: i enjoy being the
       | best programmer on the team, i enjoy being the worst programmer
       | on the team; hell, i enjoy being in-between.
       | 
       | if this post is about anything, it is about the joy of learning,
       | and how deep and long that arc can be. it never ends. maybe when
       | i go senile.
        
         | swsieber wrote:
         | No, luu did write about how simple it is to get in the 95th
         | percentile:
         | 
         | https://danluu.com/p95-skill/
         | 
         | https://news.ycombinator.com/item?id=22265197
        
           | avg_dev wrote:
           | ah - i see. thank you!
        
       | hi wrote:
       | > "The important thing is that you choose and get started."
        
       | trap_goes_hot wrote:
       | Sorry but these sorts of articles come of as extremely elitist.
       | Why does it matter if someone is in a rush or not? Why does it
       | matter if someone thinks is/isn't fun or is/isn't passionate or
       | doesn't want to learn more languages? Why does it matter if
       | someone is satisfied with learning just 5% of the language? I
       | have total respect for anyone spending a weekend learning python
       | code to solve a problem and then doing nothing after that.
       | 
       | If you're getting paid to write code and produce something of
       | value, then the ultimate proof is in the pudding. If your code
       | does what you want, if your team is happy, if your QA is happy,
       | if your customers are happy, then you've succeeded.
        
       | Jalad wrote:
       | > As Auguste Gusteau (the fictional chef in Ratatouille) puts it,
       | "anyone can cook, but only the fearless can be great."
       | 
       | Is this referencing the movie Ratatouille? I was curious because
       | the movie was released a lot later than this article. I figure it
       | must have been a novel but can't find it, or maybe the article
       | was edited since 1998?
        
         | Jtsummers wrote:
         | The article copyright notice is at the bottom showing
         | 2001-2014. Or perhaps Norvig accidentally confirmed he followed
         | the advice of the Abstruse Goose comic for learning to program
         | in 21 days.
        
       | KennyBlanken wrote:
       | > Malcolm Gladwell has popularized the idea, although he
       | concentrates on 10,000 hours, not 10 years
       | 
       | This is a sidetrek for sure, but Malcolm Gladwell is a right-wing
       | propagandist whose sole education in anything resembling an
       | accredited institution is an undergraduate in history. Not
       | psychology or any of the other bullshit he pontificates about. He
       | has, however, spent decades "studying" and working at right-wing
       | 'think tanks'.
       | 
       | He's a shill for every shitty corporate institution and scandal
       | you can imagine. He's defended everything from the tobacco
       | industry to Enron to the mortgage crisis to Ford Pintos.
       | 
       | https://shameproject.com/report/malcolm-gladwell-unmasked-li...
       | 
       | He's not clever. He's not a free-thinker. He's not the
       | intellectual 'breath of fresh air' he's managed to portray
       | himself as. He's just a neoliberal think-tank parrot, and his
       | pop-psych books are designed to push thinking that makes people
       | more readily swallow corporate PR.
        
         | yesenadam wrote:
         | Fascinating expose, thank you, everything you say seems true.
         | Part 2 on this page:
         | 
         | https://shameproject.com/report/malcolm-gladwell-emails-sham...
        
         | _dain_ wrote:
         | as a rightwing maniac myself, I'm insulted you lump malcolm
         | gladwell in with us
        
         | avg_dev wrote:
         | one thing i love about twitter is the brevity.
         | https://twitter.com/riverguardian/status/1556381516564922376
        
       | alexmolas wrote:
       | a classic! every time I read it I like it more
        
       | bitwize wrote:
       | I'm also reminded of the title of Dorai Sitaram's book, _Teach
       | Yourself Scheme in Fixnum Days_. It 's a pretty good introduction
       | to Scheme, but the implication is that the concepts people work
       | with in Scheme are very deep, and the skill ceiling is
       | accordingly absurdly high.
        
       | forbiddenvoid wrote:
       | Not to be snarky, but there is a clear answer to the question
       | posed at the top of the page: "Why is everyone in such a rush?"
       | 
       | No one likes being poor.
       | 
       | The issue isn't about how long it takes to get good, but how long
       | it takes to extract economic value from the exercise. How good to
       | I have to be in order to make more money doing this than I make
       | right now?
       | 
       | If it takes 10 years to get that value (it does not), then it
       | might not be worth the effort. But I don't think expertise is
       | binary, and the whole 10 years/10,000 hours thing can make people
       | feel like the effort isn't worth it.
       | 
       | There is value to be gained during the 10 (or 50) years you spend
       | honing this craft. And 21 days can create value, if not
       | necessarily expertise.
        
         | thundergolfer wrote:
         | I'm very pro this 10 year timeline, but totally agree that most
         | people are in a rush because they need the money.
         | 
         | Psychology, I had waayyy more time with and appreciation of the
         | fundamentals after establishing myself in a well paying grad
         | role. "Alright, so I'm definitely not going to be poor -- in
         | fact I'll be comfortable -- now let's focus on slowburn
         | mastery.
        
         | jspash wrote:
         | I suppose there is some truth in that. But 8 year old me hardly
         | knew the value of a dollar except how much sugar could be had
         | in exchange. But that didn't stop me from spending every waking
         | hour trying to get my Vic-20 to auto-generate dungeon mazes.
         | From running to the shop on the 1st of every month to pick up
         | the latest programming magazines, then running back home to
         | copy the arcane characters one by one into that Vic-20 in the
         | hopes that the mysterious incantation would run. I count myself
         | lucky to have learned to program before "growing up". An
         | especially before the internet.
         | 
         | Sorry if I never really got to the point. Just wanted to say
         | that I was in a rush - but of a different sort back then.
        
         | neilv wrote:
         | > _" Why is everyone in such a rush?"_
         | 
         | Because of Google's hiring filters (which I suspect Norvig knew
         | something about), which tested for "Are you fresh out of
         | whatever undergrads were being told at Stanford?" rather than
         | the skills and experience development that Norvig talks about
         | here.
        
       ___________________________________________________________________
       (page generated 2022-10-21 23:00 UTC)