Audrey Watters has gotten interested in the idea of a "ScrAtch for HTML-5" IDE, inspired by work like z2011-03-01-HtmlHackingTools. (I'm not sure how far beyond a Gui Html Editor this would go.)
But she had a conversation with JonUdell recently, which is nudging her more in the direction of his "thinking like the Web" perspective. z2010-11-17-UdellRecentWorkAndPatterns
Neither of them is really talking about Learning Programming. I think this is because they fear it's too high an initial hurdle.
What's relevant? Is it building a website? Or is it understanding the services that are out there? Is it learning to be a remixer of services? How do we help people understand the importance of controlling their data, controlling their domains, controlling their online identity? How do we help people bind their various Web presences to an identity, and not, say, cede all authority to Facebook? The problem of Web (il)literacy (Digital Literacy): How do we solve it? Is it about code? (Udell says no) It is about understanding the components of the Web and knowing how to tag and then manipulate them. By thinking and developing sets of named resources, you are a Web thinker. This isnt about programming but rather the creation of sets of resources and the identification of components that work with those resources and combining them to create a solution. How as you operate online can you do things intentionally and consciously create possibilities for other people to hack and remix?
Learning Programming is a worthy goal: Program Or Be Programmed.
- Some brief non-building intro to architecture layers may be helpful.
I think the MozIlla Hackasaurus model of starting with GUI-help for HTML/CSS editing makes a lot of sense, because
then I think making the next step being the inclusion of WidgEt-s on the page to include outputs of remote Web Services is a great next step of composition. (And show them how to use software/services that output that data, like Del Icio Us. That's the Web Literacy piece.)
then maybe it's time to do some real WebApp programming.
Mar13: She notes challenges that teachers like Laura Blankenship have hit, plus notes the horrible Advanced Placement Computer Science Curricul Um, which is driven by classic college CS and JaVa (two strikes).
Mar14: She interviews Jared Cosulich of Peanutty. The various puzzles are open-ended enough that there isn't just one solution. "You can step outside the instructions," Cosulich says, "but you do have a goal in mind" -- namely, solve the puzzle. I Commented: I just had an idea/nudge for you. It smells to me like you're stuck in "the middle", talking to existing developers. I think you need to spend more time at the 2 ends: (a) the values/attitudes (more than skills) we hope kids end up with, and (b) talking to the kids themselves about what they want to build - defining a few different segments (math/puzzle geeks, web-heads, gamers, craftsy types, etc.). Bonus points (badge) if you can get a sense of the relative size of the different groups. Then focus your design research efforts (the middle/bridge) on serving 1 of those groups. The same toolset may end up being able to serve all, but starting with 1 focus, and the real kids behind it to provide ongoing feedback, is more likely to get tangible results. (Kinda Lean Startup mentality.)
Apr03: found this piece from last monthby Al Sweigart (author of Invent Your Own Computer Games With Python book) about how "nobody wants to learn to program". For the casually interested or schoolchildren with several activities competing for their attention, programming concepts like variables and loops and data types aren’t interesting in themselves. They don’t want to learn how to program just for the sake of programming. They don’t want to learn about algorithm complexity or implicit casting. They want to make Super Mario or Twitter or Angry Birds... We need LeGo-s, not playsets. (I enthusiastically endorse ScrAtch for use by the pre-teen crowd.)... One thing that MIT’s ScrAtch programming environment gets right is that they have a way to share programs that students create built into the software directly. Nobody wants to learn programming, they want to make cool programs. Being able to easily share (SharIng) their programs with a community not only provides an incentive to learn and create, but it also provides a library of examples for other people to look at to inspire their own programs... Don’t Distract New Programmers with OOP: Enough said. Things you can also toss out for the new programmer syllabus: recursion, regular expressions, MVC, networking, and file I/O.