Live data from Hacker News

Teach Yourself Programming in Ten Years (1998)

norvig.com

171–180 of 323 posts

Re: Teach Yourself Programming in Ten Years (1998)

#171
post #101
post #89

Earlier quoted context omitted.

If only there was a way to let poster know about past threads before posting...

Reposts are fine after a year or so! This is in the FAQ: https://news.ycombinator.com/newsfaq.html . When a link has had significant discussion in the last year, the software will normally redirect the submitter to the previous thread rather than allow a repost through.

For what it's worth, I think this helps HN feel fresh. This is the first time I've read this article, and I enjoy the comments left by my fellow cohorts of this year's read, just like it was something new.

Long lived historic articles can shape multiple years worth of discussion. I think it's even more fascinating to read the comment history and see what the current thinking is, if it has changed compared to previous years, etc.

Re: Teach Yourself Programming in Ten Years (1998)

#172
post #158

Earlier quoted context omitted.

Fundamentals don't change. Sure there's a new frontend framework every week but they're all just generating html.

+1. What are the fundamentals of CS? Algorithms?

and data structures. Theres a book called Algorithms + Datastructures = programs which i've heard good things about.

I've also heard good things about 7 programming languages in 7 weeks, as well as crafting interpreters.

The latter 2 I intend to pick up this year

Re: Teach Yourself Programming in Ten Years (1998)

#173
post #73

This essay holds a special place in my heart, since I first read it as a teenager when I was just starting to learn to code. Re-reading it now, I was surprised to see references to Malcom Gladwell, since I didn’t remember Outliers becoming a thing until much later. Then when I saw the reference to Ratatouille, I realized the article had been updated since its posting in 1998. The original is still available on archiv…

I resent Gladwell to this day, possibly because I was assigned to read him in high school. He is quoted too much -- the 10,000 hours thing is just a meme at this point, for me anyway.

Re: Teach Yourself Programming in Ten Years (1998)

#174
post #97

Earlier quoted context omitted.

> I can’t think of anything that was a waste to learn other than scrum. Believe me, I have plenty of criticisms of that entire culture but it has a lot of good ideas. What in particular (besides the obvious overwrought ceremony) do you find not worthwhile?

It has no good ideas. All the ideas that appear good are taken from agile, which 20 years ago WAS good. But then the process managers came in, the management seeking clarity on delivery dates, and engineers who got into it for a good job seeking ways to avoid doing real work because they’re actually not into engineering. It’s a morass of everything awful about stupid management cargo cult bs meant to emulate but not…

> from agile, which 20 years ago WAS good.

It's completely wild to me to have been in the field long enough to remember when agile was revolutionary, and then to see it slowly become twisted by decades of mismanagement into something that people hate today.

For most engineers today "agile" just means using jira, 30-60 minute long "stand-ups", and a perpetual panic about not getting enough done in 2 weeks.

Re: Teach Yourself Programming in Ten Years (1998)

#175

I bought a copy of "Sams Teach Yourself C++ in 24 Hours" at a CompUSA in 1999. The guy at the checkout looked at it, laughed, and told me about this article. When I was 16 I was looking at programming books at Borders and a guy handed me a copy of "The C Programming Language"; changed my life. So much of my career has been shaped by running into developers or just people interested in programming out in the world. Th…

I got started buying Borland C++ Builder in… 1997, I think, and read the book that came with it which was similarly named. It was quite bad, I remember the chapter on pointers more or less said “I can’t explain why you’d want to use them, but when you find a situation that requires them you’ll know you need them” or something like that.

Re: Teach Yourself Programming in Ten Years (1998)

#176
post #158

Earlier quoted context omitted.

Fundamentals don't change. Sure there's a new frontend framework every week but they're all just generating html.

+1. What are the fundamentals of CS? Algorithms?

No particular order but how they came to mind:

Data structures, algorithms, algorithm analysis, various discrete math topics (set theory and number theory, a bit of graph theory, are usually included in a typical CS undergrad curriculum), models of concurrency, models of computing (lambda calculus, Turing machines), complexity classes, Chomsky hierarchy, type theory (some might consider this more advanced, varies by school and its lean towards practical or theoretical CS), systems of logic.

Re: Teach Yourself Programming in Ten Years (1998)

#177
post #28

> The key is deliberative practice: not just doing it again and again, but challenging yourself with a task that is just beyond your current ability, trying it, analyzing your performance while and after doing it, and correcting any mistakes. Then repeat. And repeat again. I think this is the really important part, you have to challenge yourself and go outside of your comfort zones to keep learning.

As a software developer with some tutoring/TA experience, I'm concerned about whether the next generation of devs will actually be able to code, if all they had to do was use a Copilot to complete their assignments, especially at the freshman/sophomore level. They'd be automating themselves out of usefulness at that point.

Then again, we've had similar conversations about "iPad kids." As an iPad (along with everything else) user, I find it's not a bad approximation of a laptop -- you do have a filesystem, for example, and apps continue to be more fully-featured (in an Apple-approved way, of course).

I use copilot myself, but mostly as a smart autocomplete for setting variables or other minor things that consume time better spent contextualizing through problem solving and interacting with teammates. It's not a substitute for being an engineer.

Re: Teach Yourself Programming in Ten Years (1998)

#178

Earlier quoted context omitted.

ChatGPT has been a blessing for learning C. How do you calculate the conjugate for a complex double when the compiler doesn't support complex numbers? ChatGPT will give you the correct answer together with math examples. One example out of many. Then I verify the result by looking at other people's code - and now I know what to look for. I wouldn't use Copilot. I've noticed how it distracts people in screen recording…

> ChatGPT will give you the correct answer together with math examples. Actually, back in the days, google would have given you a tutorial with the correct answer together with examples too. You don't need LLMs for this, just honest search. But honest search is gone. I wonder how long till ChatGPT gets entshitified too...

Yes, Google isn't so good nowadays, or my problems have become sufficiently advanced to not be a quick search away.

What might save us from ChatGPT enshittification are the freely available LLM's. Probably won't be long before we can have a code companion running locally. It's probably already here

Re: Teach Yourself Programming in Ten Years (1998)

#179
post #120

Earlier quoted context omitted.

I feel most of my time as a professional software engineer has been learning stuff that I didn't need to. And I would argue that the majority of debugging time goes into debugging external code from libraries, the language itself, company-provided platforms, code, libraries, DLLs, experimentally figuring out how to use a system or tool that isn't documented, and more. It's pretty miserable. It'd be like being a carpe…

This is precisely part of the job. Somehow your expectations are very different than mine.

It's part of the job, but it shouldn't have to be. If software engineers just did things properly, then we wouldn't have to deal with each others' messes.

Re: Teach Yourself Programming in Ten Years (1998)

#180
post #120

Earlier quoted context omitted.

I feel most of my time as a professional software engineer has been learning stuff that I didn't need to. And I would argue that the majority of debugging time goes into debugging external code from libraries, the language itself, company-provided platforms, code, libraries, DLLs, experimentally figuring out how to use a system or tool that isn't documented, and more. It's pretty miserable. It'd be like being a carpe…

>> It'd be like being a carpenter or mechanic but spending the majority of your time debugging, fixing, and communication with manufacturer's of broken or poorly working tools. What do you think a mechanic does ALL DAY? Very few carpenters start with a raw blank of nice wood and craft something amazing. It's all interpreting plans (poor spec), framing (boiler plate), figuring out an addition (bolting on features to a…

> What do you think a mechanic does ALL DAY?

Are you implying that they are fixing their tools rather than cars? I don't know any mechanic that would put up with that and would replace their tools with tools that actually work.

Post reply on HN