Just like the talking Barbie who drew the ire of feminists everywhere by claiming that "Math is hard", I find myself asking more and more often "Why is programming so hard?"
On my more skeptical days, I’m sure that it is the onrush of early senility which makes me think that programming is more difficult now. After all, when I bought my first Atari 400 back in 1980, I was glad that I could stay up and type in assembly language programs all night long using the silly membrane keyboard and storing data off onto cassette tapes. Back then I had no real knowledge, just enthusiasm for the latest in technological toys.
When I am less skeptical, I realize that I wouldn’t even consider writing that kind of software anymore. Much like playing tic-tac-toe, you realize after a certain point that the old games are too easy, and you go looking for greater challenges.
The reason that programming is more difficult I think is simple: We ask more from the programs that we write than we used to. An individual can write fairly simple network games and network apps, but very few people do. Why? Because the feeling is that if you can’t compete with shrink wrap monstrosities, you might not as well not bother. We expect our programs to be big and complicated, and the idea of using simple, limited programs or playing simple straightforward games just doesn’t interest us or catch our imagination anymore.
It’s too bad really.
I still like programming, despite the fact that I get paid to do it for forty something hours a week. I get paid to work on big systems, with real deadlines and lots of constraints. That isn’t particularly fun (although it beats most jobs). The programs I’ve written for fun are usually small to medium size, and have included:
- A VNC terminal emulator using OpenGL
- A PDP-1 emulator so I could play the original SpaceWar!
- A CHIP-8 interpreter
- Several different attempts at curve rasterizers
- A raytracer with motion blur and programmable shading
- Emulators for the German 3-rotor Enigma machine and an American M209 crypto machine
- a curses version of life
- an almost working version of Jos Stam’s simple fluid dynamics model
- a simple realtime raytracing demo
- a couple of webcam programs
- a toy webserver
- a program for drawing world maps
These programs for fun are meant to explore interesting bits of math, science, or programming. They don’t have fancy user interfaces, but are meant to be the quickest route to exploring new things. Because of that, they really weren’t all that difficult to write.
So what good are programs like this? I enjoyed writing them. And nothing you truly enjoy could be considered that difficult or onerous.