>> Learn at least a half dozen programming languages<p>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.<p>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).<p>There's some blogs continually give me good food for thought in this space, all signal no noise:<p>Eli Bendersky, (every language under the sun) e.g. <a href="https://eli.thegreenplace.net/2016/the-expression-problem-and-its-solutions/" rel="nofollow">https://eli.thegreenplace.net/2016/the-expression-problem-an...</a><p>Fasterthanli.me (Go, Rust, others) e.g. <a href="https://fasterthanli.me/articles/so-you-want-to-live-reload-rust" rel="nofollow">https://fasterthanli.me/articles/so-you-want-to-live-reload-...</a><p>Mechanical Sympathy (Java), defunct but still worth visiting <a href="https://mechanical-sympathy.blogspot.com/" rel="nofollow">https://mechanical-sympathy.blogspot.com/</a>
The title is a bit misleading to me.<p>10 years is not to "teach yourself programming," it's to "become an expert in programming."<p>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.<p>The problem is "how long until I become employable," not "how long until I become an expert".<p>The answer to the former is months of deliberate practice.
The answer to the latter is [tens of] years of deliberate practice.<p>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.
The 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.
I agree with the article, ~10 yrs will give you a good start if you stay with it.<p>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.
I really like the advice in this.<p>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.<p>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).<p>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?<p>How depressing.<p>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.<p>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.<p>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.
That's a trick title, because a big flag of someone still learning programming, is when they say that they're no longer learning programming.<p>Programming is like life, constant learning, constant mistakes, constant improvements. And that's why it's so beautiful.<p>A life long partner ^^
People 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.<p>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.<p>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.<p>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.<p>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.
How long does it take to learn programming is like asking "How long does it take to learn 'sport'?".<p>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.<p>In the same way, programming experience in one area transfers to others but not completely.
I've learned programming as a kid in a department store watching other kids hack in BASIC.<p>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.
I've always considered this the most reasonable method to "Teach Yourself C++ In 21 Days":<p><a href="https://abstrusegoose.com/249" rel="nofollow">https://abstrusegoose.com/249</a><p>(note: is comic)
It 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.<p>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.<p>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?
We 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].<p>That's what stupid people do.<p>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.<p>2-3 years often gives good skills borderline mastery, 3-10 true mastery.<p>It's a system, not a goal.
One 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.<p>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.<p>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?
I 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.
You 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.
Man, 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.<p>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.
> <i>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.</i><p>How did Norvig interview JWZ?<p>Did he use the whiteboarding rituals promoted by Norvig's company?