Live data from Hacker News

Teaching how to code is broken

neil.computer

171–180 of 258 posts

Re: Teaching how to code is broken

#171
post #78

Earlier quoted context omitted.

E'ybody wants to be a bodybuilder, but don't nobody want to lift no heavy-ass weights. https://youtu.be/4UlgXIL0-3g?t=10

I know it's a pithy saying, but is it true? People tend to report the actual lifting of the weights as pretty pleasurable. It's the whole supporting lifestyle grind of consistently making it to the gym, only and always eating food whose ingredients you have weighed, etc. where you lose most people.

> People tend to report the actual lifting of the weights as pretty pleasurable

Slightly NSFW: https://www.youtube.com/watch?v=-xZQ0YZ7ls4

Re: Teaching how to code is broken

#172
> Teaching how to code should be about problem-solving and effectively using the tools of a programming language to solve it. Say for example modeling a card game. Even better if the example is a continuous improvement starting from the very basics, hard coding stuff, and then increasing the scope as follows:

How funny! This is exactly the approach Jenny Greene and I took in Head First C# (O'Reilly), right down to the way we start with cards and suits, then ordering, building up to a complete card game.

Re: Teaching how to code is broken

#173

> Teaching how to code should be about problem-solving and effectively using the tools of a programming language to solve it. Say for example modeling a card game. Even better if the example is a continuous improvement starting from the very basics, hard coding stuff, and then increasing the scope as follows: How funny! This is exactly the approach Jenny Greene and I took in Head First C# (O'Reilly), right down to th…

This is also the exact approach Stanford's CS193p used as an introduction to iOS development!

https://cs193p.sites.stanford.edu/

You start with a static card on the screen and slowly add more robust features until you have a fully working card game.

I was able to follow this course in 2014 as a freshmen in high school and it certainly influenced my trajectory to being a professional mobile and web developer today. The greatest nugget I took away from this is that programming is not about actually knowing anything about the computer: it's about declaring "this is what I want" in a computer-friendly way and then following through with "how the hell do I get you to get out of my way?" aimed at the compiler. Although work experience has taught me that you also sometimes need to port this approach to managers and coworkers.

I also think this is why generic questions like "how do I learn programming?" put you in the wrong direction. You don't care about programming, you want to build an app, or a website, or a business, or a game. The first step is admitting what you actually want and then you accidentally end up learning programming along the way.

Re: Teaching how to code is broken

#174
post #170

It’s a little confusing and sad to me that people have to try to pressure themselves to go from zero to professional engineer in a short period of time. That sounds stressful and, frankly, almost impossible. Like a lot of people here, I taught myself how to code as a child in a terribly inefficient manner. I spent probably around 100 hours making games on my TI-83 - you had write a formula to figure out how to color…

>>>> I’m grateful that my childhood obsession turned out to be absurdly lucrative. Best wishes to everyone, young and old, diving in for the first time!

There does seem to be an irony, that the people who were movitated by interest in the subject matter aside from money, turned it into a lucrative career. Meanwhile the people who were motivated by a lucrative career lost interest quickly. Maybe not general enough to be a good generalization, but I've seen it a number of times.

I think market demand for certain skill sets does not contradict the principle of "find your passion," but just means that some peoples' passions lead to marketable skills.

Becoming a good scientist, or professional musician, takes about 15 years, starting in middle school or earlier.

Re: Teaching how to code is broken

#175
I am surprised no one mentioned the now-classic How to Design Programs https://htdp.org/2021-11-15/Book/index.html, which was one of the first intro textbooks to actually take in account some education research.

Since then, there is https://dcic-world.org/2021-08-21/index.html by some of the same people with substantially more education underpinning it.

The blog post has some good ideas, but really we can do so much better than armchair musing about sclerotic curriculums now!

Re: Teaching how to code is broken

#176

Earlier quoted context omitted.

I've forgotten the material from many courses I've taken. But I've also discovered that the knowledge quickly returns if I retake a course on the same material, far quicker than it took the first time. The knowledge is still there, it just needs some WD-40 to break it loose again. And yes, doing column buckling problem sets in college enabled me to size the jackscrew for the 757, as it was a column buckling problem.

I don't know anything about column buckling, but if you'd cranked out a bunch of column buckling problem sets and not paid any attention to when/where it would be applicable, would it still have helped you later? If you had forgotten the exact technique, would you have been able to check a reference book anyway? Do you think memorizing names and dates of people and events from World War I gives much mastery of histor…

