I’ve been thinking a lot about the root of the problem that I’m trying to solve. That is, making it easier for children to understand how to program computers and I’m coming to the conclusion that it doesn’t have to stop with children.
One of the most important reasons why I think “programming” a computer is useful is that you can use it to create solutions to problems: e.g. make an animation for someone’s birthday, create reports to find out why some of your customers are leaving, modelling a bridge and seeing it under the stress of high winds, seeing what a new colour paint would look like on your bathroom walls, etc. The length of that list is only limited by our imaginations and our ability to articulate it to a computer.
Being able to write or modify programs gives you the power to solve your own problem. That’s an incredibly empowering and liberating thing, particularly if you do not have the resources to ‘buy’ a solution.
To help me understand how we can approach teaching this, I wrote a list of (rough) axioms about programming and learning (bourne out of some recent readings by the leading people in this field, such as: Seymour Papert, Alan Kay, Ralph Knoster and Bret Victor.)
What was interesting was the final rhetorical point it ended on:
“Does the fact that Developers exist tell us that our interfaces for programming are not good enough”
By this I mean has the formal role of the developer only arisen because computers are not easy enough to use, as tools.
I keep thinking of my good friend Evan Rudowski (@evanrud) who I worked with at subhub.com. Evan is the CEO of Subhub – they sell a paywall/membership publishing platform that allows the publisher to restrict access to their premium content. Evan’s a pretty remarkable guy with a impressive career in journalism and Internet Publishing (he came from America to run Excite Europe in the late ’90s and ended up staying!) but I think he’s a product developer at heart, only he’s never learned to ‘develop’ aka write code. So in order to run Subhub and develop products he has to hire developers, which is logical, and therein lies the principal problem I’d like to solve.
I want anyone with a creative idea to be able to implement it themselves on a digital device.
Perhaps not to production level (well, not yet anyway), but enough to test out new ideas, play with them, prototype them, make toys to play with, show them to clients, get feedback, etc. That is, at a level good enough to for the person with the idea to get immediate feedback which they can be use to develop further (or not).
Going back to Bret Victor and the previous post on Inventing on principle, that’s the principle behind this project and one I think worth striving for: that is, to provide anyone with a creative idea the resources to learn how to implement them on a computer