(2012-03-06) Watters Udell Web Maker Literacy Perspectives
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
- it's what everyone sees the result of all the time
- it's good to see behind that curtain, that it's blocks of text
- 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.
- Social Software because it gets them back to to thinking about the implicit Game Rule-s in the Social Networking services they're using. Plus ties to something they're used to being engaged with as a user.
- Mix it with a Personal Learning Environment like Student Wiki Web.
- Situated Software so it doesn't have to be fully public, can be single-threaded, etc.
- I've seen recent fears about "being blocked by syntax, like a missing
;" - for god's sakes use Python!
- I think I'd purposely start without a full Python Web Framework, but just instead use a tiny stub of Web Server like Base Http Server and Cgi Http Server, with only the File System or pickle (Transparent Object Persistence) as Data Store. Then at some point I'd use SQLite... at some point maybe moving to Django (or maybe Pinax?) but the full frameworks have a danger of providing too much abstraction to someone who hasn't gotten their hands dirty yet, I think.
- May14 update: Dave Winer wants to teach college students to run servers to give them DIY powers.
Mar13: She notes challenges that teachers like Laura Blankenship have hit, plus notes the horrible Advanced Placement Computer Science Curriculum, 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.
- Zed Shaw disagreed, but I think he was ignoring Al's disclaimer/context.
- Zed's Learn Python The Hard Way book has some advice on programming: Programming as an intellectual activity is the only art form that allows you to create interactive art. You can create projects that other people can play with, and you can talk to them indirectly. No other art form is quite this interactive. Movies flow to the audience in one direction. Paintings do not move. Code goes both ways.... Programming as a profession is only moderately interesting. It can be a good job, but you could make about the same money and be happier running a fast food joint. You're much better off using code as your secret weapon in another profession. People who can code in the world of technology companies are a dime a dozen and get no respect. People who can code in biology, medicine, government, sociology, physics, history, and mathematics are respected and can do amazing things to advance those disciplines. (Software Is Eating The World) The world needs more weird people who know how things work and who love to figure it all out.