Hacker News new | ask | show | jobs
by linkmotif 3072 days ago
I think the conversation we should have is why we make everything seem so hard. What a bunch of hooey.

In 5th grade everyone talked about how Algebra was hard. When I got to Algebra, it was pretty easy. I was very surprised! Of course my dad had to explain it to me, because my teacher was incapable of explaining it.

10th grade, same thing with calculus. Thank god my dad knew calculus and was patient. Because my teacher did not.

And so on and so on.

One thing I’ve noticed is that nothing humans have invented or discovered is hard. Learning things requires curiosity, a lot of patience, and someone showing you how to get from A to B in small steps. Overwhelmingly, the inventors and discoverers are the people at the bleeding edge of those small steps who find a next step.

Programming is no different. We need to stop infantalizing people. Most humans are incredibly capable. We don’t need programming languages for children. A child can learn Python or JavaScript. You just have to show them that it’s cool. But instead most adults show kids that sports, video games and Netflix are cool. So, c’est la vie.

Today unfortunately we have a culture of “you can’t, it’s hard, it’s not for you, other people do that.” People always refer to “they” when they’re taking about people inventing something. This is good for the rich and easy for the poor. Who is “they”? What if instead of “they” it was “we”?

13 comments

>In 5th grade everyone talked about how Algebra was hard. When I got to Algebra, it was pretty easy. I was very surprised! Of course my dad had to explain it to me, because my teacher was incapable of explaining it.

Surely the concept of outliers, survivorship bias, and statistical noise is easy too then!

>Of course my dad had to explain it to me, because my teacher was incapable of explaining it. 10th grade, same thing with calculus. Thank god my dad knew calculus and was patient. Because my teacher did not.

So, how do we produce millions of capable teachers (as opposed to the non-capable current bunch), with extra patience, and each dedicated to one or a tiny group of students?

Because this is not about how subject X is easy, but about how subject X can be made easy (or easier) under ideal conditions.

And even then, only if we assume you were a typical student, and not especially gifted or motivated.

>Programming is no different. We need to stop infantalizing people. Most humans are incredibly capable.

What if the problem is not how to teach motivated people under ideal conditions, but how to motivate or even how to teach unmotivated people, under all kinds of conditions (e.g. working class family, problematic household, poor school district, etc).

We could also change the conditions.

E.G: stop promoting growth so that we eventually get a system we can manage more easily.

Or change the way media communicate so that people focus their efforts in a different direction.

Or relocate budgets from war to education and research.

And so on.

"and each dedicated to one or a tiny group of students?" ... I think you are onto something there. Anecdotally many of the 'survivors' that claim $subjects are easy did have 1-to-1 tutor for some parts of the journey.
Well, not everyone has the benefits of an educated parent who takes time out of their day to tutor their kids through calculus. Maybe "everything seem so hard" to people without those kinds of advantages.
I think this is much bigger problem:

> because my teacher was incapable of explaining it

Education is broken, and not "impulse-fixable", ie it will require years of collective concerted effort to affect change, if it is ever fixed at all.

"A dad who knows ____ and can teach it" is, on the other hand, a practically-attainable real-world solution.

Is it? Seems like pure luck, not like we choose our parents?
he would have learned it regardless of his dad teaching him - because he is smart. education can't do much to change the population distribution of intelligence.
I don't know about that. "Being smart" isn't a big enough hammer, sometimes.

I'm "smart". I taught myself how to program, and now I'm an architect-level developer that's respected by everyone I've ever worked with. But I'm also a college dropout. I had a terrible education ("Christian" "school" with no qualified teachers) and my parents were no scholars themselves; and I gave up on college because I couldn't get a CS degree without making it through Calc 1, which I didn't even get to until my second year of college because my whole first year (and the summer prior!) was spent in remedial math.

I worked every night in the math lab with the smartest tutor I've ever met. I stayed up until 2a every night trying to get my Calc 1 homework done. But it wasn't enough. I didn't have a strong enough foundation to pull it off. It was too little, too late.

Years later, I think I'd do much better, as learning how to develop enterprise-grade data warehousing and ETL solutions has taught me /how/ to learn. But at the time, I had no good "tools" to use - I just knew how to memorize, memorize, memorize. And it just wasn't enough.

