A big part of it is that you can, to some degree, learn programming from this. But you absolutely cannot learn software engineering from this.
A big part of it is that you can, to some degree, learn programming from this. But you absolutely cannot learn software engineering from this.
The script is already flipping, with kids making software using AI but they can only fumble forward inch by inch while burning tokens. It would be great to introduce programming in the way it functions in the workplace - we want to make a Mario clone, start with the goal, hammer out the elements to a certain fidelity then let the AI cook.
Though I doubt that happens much anymore.
(I think some people have caught on to this and found out that Claude is pretty good at it.. not sure what the point of that is but whatever)
https://www.youtube.com/watch?v=ITWSL5lTLig
The video above shows keyboard, but the main motivation for the key-based navigation was actually gamepad.
It did have a slight learning curve, but 5th graders were competing just fine against high schoolers haha.
That said, I think you can learn good fundamentals of SWE with tools like Snap!. You can still learn testing, design patterns, working with APIs, modularity etc.
No it’s not a distributed system, and perhaps the biggest pain point is collaboration is tricky. But still you can learn a ton of cool things without going that far into CS. :)
Visual coding is a pain to change and move around quickly. It’s just clutter ultimately - if you know how to actually code.
it's because this is BS and just a toy, it's got no connection to the real world.
from the angle of someone trying to make some toy to teach programming, maybe in their head it's like: oh this is so simple and easy it should work perfectly for teaching
but from my experience, most of my learning came from "whats this?" "how do i make a thing like this?"
this doesn't provide a way to accomplish that or to promote curiosity
I think same applies to basic CS courses teaching bits and bytes, it's not really useful to know what bits and bytes are if you don't understand what they're even used for or why you should know what they are
however, this is just my subjective point of view, maybe it differs for others.
But "no connection to the real world" is hard to sustain once you look at what people actually build with Snap!/Scratch. The ecosystem is full of bridges to physical stuff:
Cameras, microphones, audio, pen plotters, 3D (BeetleBlocks). Snap! 12.1 (video from a few days ago) adds body-language recognition, Bauhaus-style shape compositions, first-class Processes, translation updates:
https://www.youtube.com/watch?v=ID7wYxzHUAc
Arduino / micro:bit / boards (Snap4Arduino, MicroBlocks, many hardware libraries):
https://www.youtube.com/watch?v=Ltzlzk_zkys&list=PL5OeDsbY1E...
Robots (Finch, Hummingbird, Lego NXT, drones):
https://www.youtube.com/watch?v=6_0EqIbTlkk
Sewing machines (TurtleStitch -- embroidery from blocks; one of my favorites):
https://www.youtube.com/watch?v=K6ra5ThxkrE
Web APIs and IoT:
https://www.youtube.com/watch?v=l_P7MoBG250
ML/AI and digital fabrication (Ken Kahn's eCraft2Learn):
https://project.ecraft2learn.eu/
The "what's this? how do I make a thing like this?" curiosity you describe is exactly how a lot of people get pulled in -- making something move, blink, sing, or stitch on a machine they can see, rather than learning abstract syntax first. Blocks are the on-ramp; the project is the motivation.
Different audience than yours, maybe. But "just a toy walled off from reality" undersells what this community has been doing for decades.
Snap! also teaches real computer science at college level while staying accessible to kids -- not a stripped-down kiddie language. Brian Harvey: "Snap! is Scheme disguised as Scratch" (though he notes the original intent was closer to Logo disguised as Scratch):
https://forum.snap.berkeley.edu/t/hygienic-macros/3258/6
Re alanbernstein's point about keyboard vs GUI: Snap! is not keyboard-hostile. It has a keyboard editor for scripts -- build and edit whole scripts without the mouse, block search from the keyboard, infix arithmetic expressions typed left-to-right. Manual chapter:
https://docs.snap.berkeley.edu/user-interface-elements/#sec-...
Demo (typing formulas from the keyboard):
https://www.youtube.com/watch?v=ahHAl3p3gEU
Full IDE accessibility (screen readers etc.) is still a work in progress; Jens and Brian document what's there now:
so it wasn't the project that was the motivation, it was figuring out how to do it for real, and getting closer to expertise in programming
for example the TurtleStitch, I don't know how to say this exactly, but to me it doesn't strike as something that'd interest people who want to get into programming, but is more like a way to showcase how to do machined embroidery in an accessible way
I might be totally wrong, but my problem seems to be that a lot of this is just about showing off the capabilities of Snap, but it's not really something I would've engaged with for example?
like almost as if the ecosystem simply serves to show off Snap and thus misses the mark?
like Snap doesn't really provide a way to understand how stuff is actually done except for maybe simple logic. So I don't see how it'd be very useful for e.g. learning CS when it's not really something you'd see in the real world, i.e. you're learning a learning platform and some basic concepts
I guess my point is like, if it's not really something that's used in the real world, unlike say JS or Python, why use it instead of getting up to speed in a real language?
again, it could be that I simply don't get it, or that I'm not the target audience, but I feel like there's a reason why these haven't really taken off, and IMO there's no reason why they would need to, because they serve a very specific niche
The point of scratch is not to prepare students for the professional world of computing, nor is it to prepare students for study in a CS program.
Instead, it's to expose students to computational thinking at an early age in an accessible, age-appropriate way. It's the same reason we teach the Bohr model of the atom before exposing kids to orbitals and probability distributions -- the Bohr model is false but at least it can provide a model and scaffolding for future learning. They're not ready for real Python or Javascript yet. You as a child might have been, but scratch is for teaching all students, not just the ones with a preexisting aptitude for coding.
> if it's not really something that's used in the real world, unlike say JS or Python, why use it instead of getting up to speed in a real language?
Why do you feel like exposing young children to professional development tools is important? Have you ever tried to get a class of students up to speed in a real language? Give it a shot and it might answer a lot of your questions.
> it could be that I simply don't get it, or that I'm not the target audience
Yes, this is very likely. Few years back I did a survey of elementary school students and their opinions on programming. Young kids exposed to Scratch reported that programming was "fun", "exciting", "enjoyable" and "something they wanted to continue to do". They viewed it as an extension of art and play. On the other hand, older kids who were then exposed to Python and VS Code no longer reported feeling the same way about programming, instead using words like "frustrating", "hard", "confusing" and most damningly described it "like math class", the least popular subject among students.
Exposing kids to the frustrating and confusing path first is a good way to make sure no one wants to go into the field. You as a child would probably have pursued the field nonetheless, so I can see why Scratch doesn't seem like a good teaching tool to you.
> I feel like there's a reason why these haven't really taken off,
wdym Scratch is wildly popular with students and widely used throughout the world. You see people here in this thread stating it's what got them interested in programming. Something like Snap! is nice because it provides a higher ceiling for Scratch programmers. It's not as popular because it Scratch serves much of the role, but its existence is an important bridge for older students who will eventually transition to Python or Java.
For further reading that can explain the theory better than I can, see the writings of Alan Kay and Seymour Papert, especially Papert's book "Mindstorms".
"This is python, we use it to do professional development work. Here's VS code, we use it to do professional development work. Let's learn them."
6 year olds: "Okay!"
Proceeds to mangle whitespace, variable names, scope, indexing, ==, forgets :, doesn't understand what def is, even after they get all that the program is basically "hello world" print to console.
6 year olds: "Programming is hard and frustrating with little payoff, I don't want to do this anymore"
The one 6 year who who will grow up to be a greybeard sysadmin "This stuff is great! I can't wait to learn more!"
Teachers: "I have no idea what I'm doing, the devs keep saying how Python is supposed to be easy and it's built for learning, but I'm just as confused as the kids."
--
Here's how teaching kids goes with scratch:
"This is scratch, you snape these colored shapes together and they do things like make this character move"
6 year olds: "Okay!"
Proceeds to make games and stories with graphics, sounds and interaction, which they share with their friends, fully editable and runnable in a web environment with zero setup: https://scratch.mit.edu
6 year olds: "Wow programming is fun! I can't wait to learn more!"
The one 6 year who who will grow up to be a greybeard sysadmin "I agree this stuff is great! I can't wait to learn more!"
Teachers: "It wasn't hard to get up and running with scratch, it's very easy to teach and I get it."