Hacker News new | ask | show | jobs
by freediver 2338 days ago
As someone who has started programming at age 8, I find Scratch inadequate. It may teach kids how to code, but it doesn't teach coding.

There is something in writing every letter of a command when you are a kid.

There is something that gets born inside when you write and execute this for the first time:

10 PRINT "HELLO"

20 GOTO 10

RUN

My kid is 8 now and I plan to introduce her to an online C64 emulator and BASIC. If it does not stick, there is nothing that Scratch will be able to do. https://floooh.github.io/tiny8bit/c64.html

5 comments

We use Scratch at Girls Who Code. Kids in the class are 9–12 or so.

I'm not the one who decided to use Scratch, but from observing the kids, one huge reason to use it is that most of the students can't type. If they want a character to say something, they use one finger to type out the sentence letter by letter, very slowly.

If they had to type everything, I don't think the class would work.

I politely disagree... My first programming was using the scaffolding of game engines. After a few years of those kinds of toys was I exposed to C, where I only knew how to use ASCII printed to the screen as output.

For a while, I used both the game engine and C. There were many ideas I wanted to try, that I could simply execute faster with the majority of the engine already in place. Exposure to C let me do things the game engine didn't support, but at the cost of losing graphics.

If your kid doesn't like C64... it doesn't mean "there is nothing that scratch will be able to do". Scratch supports graphics, sound, and more. C64 supports, at best, blocky graphics with ~16 total colors. And even then, the nuances of sprite limits, etc... It can get in the way.

Kids like games. Don't underestimate the value of graphics and sound support as a motivating factor.

If it does not stick, there is nothing that Scratch will be able to do.

Those are some pretty strong words. Did you do any research on this topic?

If you browse the scrath projects online, people make full video game clones in scratch.
No, just intuitevely. Hard to imagine becoming a great cook by pointing and clicking. Or a great pianist by pointing and clicking. A big part of what makes us human is what continous practice does to our brains.
Your ability to dismiss something you know nothing about is impressive, as is your focus on superficial interfaces over deep semantic content.
Have to agree with this. I find that Scratch removes the dangers and perils of programming for any level, which, unfortunately, are the parts that you learn the most from.

Think about when you began to code. You tried printing 'Hello World' and that was good. Then you tried doing some more, and quickly ran into some trouble. At this crucial point, is where you are bound to learn the most. Troubleshooting is part and parcel of the experience. People need need to experience those painful points to grow, even young programmers.

That is thinking like an adult, though. First, hook kids on the joy of creating something interactive THEN they can develop the rigor to improve and learn more so they can do more. But if they start by hunting for missing semicolons they aren't going to want to bother continuing. Typing and syntax aren't programming anyway, just the most common input method.

I started coding by copying BASIC programs out of magazine (the olden days) and it was excruciating as a child limited by attention and focus. I never really learned anything about why things worked or didn't until much older. Slapping things together for fun and extending things to try new ideas seems way more effective to me.

Feel like you're taking your own experience and extrapolating. Assuming that in order to program is must be this gauntlet of difficulty one must overcome in order to be a true programmer.

Many people may give up when they encounter this trouble, but it doesn't mean they can't program eventually. Scratch may give them the tools they need to see what programming can do, then moving on from there.

The kids in my class run into all sorts of standard programming problems.

Two girls was creating a program where multiple characters had a conversation. Each character paused a set amount of time before saying its next line, and because the pauses weren't timed correctly, the characters kept talking over each other.

We draw a timeline together so the students could understand what was going on. The kids realized that every time one character was adjusted, every other character's code needed updates to match, and that this would get increasingly complicated as more lines of dialogue were added.

We talked through adjustments that could be made to lower the complexity. I suggested that when one character finishes speaking, it should "broadcast" a signal that it's the next character's turn. I don't remember if they actually refactored it, but they understood the problem-space and tradeoff.

You mean like how toy cars remove the dangers and perils of driving an actual car? Or how plastic cutlery removes the dangers and perils of sharp steel cutlery?
what if they... enjoy making things in scratch without aspiring to greatness?
Why are loops better with line numbers and typed commands? This just screams nostalgia.
I've seen a lot of actual developers try Scratch and think WTF is this? How do I .....?

It's weird how you need to rewire your brain for it.