Thursday, July 06, 2006

programming is the best game

I love this quote from TW Malone. I think I first heard it from Jake Habgood.

It discusses the flexibility or fluidness of the programming process - you can set your own unique goals and push yourself to a higher level when you are ready. Low entry, high ceiling. But it is not that easy or structured because the feedback is tantalising, elusive and expectations can be dashed. It also points out that programming is a very emotional process. The challenge draws you in and self esteem can be built or destroyed quite easily. Hard fun is sometimes fun but not always fun.
"In some senses, computer programming itself is one of the best computer games of all. In the "computer programming game", there are obvious goals and its easy to generate more. The "player" gets frequent performance feedback (that is, in fact, often tantalizingly misleading about the nearness of the goal). The game can be played at many different difficulty levels, and there are many levels of goals available, both in terms of the finished product (whether it works, how fast it works, how much space it requires, etc.) and in terms of the process of reaching it (how long it takes to program, etc.). Self-esteem is crucially involved in the game, and there is probably the occasional emotional or fantasy aspects involved in controlling so completely, yet often so ineffectively, the behaviour of this responsive entity. Finally the process of debugging a program is perhaps unmatched in its ability to raise expectations about how the program will work, only to have the
expectations surprisingly disappointed in ways that reveal the true underlying structure of the program."

Malone, T. W. (1980, September 19). What Makes Things Fun to Learn? Heuristics for Designing Instructional Computer Games. Paper presented at the Association for Computing Machinary Symposium on Small and Personal Computer Systems, Pal Alto, California.


1 comment:

Unknown said...

Programming is fun because the programming cycle is a development cycle which spends its time to a large percent in the cognitive disequilibrium part of the cycle. Thats where higher order learning takes place and we enjoy learning. As mammals, we are preprogrammed to seek out learning. Thats what play is.

To illustrate, if I was to design and build a bridge it might take a year, fall down in 5 minutes and take an hour to work out what I did wrong. The learning phase, the cognitive disequilibrium phase is only an hour in a year.

If I debug my program, it takes 5 minutes of cognitive disequilibrium to see my mistake but only a minute or so to edit and run. I spend most of my time in the "hard fun" phase.

Thats why I can still be up at 2am debugging a program or playing a strategy game