If my stupid, fucking, batshit insane religious-maniac parents had just let me go to a public high school - like I begged them to - all of this could have, and would have, been avoided.

"Smart" often has nothing to do with actual IQ (if it can be measured), but with opportunities and possibilities.
> a practically-attainable real-world solution.

I can't be understanding this correctly. Please expand, I fear otherwise this is going to be at the back of my mind all day.

If you are a parent with a school-aged child, and you want to fix a deficiency you perceive in calculus education, it's easier to get strong at calculus and teach your child yourself than it is to reform the education establishment.
Thank you for the clarification.
I've had professors that I absolutely confirmed did not know the subject they were teaching. I had a web application development class during college where I had to dispute my exam grades every time because the professor would mark things wrong that were not wrong, and I'd have to go show him the code running.

Except for the final, I think he gave up trying to fight it and just gave me a 100 on that one, because I know I missed one of the CSS questions.

We never actually built a webapp in that class, either. Luckily for me, I'd been doing it for years already (older student, this time around), but I feel bad for the other students who were new to it.

That is definitely true, but misses my point. Most students have to deal with this "much bigger problem" but most students don't have a parent with the time, education and patience to teach their kid calculus. The GP just comes off as arrogant and out of touch when he laughs off the rigorousness of calculus while simultaneously humble bragging that his dad was his personal calculus tutor. He also didn't miss an opportunity to shit on normy parents who pollute their children's brains with such banal pastimes as sports, games and netflix. It's ridiculous.
Truuue that. Not comp sci but ended up taught myself math, coding, and some philosophy.
>>One thing I’ve noticed is that nothing humans have invented or discovered is hard.

That is true if you are discovering or inventing it. Trying to understand what other people discovered or invented is hard as you are skipping the journey and arriving straight at the results, without going through the dead-ends, u-turns, restarts and various other ups and downs in the journey making many side discoveries including many meta discoveries alone the way.

There is this anecdote from the life of Richard Feynman, that he sort of put his physics textbook aside and worked through all of that on his own and discovered all of it on his own. The reason being its impossible to truly understand things in a deep fundamental way unless you discovered it yourself.

You can learn anything you want. But you have to embark on the journey of rediscovering all of that on your own.

> "One thing I’ve noticed is that nothing humans have invented or discovered is hard."

This is one of the most absurd and arrogant statements I've ever read on HN.

If this is true, why don't you read some textbooks for a few years and start flawlessly performing surgery? Why don't you write a world-renowned novel?

> "A child can learn Python or JavaScript. You just have to show them that it’s cool. But instead most adults show kids that sports, video games and Netflix are cool."

Lots of kids know Python and JavaScript. They may think it's cool or not. They're right either way because nothing is objectively cool.

I'm a programmer and I myself see it as a means to an end (a fun one, sure). It's not meaningful to most people, not any more than plumbing or chess is meaningful to most people.

People don't only fail to learn hard programming languages because they're lazy or haven't unlocked the magic of programming. Many of them just don't care to learn them or enjoy them, and that's fine.

> why don't you read some textbooks for a few years and start flawlessly performing surgery?

You missed the point because you weren’t open minded enough (admittedly OP left it ripe for you to jump to this conclusion). What I believe OP was trying to say was that the example you mentioned above isn’t some impossibly hard thing that only those with a special gift can do, but rather that with the right motivation, enough practice, and possibly the right teacher, you too can achieve it. OP also did not put time boxing on how long it would take (that’s on you there), but said it’s achievable if the above is met.

You've moved the goalposts from "hard" to "impossibly hard." That doesn't seem like what they were saying to me. The original comment even contrasted it with "pretty easy."
What helped me to learn programming as a 10 year old child, was the 80's programming books targeted at children.

Always full of drawings, or little stories, and along the process I got introduced to BASIC, Z80 Assembly and all the intricacies of Spectrum hardware.

I used to think those books were gone, but they seem to have come back regarding Arduino and Rasperry Pi programming. Just focusing on Python and Scratch now.

Giving them a board with such books and some electronic stuff is probably the best way to teach them. Regular computers have too many layers that just hinder learning and its hard to see things happening.

The massive problem is, learning Z80 assembly for the Spectrum was tricky, but not overwhelmingly so.

