I met someone interesting for lunch today, an engineer from Chicago who did his master’s thesis in ubiquitous computing. We had a very interesting conversation about how computers are viewed, and how they *ought to be* viewed.
We’ve heard numerous examples of people who have never used computers in their lives take to devices like an iPad or a mobile phone. We’ve also heard of people who have never used ‘high technology’ in their lives use cell-phones on a daily basis. And that serves as a kind of role model for us when we try to design computers nowadays, and target them at the ‘digital have-nots’ – for the billions that have not had access to computers so far.
However, there is a difference between a mobile phone and a computer, even at the conceptual level. A mobile phone is an appliance; so is an iPod, for example. They are meant to perform one task (or a few tasks) well. In the case of a mobile phone, it is to make and receive calls, and send and receive messages. In the case of an iPod, it is to play music. So the conceptual model for their use is straightforward; for a mobile phone user making a call, it is: choose a recipient, initiate a call, talk, and hang-up.
It has become fashionable of late to design software for computers that make them appear as appliances. For example, if you pop in a DVD into a computer, most likely the software that plays the DVD will have controls that mimic a DVD player, with a play/pause/volume button. So anyone who is comfortable using a real DVD player would, hopefully, be able to relate the user interface of the computer’s DVD playing software to the actual functioning of a DVD player, and feel familiar (or at least, less intimidated) by the software.
Packaged software has become the mainstay of our interaction with computers today. That is why, when I ask people of my father’s generation (who have probably started using computers only in their 40’s or 50’s) what computers can do, they say, computers can create documents, play music and movies, browse the internet, solve equations, video-conference.
All of which are true, except: it is not the computer that does these things (except indirectly); it is the appropriate software package that does them.
And no one who is exposed to computers in that way will ever answer the question of “what do computers do?” with the right answer, which is, “computers compute.”
And that is why, despite innumerable efforts by several groups of people, all of these people will feel intimidated by ‘programming’ a computer. Their mental model only fuzzily (if at all) recognizes that computers can be programmed to do anything that is computationally feasible, not limited by what software exists. For them, the basic conceptual blocks of computers are menus, mouse cursors, pointing and clicking, buttons, and volume control – not data structures and algorithms.
The question we discussed over lunch today – a discussion which did not definitively end – was: what would it mean to have people build non-appliance mental models of computers?
Is it a good thing? -Would we empower people if we described computers to them as ‘programming machines’, or would we go back to a world where only the intellectual elite felt safe around computers?
And, is it good to teach all people that they, too, can program a computer? Or should the status quo continue – where everyone is more or less comfortable using a computer, but only a handful of anointed experts, mostly with engineering degrees, are capable of programming them?
Which way? What do you think?