I knew how the column buckling equations were derived, therefore I knew when they were applicable and when they weren't.

As for checking a reference, I knew that "column buckling" was a thing. Before I studied it, I didn't know the concept even existed, and would have no idea how to look up something I didn't even know existed or what it might be called.

> Do you think memorizing names and dates of people and events from World War I gives much mastery of history?

How are you going to understand WW1 without knowing who Ludendorff was? I know that if you don't know names and dates and events, you cannot have a mastery of history. You don't have any framework to hang analysis or understanding on.

> Or would memorizing the names of standard library functions

Nobody does that. But I will say that if you can't name any of them, I guarantee you don't know squat about C.

> and the academic definition of `pointer` and `recursion` give you much mastery of C?

I wonder how many C experts you know can't answer a question about what a pointer is.

Re: Teaching how to code is broken

#177

Earlier quoted context omitted.

/watches straw man fall over without putting up a fight. Would you rather work with someone who added a major subsystem to one of your compilers for fun or someone who had never coded but could recite the ISO standard by heart? Who believes the former person “would not be able to answer questions about [the subject]”? If measurements tend to become targets over time then the goal of “develop expertise” measured by “p…

> Who believes the former person “would not be able to answer questions about [the subject]”? All the people who believe that "teaching the test" is not real knowledge. For example, would you hire a lawyer who flunked the bar? How about consult a physician who couldn't pass his medical boards? How about get on an airplane with a pilot who flunked flight school, but "really knows how to fly"? And yes, there are bad te…

Lawyers who lose cases, physicians who couldn't save their patients, and pilots who have been in plane crashes still get to work in their occupation after the fact. Experience rules over all.

In your examples all those people never got to practice their craft. Lawyers can't practice law without a bar, physicians can't perform surgery without a medical license, etc. But software development isn't like that. What if there was a surgeon who has completed 10,000 successful surgeries but never went through med school? What if there was a lawyer who won major cases with no law degree? Or a commercial pilot who successfully flew for years on a fraudulent license and only stopped flying because he got caught? (That last one actually happened a few months ago).

If you could choose, would't you pick the surgeon with a wildly successful track record over the recently graduated med school student who has never done a surgery outside of residency?

Re: Teaching how to code is broken

#178

Earlier quoted context omitted.

> Who believes the former person “would not be able to answer questions about [the subject]”? All the people who believe that "teaching the test" is not real knowledge. For example, would you hire a lawyer who flunked the bar? How about consult a physician who couldn't pass his medical boards? How about get on an airplane with a pilot who flunked flight school, but "really knows how to fly"? And yes, there are bad te…

Lawyers who lose cases, physicians who couldn't save their patients, and pilots who have been in plane crashes still get to work in their occupation after the fact. Experience rules over all. In your examples all those people never got to practice their craft. Lawyers can't practice law without a bar, physicians can't perform surgery without a medical license, etc. But software development isn't like that. What if th…

I don't buy for a minute you'd choose a lawyer who didn't pass the bar, etc.

Re: Teaching how to code is broken

#179

Earlier quoted context omitted.

> Who believes the former person “would not be able to answer questions about [the subject]”? All the people who believe that "teaching the test" is not real knowledge. For example, would you hire a lawyer who flunked the bar? How about consult a physician who couldn't pass his medical boards? How about get on an airplane with a pilot who flunked flight school, but "really knows how to fly"? And yes, there are bad te…

Lawyers who lose cases, physicians who couldn't save their patients, and pilots who have been in plane crashes still get to work in their occupation after the fact. Experience rules over all. In your examples all those people never got to practice their craft. Lawyers can't practice law without a bar, physicians can't perform surgery without a medical license, etc. But software development isn't like that. What if th…

> pilots who have been in plane crashes still get to work in their occupation after the fact.

Most of them are too dead to continue to work, and the rest usually get fired if the crash was due to pilot error.

And no, I don't believe you're going to fly with a pilot who flunked out of flight school.

Re: Teaching how to code is broken

#180
post #107

> Why? Because none of these chapters answer the most important question a reader has, the entire time, WHY!? Why is all this important and what problems does it solve? When should I use this thing that I learned? When I was an undergrad taking an advanced class about probability theory, I asked my professor for help understanding the bigger picture. I could solve each of the problem sets, but I couldn’t see the bigg…

I agree with this. Usually when I learn something for the first time I'm lost. But after I become a beginner in it, then go back from step 0, things get much easier to understand. This has been the best approach for me.
Post reply on HN