The C64, the Spectrum, the TRS-80, etc, were all "small" machines that were simple to learn.

The Arduino, Raspberry Pi and Scratch are also tricky, but not overwhelmingly so, and simple to learn.

The absolutely massive difference with the environments of the 80/early 90s and today is that

a) The environments learned are heavily sandboxed, caricaturized facsimiles of computing

and

b) Learning Scratch won't lay down a mental model you can immediately apply to Python, and learning Python won't lay down a mental model you can immediately apply to C++, Rust, etc.

Learning assembly language didn't quite leave you with an immediately-usable understanding of C, but what it did do is give you a working knowledge of what everything else was based on under the hood. I'd argue that's an even more valuable gift: the knowledge that you understand what the more complex environment is based on - good for confidence - and the knowledge that if you absolutely need to, you can pull everything to bits and unravel bits of it - which immensely helps with discovery.

Nowadays, it's like worst-case simulated annealing. "Climb Mt Everest, then climb all the way back down to climb Mt Everest²."

> Nowadays, it's like worst-case simulated annealing. "Climb Mt Everest, then climb all the way back down to climb Mt Everest²."

I don't think that's a good analogy, I think it's more like "Climb up to base camp, then climb halfway up, then climb ...".

I learnt Python before I learnt C and learning C I was constantly having these "Aha!" where I suddenly realised why Python is the way it is. I didn't have one mental model for Python and a different mental model for C, I had one mental model for computing which was enhanced by learning C.

And on top of that Python isn't a fundamentally different language to (for example) JavaScript, sure the details differ but somebody who knows Python won't have to spend months learning JS. Arguably a language like Haskell is a fundamentally different language to something like C, but there are plenty of things that you learn when learning C that can be applied to Haskell.

I don't think the issue is all these concepts are orthogonal, I think the issue is that there are just so many concepts. Back in the 80s learning assembly might have got you 30% of the way up Mt. Everest, whereas nowadays it might only get you 1% of the way up.

Scroll down to the bottom of this page:

https://usborne.com/browse-books/features/computer-and-codin...

Just seeing those covers gave me a huge nostalgia-trip, from my own time programming the ZX Spectrum in the 80s. (First in BASIC, then in Z80 assembly via the fine manual.)

Lovely!

Have you also used the Input magazines?

https://en.wikipedia.org/wiki/Input_(magazine)

No, that's something I don't think I've ever seen before.

I used to read a few of the Spectrum magazines back in the day, Your Sinclair, Sinclair User, etc. But over time they all dumbed down and started to be more about advertising and game-reviews, rather than having a mixture of programming-content and other stuff.

I did get some POKEs printed though, so it wasn't all bad!

I loved the input magazines. I’ll have to dig out my old ones ! I think we only had them in the uk though?
They were widely available on the Iberian Penisula as well.
While I was a Commodore boy in the 80's, I know what you're talking about and I came across a book that had the same feeling "Clojure for the Brave and True": https://www.braveclojure.com/ - it was like a jump into the past.
There are most certainly human inventions / discoveries that are, in some sense, "hard" (either to discover in the first place, or to explain / grasp). We have a biased view here: we can look back at, e.g., Einstein's general relativity and summarize its development as "well, he just thought to explore the logical implications of having a constant speed of light!" We have that luxury of hindsight (and several decades of steadily improving explanations of the original insight).

Then you go and start reading Actual Science: Minkowski spaces? Tensors? Paradoxes about long objects and barns? Gravitational lensing? Figuring out where to go with that initial idea is decidedly non-trivial.

In the extreme, there are papers at the bleeding edge of mathematics that can only be meaningfully reviewed by half a dozen people worldwide. Understanding these papers (or anything at the limits of species-wide knowledge) is a far cry from grasping algebra / calculus: eventually you hit a point of diminishing returns, where further advances in your understanding of the problem require months or even years of dedicated study...

...and yet (assuming we refrain from destroying ourselves) these same problems may eventually find their way into high school textbooks, where they will be succinctly (and approximately / incompletely) summarized so as to make them look easy and incremental. That's great! It means we've permanently moved the pedagogical starting point forward for future generations, so that they can go and struggle with truly hard problems that we don't even know to ask.

