Live data from Hacker News

Teach Yourself Programming in Ten Years (1998)

norvig.com

51–60 of 117 posts

Re: Teach Yourself Programming in Ten Years (1998)

#51

>> 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 (ownersh…

Incidentally, ASAN / MSAN / TSAN are part of Clang and GCC, not C++ itself, so they're available for other languages, e.g. Rust (https://github.com/japaric/rust-san describes how to use them) and Golang (well, TSAN and MSAN at this time).

Related: MSAN is made so much better by -fsanitize-memory-track-origins. I can't count how many times MSAN caught an error, and with that flag enabled, it directly pointed to the exact line of code at fault.

Re: Teach Yourself Programming in Ten Years (1998)

#52

>> 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 (ownersh…

Even more important than different languages is to learn about different execution models. For instance, the difference between Java and C++ is relatively minor from that perspective, compared to (e.g.) understanding how Prolog works. That will open entirely new horizons if your previous experience was based on C(++)/Java(Script)/Python (just to mention a few of the usual suspects). Just look at how the addition of F…

Yeah i agree, I was a bit clumsy about it but this is really what i was digging at in my examples.

I see a lot of conversation on here dedicated to whether you’d like your data with your functions (objects) or your functions with your data (closures). Rarely see array, logic or constraint programming paradigms mentioned.

FP has been rediscovered again and it’s the hotness right now but it’ll die out again like it did before OO stole its lunch, i can almost write the blog post headlines just now “arity considered harmful”, “OO and side-effect management not mutually exclusive after all!”

I’ve got a fiver on the next big one being a re-visit of structured programming.

Re: Teach Yourself Programming in Ten Years (1998)

#53
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].

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.

Re: Teach Yourself Programming in Ten Years (1998)

#54
post #31

> 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?

This 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.

Re: Teach Yourself Programming in Ten Years (1998)

#55

I 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…

That 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.

Re: Teach Yourself Programming in Ten Years (1998)

#56
post #15

From the article.. http://abstrusegoose.com/249

This needs to be higher. This guide shows it's possible to learn C++ in 21 days.

I 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.

Re: Teach Yourself Programming in Ten Years (1998)

#57
post #47

Earlier quoted context omitted.

> And, I would say that the number of jobs that require the mastery of the craft is not large. This mindset is how we end up with layers upon layers of badly designed and buggy software that underpins almost every aspect of modern life. Just apply the same reasoning to other areas: Would you want to drive in a bus with a bus driver who just barely got his driver's license? Would you want to use a bridge designed by a…

> Just apply the same reasoning to other areas: Would you want to drive in a bus with a bus driver who just barely got his driver's license? Would you want to use a bridge designed by an architect who knows just enough to complete the job and does not care a bit for more? I don't think this part is useful. If you're writing directly code for an application you don't usually need to be the best, and your errors can be…

I have always assumed many programmers are terrible at sports in general so they turn programming into this weird sport of who can be the Cristiano Ronaldo of programming.

Re: Teach Yourself Programming in Ten Years (1998)

#58
post #44
post #39

Earlier quoted context omitted.

not all code is life threatening in worst case scenario. Better comparison would be "would you like to be served by first time waiter or rather expert one?". In most cases it doesn't matter, and when it does, the price point of the service is significantly higher.

This is mostly just a rant not directed at you but on the state of software... The Colonial Pipeline ransomware wasn't life threatening. These things happen because of bad* developers and zero accountability from developers over publishers to software owners. As it is now pretty much all commercial software is "first time waiter" quality. Granted it isn't all on the actual developers but on the whole pipeline(!). Mos…

I'd like to add that modern agile IT environments are different than that of traditional engineering.

We aim for fast MVPs, fast iterations, "failing fast", "moving fast", "delivering value quickly", generally preferring speed over quality, agility over "waterfall" planning, continuous delivery over batched releases and, well, often accruing tech debt over shipping features later.

One can argue that "fail fast" should not be about code & feature quality but rather about determining proper scope, splitting features sensibly etc. But then we still have deadlines to meet and code quality suffers.

What I'm saying that this kind of fast-moving environment actively discourages traditional (like doctors & civil engineers) engineering practices.

You might have lots of (unit|integration|E2E) tests but the company may miss practices like proper security reviews and code won't be reviewed, tested and approved by multiple people like, say, bridge building plans are.

This problem mostly comes up not with your usual web app but when critical systems are affected (like in the aerospace industry or industrial systems). But through supply chain attacks, nearly any system can be vulnerable these days.

We should definitely have better regulation on how software is made.

Re: Teach Yourself Programming in Ten Years (1998)

#59

I 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…

I 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?

Re: Teach Yourself Programming in Ten Years (1998)

#60
post #47

Earlier quoted context omitted.

> Just apply the same reasoning to other areas: Would you want to drive in a bus with a bus driver who just barely got his driver's license? Would you want to use a bridge designed by an architect who knows just enough to complete the job and does not care a bit for more? I don't think this part is useful. If you're writing directly code for an application you don't usually need to be the best, and your errors can be…

I have always assumed many programmers are terrible at sports in general so they turn programming into this weird sport of who can be the Cristiano Ronaldo of programming.

That's a pretty unfair way to put it. People that do "too much" to try to impress their collegues or themselves exist everywhere. You can see it in some people's code, you can see it in the way some people dress, you can see it in some powerpoint presentations, you can see it in sports.
Post reply on HN