25 ms·
Teach Yourself Programming in Ten Years (1998)
- comfypotato 4y agoMuch 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 4y agoIf 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
- wrs 4y agoI 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.
- acedTrex 4y agoSeconded on OCaml, it will broaden your horizons in useful ways
- Qem 4y agoAny recommendations on introductory materials to OCaml?
- belmont_sup 4y agoocaml.org’s new website is packed with lots of great early intros. most learners eventually gravitate towards Real World OCaml https://dev.realworldocaml.org/ https://dev.realworldocaml.org/ for additional learning. Unfortunately, the learning resources for different domains out there isn’t as highly curated or prolific as, say, rust. If you do web dev like me, it takes a bit more work to find the tools and put them together. But the language itself lends itself well to systems level programming. Fortunately, the forum is a great help.
- brudgers 4y agoI don’t think it applies to rust because “teach yourself programming in ten years in Rust” is just too damn awkward.
- Jtsummers 4y agoThey'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 4y agoAn 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.
- bogomipz 4y agoCan you elaborate on what exactly happened with C++ since 2011 that it no longer emphasizes class abstractions?
- chuchana 4y ago> Can you elaborate on what exactly happened with C++ since 2011 that it no longer emphasizes class abstractions? "Modern C++, as defined in the C++11 standard has evolved to become an algorithmic language. This represents as much an idiomatic departure from Object Orientation as C++ was a departure from C’s procedural top-down composition. “C++11 feels like a new language,” says Bjarne Stroustrup [Stroustrup]. The primary focus of modern C++ has become algorithms and generic programming. To this end, the language absorbs a number of idioms from other languages and paradigms, ranging from functional to meta programming concepts. […]" [https://lambdafaktorie.com/modern-c-and-the-lisp-programming-style/ https://lambdafaktorie.com/modern-c-and-the-lisp-programming...]
- commandlinefan 4y agoIt 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.
- Jtsummers 4y agoProgramming can be learned in an afternoon, just not mastered.
- wittycardio 4y agoNo. Some syntax can be learned in an afternoon, that's it
- Jtsummers 4y agoEh, 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.
- maxbond 4y agoDo you think they would've been able to independently solve a problem/design a program after just one session? Genuinely curious. I've had limited experience teaching people to program, but my experience has been that people teach themselves to program and you can only really be a resource for them. You can teach syntax easily but design and problem solving seem impossible to transfer; you can make the process easier but they have to teach it to themselves.
- maxbond 4y agoAddendum: I'm currently volunteering with a project teaching middle school children to program, and I am impressed by how much they're able to accomplish after a single lesson. I'm not sure they're independently designing programs or solving problems, but they're definitely independently exploring the space adjacent to the example programs by experimenting, and they're making sense of the results and learning. It helps that this is a graphical/block environment where they're able to discover syntax and keywords on their own, and ingest the program output as cool patterns/behaviors.
- aatd86 4y agoThat'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___ 4y agoLearning 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.
- forbiddenvoid 4y agoNot 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.
- neilv 4y ago> "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.
- thundergolfer 4y agoI’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 4y agoI 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.
- CSMastermind 4y agoThis 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 https://youtu.be/I0Pt9Lf9JzQ
- dang 4y agoRelated: 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)
- tinglymintyfrsh 4y agoCould you make a comment post bot that does this automatically please? It would save you and us time. :)
- kazinator 4y agoThere is! Sort of. On the submission you can click on a | past | link to generate similar content via an algolia search for the title.
- avg_dev 4y agogod, 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.
- hi 4y ago> "The important thing is that you choose and get started."
- dunefox 4y agoWhich is somehow the most difficult part for me by far. Once I have started it's sticking to it. The material is only the third hardest part.
- alexmolas 4y agoa classic! every time I read it I like it more
- KennyBlanken 4y ago[flagged]
- avg_dev 4y agoone thing i love about twitter is the brevity. https://twitter.com/riverguardian/status/1556381516564922376 https://twitter.com/riverguardian/status/1556381516564922376
- yesenadam 4y agoFascinating exposé, thank you, everything you say seems true. Part 2 on this page: https://shameproject.com/report/malcolm-gladwell-emails-shame-asks-yasha-levine-recognize-delicious-irony-pro-tobacco-propaganda/ https://shameproject.com/report/malcolm-gladwell-emails-sham...
- _dain_ 4y agoas a rightwing maniac myself, I'm insulted you lump malcolm gladwell in with us
- tinglymintyfrsh 4y agoHoover Institute, Cato Institute, and libertarianism ideas dressed-up in large print, skinny books to drop factoids with advertising interviews on NPR and CNN.
- oh_sigh 4y agoClicking 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?
- marincounty 4y ago
- bloqs 4y agoI perpeturally wonder things like this.
- neilv 4y agoOne 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.
- aamoscodes 4y agoA 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 4y agoIt’ll probably deleted. Then again, conversations are usually deleted the moment they happen, in the sense that they don’t get stored.
- dbttdft 4y agoI'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 4y agoIn 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.
- dbttdft 4y agoIt would be possible if there were lots of competent universities but, clearly, given the lack of quality of current software and hardware full of digital crap (https://news.ycombinator.com/item?id=33390906#33394351 https://news.ycombinator.com/item?id=33390906#33394351), this is not the case.
- Jalad 4y ago> 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?
- bitwize 4y agoI'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.
- DonHopkins 4y agoFORTH ?KNOW HONK! ELSE 10 YEARS SELF FORTH TEACH IN THEN
- tinglymintyfrsh 4y agobecome_programmer(Y, L) :- forall(years(Y), learn(Y, L)), make_more_money(update_resume(Y, L)), true.
- trap_goes_hot 4y agoSorry 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.
- deleted 4y ago[deleted]
- wiseowise 4y ago> 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. Because it matters. The quality of your work depends on it. Having respect for someone coding on a weekend is one thing. Believing that it doesn’t matter if you occasionally dabble in programming or on a level of Norvig is another.
- trap_goes_hot 4y agoIf you're producing good code, it is completely irrelevant how you got there. Whether it was 24 hours, 1 year, 20 years. Saying you need X years of experience to produce good code is just elitist/gatekeeping.
- wiseowise 4y agoSure, if you’re exceptional prodigy who can whip out “good code” (whatever that means) without prior experience then ok.
- 4y ago
- fnordpiglet 4y agoFirst you learn to write code. Then you learn to debug it. Then you learn to read other peoples code. Then you learn to debug their code. Then you learn to improve their code. Then you’re a programmer.
- tinglymintyfrsh 4y agoThen you learn about software engineering, how to structure programs into patterns that are scalable and maintainable, and refactor legacy code. Then you're a software engineer. Eventually, you get promoted and start designing systems only on whiteboards. Then, you're an architect. Or, if you get tired of any of the above, then you're a manager instead of an IC.
- DeathArrow 4y agoI tought myself programming in over 20 years and still haven't finished. However, I think that learning a particular programming language is not a tremendous task. And I don't mean only syntax but the general ideeas and concepts flowing around that language. I see many language as families. After I learnt Pascal it was easy to learn C. Then C++ (sort of, because no mortal being can claim mastership of C++). Then C#. Then Python and Go. F# was a bit different thing, but once in my pocket, I am not afraid of Haskell or ML(not that I do wish to learn them). Apart from syntax, which is easy, libraries and frameworks, you have to learn different ways to do things, but those might apply to families. So things like interfaces, over abstracting, GoF patterns, Uncle Bob teachings, clean coding, DDD design, SOLID and other stuff which mostly mean bad design and bad coding but you need to master if you want to land a job, once learnt for Java, it will apply for most languages from the family like C++, C# and even Python.