My point: yes, some things are hard, even if most are not. I'd say that the trick to advancing humanity lies less in convincing students that everything is easy given enough time / patience / curiosity, and more in getting them to stick with hard problems: to normalize failure, as it were. That said, I do agree that we should avoid presenting things that aren't truly hard as though they are :)

Having this conversation on HN risks bias. Most of us have been selected for our cognitive skills. Regular people have a terrible time learning programming. See https://cacm.acm.org/blogs/blog-cacm/224105-learning-compute... I suspect that programming is so hard not because it is necessarily so, but because it has been developed by people like us for people like us, who can tolerate or even enjoy massive complexity.
From teaching programming for some time to "ordinary" people, there is a difference in programming languages. Many have accidental complexity, like compilation, tooling, linking, braces and APIs. With some, like LOGO and BASIC, I have much better success rates in making people understand programming. I produced a lot of cargo cult developers when I've started with Python or Java.
programming is not impossible. a lot of us do it. maybe as you say more people should instead of believing it to be impossible.

but most of us that do are pretty frustrated at the how much time it takes, and how many artificial concepts we have to become accustomed to.

compared to the systems we use, the fundamentals of information processing seem really quite simple.

maybe, there is a way of describing simple programs that doesn't require months or years to master. I certainly wish personally that little ideas that occur daily didn't take weeks to realize....and I'm pretty sure given the simplicity of some o those notions that there isn't anything fundamental that requires that amount of brute force work.

and if there were a system, that cut a bit more quickly to the chase - maybe programming would become a useful tool for people that don't have the time or temperament to spend a couple months learning how.

> Today unfortunately we have a culture of “you can’t, it’s hard, it’s not for you, other people do that.”

"The brick walls are there for a reason. The brick walls are not there to keep us out. The brick walls are there to give us a chance to show how badly we want something. Because the brick walls are there to stop the people who don’t want it badly enough. They’re there to stop the other people."

https://www.youtube.com/watch?v=ji5_MqicxSo

Lately, I’ve been learning sleight of hand and card magic and I’ve seen this mentioned in the magic community too. It’s advised not to teach friends who ask you to teach them, instead you should point them in the direction of self study resources (books, courses, search keywords) and let them figure it out for themselves. The reason given for this is that many people want to learn just so they know how something is done, but are not motivated enough to actually put the hard work (practice) in. By learning how it’s done without practicing, they ruin magic for themselves (you see this a lot in YouTube comments, where people don’t enjoy a routine for the skill and performance that it is but instead feel the need to figure it out and reveal it to others, often in a derogatory way “I figured it out, it’s shit” but of course they figured it out if they can watch frame by frame over and over...)

Basically what I’m attempting to say is that the brick wall is a useful tool to make sure that the people who want to learn without putting any work or practice in are filtered out from the ones who want to learn and do put the practice in.

I recently said to someone that I believe that (almost; obviously disabilities and such exist) anyone can learn (almost) anything, all it takes is three things:

1. Motivation. You have to want to learn it. In the in text of learning to program, I do believe almost anyone can learn it, but many people have no interest in programming and they will struggle if they try to learn.

2. Practice. It takes time to get good at anything. If you don’t put the time in, you will struggle.

3. A good teacher. Sometimes even with motivation and practice, some things are still really hard. A good teacher can break things down or give you a different perspective. A good teacher makes a massive difference. You don’t always need a teacher (good or otherwise), but some people will. Sadly, not all teachers are good and not everyone has one.

The big assumption you are making is that we have already found all the 'algebra and calculus' models - i.e. the good mental tools - in computing.

You could do division in roman numerals and perhaps people even then justified it with 'math is just hard, learn and deal with it' but things can get easier when you have better models, better representations and better mental tools. A big advantage of the computers is that they themselves are dynamic and interactive and so they can actually amplify the mental tools.

I feel that problem is educational system. At least in my country it is optimized for grading what children know but it fails badly to teach or motivate them. So children are forced to learn it by themselves or find someone to help and it is enough to learn for exams. This is not fun. They are just learning things they do not understand and they don't know how to use it for anything else than exam. All attempts to improve it usually start by redesigning exams which couldn't help but it is the easiest approach with fast results.
you are smart. the vast majority of the population is dumber than you. the average person will struggle to master basic algebra and simple programming concepts.