14 ms·
Teach Yourself Programming in Ten Years (1998)
- PinkPigeon 5y agoI really like the advice in this. At the same time, I often find it dispiriting to hear "it takes x amount of time", be that 10 years, 10,000 hours or a lifetime. While I understand that it is important to have these metrics precisely to dispel the idea that anyone can learn c++ in any meaningful way in 24h, at the same time I find it harder to start something when I am constantly reminded of the fact that nothing I produce will be worth anything compared to those with a giant head start (yes, yes, never compare yourself to others, just to yourself from x time ago). The 10 year thing means I can meaningfully learn, what, 70 thing in life if I am not spending the vast majority of my time at a full time job? So, that makes it 3-4 things? How depressing. Admittedly, I feel I have almost never studied deliberately. I happen to have learned about 3 things to reasonable expertise in my 30 ish years. All three just happened. It was effortless to learn, as it was interesting to learn. I simply cannot imagine what it would mean to have to dedicate 10 years or 10,000 hours of practice to something I am not interested in. In my own experience I would go so far as to say that I either love something enough to want to do it 8h a day, or not at all. I wonder if I'll ever find a 4th thing, later in life. I really want to learn more things, but the rule of x hours is discouraging to think about when I have 30 something years less left on this planet than when I started.
- icoder 5y agoYes our lives are limited so we can not do it all. And comming to peace with that is a process that is different for everyone. Every choice rules out others, hence the paradox of it. Your own struggle with learning new things does have some openings to look at it a bit lighter. Most things are already useful, fun, interesting with less than 10k hours. Way less. You don't need to be an expert to enrich your life and that of others with a new skill! In addition, learning related things goes much quicker (ie I enjoy doing CAD recently using Fusion 360 and I find that many aspects of it fit my programmer mind very well, same for expanding foreigbln languages, different instruments, etc).
- eggdie 5y agoIf you are 30ish now, you will be 40ish in 10 years. Might as well develop a new skill or two. Though I completely agree that it should be something you are truly interested in.
- nathias 5y agoThat just applies to the one thing, you can find things that fit well together where some portion of you other skills still apply, but that will depend to the individual. You also shouldn't only learn things to be an expert in them, a very small initial input makes a lot more of a difference than honing those skills.
- hellbannedguy 5y agoI think the 10 year, or 10,000 hours are for learning stuff you are not completely in love with. It would take me 10,000 hours to become a proficient Programmer. Now---stuff I am truly interested in took me less time to learn. I was going to say "master", but I didn't master anything in my life. I'm a good mechanic, and Watchmaker only because learning it was easy because I was interested. It took me less than 4 years to become good at Watchmaking. Why--because for some reason I became facinated with watches, and clocks. I can strum exactly 12 guitar chords. I memorized the charts, and then memorized the finger positions on the fret. I can play a few songs. I sometimes wonder why I don't practice more. The reason is I don't love it. When playing a mental picture of Blutto pops up from Animal House. Pick something you love. You never know where it will take you. Then again--maybe I should have learned things that society valued, and paid highly for?
- thanatos519 5y agoI started to learn programming when I was 9 and it took about 10 years. About half of his suggestions came after that. Good tips if you're starting as an adult I suppose.
- snarfy 5y ago30 years on, still learning
- quickthrower2 5y agoProgramming is like the universe. There are parts of of expanding faster than I can ever learn so are unreachable even with unlimited time.
- LoveMortuus 5y agoThat's a trick title, because a big flag of someone still learning programming, is when they say that they're no longer learning programming. Programming is like life, constant learning, constant mistakes, constant improvements. And that's why it's so beautiful. A life long partner ^^
- tempodox 5y agoI agree with the article, ~10 yrs will give you a good start if you stay with it. When asked by others how much it would take, I try to avoid giving a number like that because it might discourage them. Who knows, had I heard or read that number early in my involvement, it might have discouraged me. However, my innate curiosity and fascination for the field made the time fly by without me noticing it. If you're in doubt, you might take that as encouragement. Programming is a field where the learning never stops, and if that's your thing, the time required will become secondary at most.
- foxpurple 5y agoThe number means nothing anyway. What do you get at 10 years that you didn’t have at 9 or don’t yet have from 11. You can have a well paying job as a programmer in only a few years.
- tempodox 5y ago> The number means nothing anyway… Yep, that's why I put the “~” in front of it and called it a start, not the end of the journey. > You can have a well paying job as a programmer in only a few years. Absolutely, if that's the extent of what you want out of it, you could achieve that and call it a day. But programming is also a field that's ever evolving. If you catch yourself thinking, “I've learned everything I ever need to learn”, then chances are that you'll find yourself left behind at some point in the future.
- laurieg 5y agoHow long does it take to learn programming is like asking "How long does it take to learn 'sport'?". You could learn the basics of football in an afternoon or spend a solid few years getting good. If you started playing futsal, you'd do ok. Maybe you could hold your own as a sprinter. You'd probably have a terrible time with a javelin. In the same way, programming experience in one area transfers to others but not completely.
- tchalla 5y agoThe power of compounding which comes from discipline is one of the most underrated concepts. There's one caveat to "keep at it for x years"; deliberate practice. You have to work towards being aware of gaps, identifying them and improving them. In addition, the amount of effort required to go from 0-40 is different from the one required to go from 50-70 or 80-95. The recognition and acceptance that a 100m sprint is different for Usain Bolt than it is for you could give you inner peace and focus.
- deleted 5y ago[deleted]
- 0xfaded 5y agoLearn linear algebra properly and this will ring true. If you know the math, it's trivial to pick up control, computer vision, back propagation, optimization, I'm sure many others.
- mirker 5y agoMore like linear algebra, real analysis, and probability for the areas you listed.
- BossingAround 5y agoThe title is a bit misleading to me. 10 years is not to "teach yourself programming," it's to "become an expert in programming." Most people do not want to learn programming to become experts, most people want to learn programming to get a job. After getting a job, some will plateau right away, others will plateau after some time, and others still will keep learning even after years and years. The problem is "how long until I become employable," not "how long until I become an expert". The answer to the former is months of deliberate practice. The answer to the latter is [tens of] years of deliberate practice. Books with titles like "learn C++ in 24 hours" target the former. And, I would say that the number of jobs that require the mastery of the craft is not large.
- herodoturtle 5y agoI agree with everything you said. Not sure about this though: > I would say that the number of jobs that require the mastery of the craft is not large. Perhaps the number of jobs that require mastery is less well known? i.e. Not advertised as often / not vacant as often. I suppose I'm splitting hairs here in one's definition of "not large", by in my circles (~25 years of dev working experience) there are quite a lot of "jobs" requiring mastery, but they certainly do become available less often (or rather, they're usually quietly filled without much public notice).
- BossingAround 5y agoWhat are some of the jobs that require mastery in your mind? I suspect we'll diverge in that opinion, hence our different conclusions.
- gombosg 5y agoAlso, the number of developers is increasing exponentially over time. There are maybe a hundred thousand people out there who have >25 years of dev experience, and millions who have <5. E.g. see [1] - 16 times more engineers filling the SO survey with <5 years of experience compared to >25. The job market has to roughly follow this demographic trend, otherwise companies would fall behind competitors. [1] https://insights.stackoverflow.com/survey/2020#developer-profile-years-coding-professionally https://insights.stackoverflow.com/survey/2020#developer-pro...
- basicplus2 5y agoFrom the article.. http://abstrusegoose.com/249 http://abstrusegoose.com/249
- nindalf 5y agoThis needs to be higher. This guide shows it's possible to learn C++ in 21 days.
- Zababa 5y agoI know that it's probably a joke but to take it seriously: no, I don't think it does. It shows how to circumvent the 21 days constraint but the whole point of that discussion is that time is limited.
- asicsp 5y agoPrevious discussions: https://hn.algolia.com/?dateRange=all&page=0&prefix=true&query=norvig.com%2F21-days.html&sort=byDate&type=story https://hn.algolia.com/?dateRange=all&page=0&prefix=true&que...
- KingOfCoders 5y agoI've learned programming as a kid in a department store watching other kids hack in BASIC. Writing code for 40+ years I still make mistakes, don't know a lot of things, make the wrong decisions sometimes and learn every day - currently fighting Rust lifetimes.
- CraigJPerry 5y ago>> Learn at least a half dozen programming languages I'm always surprised by how many people disagree with this; they're on the search for that one language they can use for every task. Or even worse, they think they've found it and their search is over, that's a tragic situation given how spoiled we are for great languages today. Clojure (STM / refs, vars, atoms & agents), kdb/q (non-loopy array code), Rust (ownership), Go (async done better, although i also really like core.async in clojure too), Python (trio nursery), C++ (asan, msan, tsan). There's some blogs continually give me good food for thought in this space, all signal no noise: Eli Bendersky, (every language under the sun) e.g. https://eli.thegreenplace.net/2016/the-expression-problem-and-its-solutions/ https://eli.thegreenplace.net/2016/the-expression-problem-an... Fasterthanli.me (Go, Rust, others) e.g. https://fasterthanli.me/articles/so-you-want-to-live-reload-rust https://fasterthanli.me/articles/so-you-want-to-live-reload-... Mechanical Sympathy (Java), defunct but still worth visiting https://mechanical-sympathy.blogspot.com/ https://mechanical-sympathy.blogspot.com/
- quickthrower2 5y agoI like the general purpose GC languages like Java JS c# python lisp for most tasks though, and then go with something a bit wilder or low level like Go Haskell Rust Erlang c++ c when needed. Or R/apl for a mathy problem. Since I enjoy high level programming and the natural experience chicken/egg I never do the low level stuff. Not since Acorn Electron assembler! But I know of it.
- Hendrikto 5y agoJS isn‘t a general purpose language, even though is has been shoehorned to be one.
- quickthrower2 5y agoYes I mean JS with node
- JrProgrammer 5y agoI would say it is. It didn't start as one but over the decades it sure has become a general purpose language. I can't find a domain where JS wouldn't fit the description. While it may be a bad fit for certain problems, it can still be done.
- neilv 5y ago> One of the best programmers I ever hired had only a High School degree; he's produced a lot of great software, has his own news group, and made enough in stock options to buy his own nightclub. How did Norvig interview JWZ? Did he use the whiteboarding rituals promoted by Norvig's company?
- abecedarius 5y agoThis was written before he joined Google, if that's what you mean. I don't remember a lot about my interview around then, but one bit that stuck: when he outlined some problem he had at the time, and I was like "maybe bayesian networks would be good for this", I felt rather silly saying so since it'd been his book where I learned about bayesian networks.
- cube2222 5y agoI don't think this is (1998) if Clojure (2007) is referenced in it.
- ritchiea 5y agoIt's originally from 1998 and has been updated since then.
- stickfigure 5y agoI've always considered this the most reasonable method to "Teach Yourself C++ In 21 Days": https://abstrusegoose.com/249 https://abstrusegoose.com/249 (note: is comic)
- FridayoLeary 5y agoAnyone here from the 2008 graduating class?
- SMAAART 5y agoWe love in a world where businesses at large make money by overpromising and underdelivering; people buy these goods/services as a "alibi" of some sort, so that they can say "it's not my fault, I even tried [insert here alibi product]. That's what stupid people do. When smart people need to solve a problem, they find a system, they make time to work long and hard, and they keep on going, each and every day, failing often failing fast, and then, little by little, they incorporate the new knowledge, understanding and experience into their life. 2-3 years often gives good skills borderline mastery, 3-10 true mastery. It's a system, not a goal.
- mehphp 5y agoMan, I remember reading this article while I was still getting my bachelors in Mechanical Engineering (a little over 10 years ago) but was tinkering with programming. Made the switch to software and am now a senior software engineer. Didn’t know then that I would somewhat follow the trajectory outlined here.
- TrackerFF 5y agoPeople learn at different speeds, and intelligence + natural talent is a huge factor when it comes to learning this stuff. The two most talented programmers I know have quite different backgrounds: One is your archetypical hacker - started coding as a young child, demo-scene by the time he was 13, and got headhunted before he could enroll college. The other guy didn't write a line of code until he was 21, after switching majors from econ to engineering - three years later, he was getting offers from FAANG companies and quant/hedge funds. But, I do think that if people consistently work and study programming for 10 years, then most will have a solid grasp afterwards. That means doing actual constructive work almost every day, for 10 years - doing work that either challenges you, or teaches you how to use the tools. Being an expert (or highly competent) programmer is not only about knowing CS-theory at heart, and being able to translate that into working code - it's also being fluid with the tools. And, luckily, becoming good with tools doesn't take much more than time and effort. You could be the worst programmer in the world, but given enough time, you could learn every nook and cranny of some language and its ecosystem.
- SiliconMage 5y agoOne of the concepts in the name that tune, errr learn to Code in fewer days than the other brands of books is that each chapter is a Lesson that should be worked on for a while before proceeding to the next lesson. So while it is 24 hours or 7 days or whatever, they are not meant to be a sequential 24 hours, but 24 hours spread over a period of time. I could never interest a publisher in creating a series called "Learn in 23 Hours", I'm sure it would have a clear advantage over its slower 24 hour competition. Perhaps 23.99 hours?
- binbag 5y agoIt does not take ten years to learn things. It might take 10 years to be good at something. I recently took up lawn bowls. I learned it in about 30 mins. It's quite simple. I'm not any good at it. I used the Learn C++ in 24 Hours book as an undergraduate. It was excellent. It was the book the university recommended, and it was probably the only book I bought as an undergraduate engineer that was actually indispensable. I actually used it, page by page, and during that course I produced a really cool 'moon lander' game in 3D. Was I an accomplished programmer? Absolutely not. Had I learned the basics? Yeh. Good enough for an undergrad electrical engineer. It feels like you are railing against one premise (a programming language can be learned in 24 Hours) only to propose another similarly bonkers premise (a programming language can't be learned in less than 10 years). What's the point?
- kenny87 5y agoTen years later I still struggle to get involved language standardization effort.
- rafaelvasco 5y agoYou can learn to program in a month or less. But it takes 10 years to actually put out quality code that is easy to maintain, readable and efficient in CPU and memory allocation. It took me a little less than that only because I was a code freak for several years and used to code more than go out.