I started programming as a kid on a Sony HitBit MSX which we had gotten as a Christmas present. Everyone else got a Commodore 64, but my dad had done some research and decided that an MSX would be better. I wasn’t convinced, mostly because there were much more games available for the C64. A friend got an Amstrad CPC and there were even less games for the Amstrad than the MSX, so at least I wasn’t alone.
We used the MSX pretty much only for playing games loaded from cassette tapes.
Later on, dad got me an external 3½” floppy disk drive as a birthday present. In those days, the disk drive was really really fast, much faster than the 5¼” drives the C64 guys used. Loading Elite on the MSX took only a few seconds!
Anyway, after unwrapping the present, dad told be to connect the drive, put a disk in, and turn the power on. With dad’s special disk inside, the machine printed “Happy birthday!” shortly after turning on the power. Magic! It turned out he had written a Basic program which probably looked something like this:
10 print "Happy birthday!"
and saved it on the disk with the name “autoexec.bas”. The Basic interpreter would then load the file automatically at startup. I was amazed. Before this, I had thought of the machine only as something to play games with. I realized that I can make the machine do stuff. Dad also got me a Basic manual. I’m not sure if it came with the HitBit or if he got it separately, or even if it was written in Finnish or English. Armed with my soon to be dog-eared Microsoft Basic manual, I created my first computer program. It was as a menu to choose which game to load from the disk. I remember demonstrating it triumphantly to family members and friends, and being quite proud of it.
Then there were the magazines. There was MikroBitti, a Finnish computer hobbyist magazine, with Basic programs that you could type in yourself. Usually they were simple games, and usually you’d mistype something and it wouldn’t quite work until you found all the places where you had typed it in wrong. But it was a lot of fun.
As a father now myself, I would like to be able to let my kids experience the same kind of magic I felt gaping at the results of my father’s one-line Basic program. It doesn’t have to be programming, of course, just whatever they find naturally fascinating. It may be harder to impress today’s kids with anything computer related. In this day and age, nobody is impressed by making the computer print “Happy birthday”. Joel Spolsky expressed the same thought on the Stackoverflow podcast #37 (at 1:02:00):
“The barrier to have an exciting experience with a computer is so much higher because we’re used to such ridiculously rich computing experiences on our toaster ovens. … I’m wondering if kids aren’t just disappointed because they can’t do anything exciting with computers. The level of work they’d have to do to learn how to program something that would impress anybody is now so high.”
The podcast is, by the way, highly recommended. I listen to them when I go shopping for groceries. I know it’s been a good episode when at the checkout I realize I forgot to the bananas, oh and the cheese, and looks like I somehow forgot to get a fresh bunch of dill for the fish, too… so I have to go back for a second round to get the missing things. Yes, this is with a shopping list. But I digress.
For me it was all about the magic and the intense pleasure drawn from making the magic happen myself. I’m still hunting for this programming “high”, but nowadays it’s less about making the computer simply do something, but getting it done in a beautiful, elegant, eternal way. That’s what keeps bringing me back to writing code.
- Heuristics for Programming Language Design
- The Single Most Effective Thing Which Improved My Programming Skills
- Programming Problems in Disguise