Additional profile information on Alfred Thompson at Google+
Last week I shared a link on Facebook - Why Johnny Can't Program: A New Medium Requires A New Literacy – that makes that case that everyone should learn how to program. Philip A DesAutels, my good friend and one of the smartest people I know, replied in Facebook with a long well-though out reply. With his permission I copied it below as a sort of guest post. I would love replies either to the origional article or to Philip’s reply. Who is right? Philip or Douglas Rushkoff? Should everyone learn to program and if so how much? Or should we only push a few into programming? [EDIT: The ACM and CSTA have a new report out about computer science education in the US. I blog about it here.]
I truly understand the place of CS in HS and so, I feel the need to rail against this article... Let's start with a line that sums up the central premise - "Digital tools are not like rakes, steam engines, or even automobiles that we can drive with little understanding of how they work." Ummm, hello Douglas, first each of these technologies - hand tools, steam engines and automobiles transformed humanity, each had a very dedicated training program for professionals and users and each was encapsulated to the point where it the technology (or its meta-equivalent - is now so well hidden that only a few experts need the professional design skills while the mass of users can apply the technology with some technical skills and deep domain skills. Let me explain.
Rakes, aka hand tools - I am trained at the nation's premier craft school, the North Bennet Street School, in the art of using hand tools to build wood structures. I was in a class of 12 Preservation Carpenters who know how the make (not buy) moulding, who can build a timber frame and who can carve a Corinthian Column capital with an appropriate acanthus spinosus leaf detail. And if I continued in that profession, I would have been in a minority of carpenters, practicing an art form. Our chief competition and the reason most in the 'real carpentry' trade can't charge someone the $80 an hour is what I would term modernization... aka the Big Box and the lumber yard. Sally homeowner can run to Ikea and buy cabinets that she can put up herself, she can go to home depot and buy wood flooring that is prefinished and a sink that requires no open flame to install. Why would she call me unless she lives in a period house and wants to preserve an art form? Technology has encapsulated my skills (learned in two hard years of apprenticeship) and made them available to the masses. Is there still a need for real carpenters, not just assemblers as I call what most 'pros' and homeowners are (intentionally derogatorily since I am a real carpenter...)? You bet! But we do not have nor need tens of thousands of students studying the fine art of carpentry in its Vetruvian classical form. We need students studying modern building codes and sustainable building practices for the modern age. If they can't shoot a moulding by hand or tell you the appropriate ratios for moulding in a room, does it matter? NO... If these modern carpentry students can't use that encapsulated technology to build modern structures that are safe, energy efficient and stylish then we and they have a problem. Even if a few very skilled in the carpentry profession are creating the encapsulated components, there won't be anybody to apply them.
I could make the same ranting point about steam engines - not many of us firing up the coal boiler to make steam to open the garage doors today...or the automobile - when was the last time YOU even checked you oil let alone adjusted the timing or valves... The points I make here are that 1.) Technology encapsulates, 2.) Encapsulated technology requires domain skills combined with a new type of technical skill to apply encapsulated technologies to modern problems. And.. herein lies the problem with the argument presented in this article and the call for more CS programs in High School. To what end? Is this like a call for more carpenters to learn how to make mouldings by hand? More HVAC professionals to learn how engines are designed? I THINK SO.
There are students for whom programming is a desired skill. They want to be developers. Great for them. The giant hole in our workforce isn't entry level developers who can hash out c code and write a compiler from scratch. It is for people with combined skills who can APPLY encapsulated technology (lots thanks to companies has been encapsulated) to specific domains.
So I offer up a different call. In high school, teach students how to apply technology. Teach them how technology fits with their domain of interest. Teach them how to use the components not how to build them. Those students that want to become more technical can choose to learn down the stack to real engineering (aka CS, CE, EE) or up the stack to become expert in technical domain applications (IS, CIS, Project Management, Bioinformatics).
There are FAR FAR FAR more jobs out there today for someone with the technical skills to build a SharePoint portal, or light up a CRM instance or build a bioinformatics database than there are for someone who can build the next Python compiler. Let's stop trying to train the mass of high school students to become preservation carpenters, and instead make them very good contractors.
Small Basic is, in my opinion, one of the really cool platforms for introducing programming to younger students. A simple IDE, a simple subset of BASIC, and built in turtle graphics all resonate with me. And a number of teachers around the world seem to agree. One thing we have been lacking though was some real curriculum support. Well that has changed. A set of 21 PowerPoint presentation with imbedded notes for teachers is now available. There are other resources available on the Small Basic page of the Beginning Developer Learning Center as well. If you use this curriculum or anything else associated with Small Basic would you let me know please? Also any feedback about what we can do better or differently. Thanks
Small Basic Curriculum (beta)
I’ve demoed Kodu a number of times and I’ve showed it to individual children briefly as well. Last Saturday I did a workshop for kids at HacKid at the Microsoft office in Cambridge MA and that was different. I had about a baker’s dozen young people between about 8 and 12. About half girls and half boys. So quite a mix. We had some trouble getting came controllers to work on the borrowed laptops so were restricted to using keyboard and mouse. I wasn’t sure how that would go but it turns out kids are amazingly adaptable. In fact near the end of the 90 minutes when someone with admin rights got the controllers working kids moved over to them with no visible transition time. I guess controllers are something kids are good with.
There are a number of possible lessons in the Kodu classroom kit but the one I used was called Single Session Introduction Curriculum for PC and Xbox. The main thing we wanted to do in this session was show the students how to add and program objects in a virtual Kodu world. Specifically we wanted them to add a robot to go around and pick up and eat an apple. I figured that I would start with a demo – and I did. It went well but the kids were clearly itching to get started so the demo was not that long.
Then we went step by step though the first exercise. There were a few kids who needed a little help and we explored the “undo” function which is, as with most applications, a life saver. And then they were off and running.
In theory I had a second exercise but these kids were off and experimenting in directions I had not thought of. And it was a Saturday. And my classroom management skills for this age group (I taught this age group for one year about 15 years ago) are rusty so I let them go. I spent some time one on one helping when needed but largely just letting the kids show off what they had created. In a real class rather than one whose goal was just to get kids started and experimenting I would have reigned things in a little better of course. But since building excitement about the possibility of programing computers was this goal this seemed to actually work.
We did spend a little time near the end on creating and modifying the land mass of the virtual world. In all honesty most of the kids had figured that out on their own. At the end of the session some of the kids would have stayed. One boy said “this is the most fun. I could do this all day.” Many of the parents were promising their children that there would be a download when they got home. And at least one child was promised an Xbox controller for use with Kodu.
I came away even more convinced that Kodu is a great tool for getting kids excited about programming. And more things as well.