When you first hear about it’s goal, MIT Media Lab‘s Scratch seems like a good idea – create a programming environment that is accessible to young people getting their feet wet with code for the first time. As you look into the matter further, the world really is lacking a good first programming language these days.
Now for an aside to a long time ago in a basement 30 miles away…
Every programmer has their story of their first programming experience, mine was discovering QBASIC on accident while messing around in DOS on my best friend’s 386sx. What followed was an entire summer learning basic concepts from the online help system. To this day I still remember do: while $INKEY = “” as a rudimentary way of trapping keyboard input. Nostalgia and poorly coded text games aside, this brings me to my point. What is today’s analogy for QBASIC in 2007?
Coding these days on any platform requires serious knowledge, and BS’ing your way through a program with almost total disregard for structure, style and logic the way I did as a kid back in 1994 is next to impossible these days. Having a sandbox language to write trivial programs is important! If I’m 10 years old, I could care less if a language is statically or dynamically typed, or if it has a particularly good standard library XML parser! I just care about seeing my name displayed in alternating colors, feeling that I’m writing a program, and most importantly the feeling of discovery that comes with.
Scratch pretty much fails on all levels in this respect. The first thing that comes to mind when looking at the Scratch interface is that MIT has recreated some Adobe Flash with some Lego-Centric design motif. If this didn’t have the MIT Media Lab stamp on it, it would be universally panned across the board as reinvention of the wheel. Why are people getting so amazed at the ease that a poorly animated cat with annoying sound effects can be created with the drag and drop interface? Is this something we need to be encouraging people to do more of, have any reviewers been on the internet lately? (Before trying to argue with me on this, find a ytmnd meme and try and explain how that’s much different.)
Most bothersome to me is the total lack of coding involved via the drag and drop interface. You can’t make a legitimate product aimed at getting young people excited about coding, if there is a complete absence of the aforementioned! Scratch is a software toy and nothing more. It can be described as marginally educational I guess, but I have a hard time seeing anyone doing much more with it than making inappropriate animations and trying to harass people nearby with a barrage of sound effects. Call me old fashioned, but in terms of programs for use in schools to develop the underlying skills to code, such as math and critical thinking – I’ll take Number Munchers and The Incredible Machine anyday.
Maybe I’m wrong, and I just don’t get it?
Time will tell!
Hi. My research group at the MIT Media Lab developed the Scratch software and website. I would encourage you to look more closely at the projects that people are posting on the Scratch website. In your blog, you write: “I have a hard time seeing anyone doing much more with it than making inappropriate animations and trying to harass people nearby with a barrage of sound effects.” In fact, people are creating a wide range of innovative projects, including strategy games (http://scratch.mit.edu/projects/bmarcell/1137), science simulations (http://scratch.mit.edu/projects/jay/495), paint programs (http://scratch.mit.edu/projects/fab_programmer123/4645), and animated stories (http://scratch.mit.edu/projects/vally/1224).
I hope you’ll take a look at some of these projects (and also download the software and create your own projects!), and see if that changes your view about Scratch.
Regarding your comment: “Most bothersome to me is the total lack of coding involved via the drag and drop interface”… You seem to equate “coding” with writing strings of text. For me, the most important part of “coding” and “programming” is learning to think systematically, and that definitely happens when people learn to “code” in Scratch. When people create Scratch projects, they learn key computational concepts such as iteration, conditionals, variables, event-triggering, and threads — and, perhaps most importantly, they learn about the process of design and debugging. It is true that you would not want to use a drag-and-drop graphical interface like Scratch to create a very big, complex program. But we believe that Scratch provides a very good introduction to the core ideas of programming and “coding”, and provides a very good foundation if people decide to move on to other more traditional programming languages later.
Wow.
I didn’t think anyone actually read this.
I understand your point with regards to systematic thinking when I was looking it over for the first time, for example – seeing how you were using controls to teach iteration without really having to get out a intro book and explain the concept of a loop.
I enjoyed slapping together some quick implementations of a barrel shifter and full adder in the digital logic sim. (http://scratch.mit.edu/projects/jay/495)
I think I may have been overly harsh on what your lab has accomplished, and am writing a second post right now addressing some of the points you brought up.
Most of this is due to cynicism, and experience with working with kids (and even adults in the past) where as soon as they realize that they can loop a belch.wav file in the lab, any higher purpose goes out the window pretty fast.
I strongly feel that getting young people excited and involved in technology is something our field hasn’t been doing a good job of it recently. It’s nice to see that I’m not the only one who cares, and others are trying to do something about it.
I hope that you can find time to write some feedback on my next post regarding this matter!
[...] A while ago, I wrote a post about how I think that programming is really difficult to get into these days without a ton of effort on the learner’s part due to varying factors such as language complexity and operating system api’s. I then proceeded to discuss a product by MIT Media Labs called Scratch that was designed to teach children programming by addressing these issues. In case you don’t remember, I wasn’t too fond of Scratch. [...]