I don’t really know how to explain my fas­ci­na­tion with pro­gram­ming, but I’ll try.  To some­one who does it, it’s the most inter­est­ing thing in the world.  It’s a game much more involved than chess, a game where you can make up your own rules and where the end result is what you make of it.

And yet, to the out­side, it looks like the most bor­ing thing on Earth.

Part of the ini­tial excite­ment in pro­gram­ming is easy to explain: just the fact that when you tell the com­puter to do some­thing, it will do it.  Unerr­ingly.  For­ever.  With­out a complaint.

And that’s inter­est­ing in itself.

But blind obe­di­ence on its own, while ini­tially fas­ci­nat­ing, obvi­ously does not make for a very like­able com­pan­ion.  In fact, that part gets pretty bor­ing fairly quickly.  What makes pro­gram­ming so engag­ing is that, while you can make the com­puter do what you want, you have to fig­ure out how.

I’m per­son­ally con­vinced that com­puter sci­ence has a lot in com­mon with physics.  Both are about how the world works at a rather fun­da­men­tal level.  The dif­fer­ence, of course, is that while in physics you’re sup­posed to fig­ure out how the world is made up, in com­puter sci­ence you cre­ate the world.  Within the con­fines of the com­puter, you’re the cre­ator.  You get to ulti­mately con­trol every­thing that hap­pens.  If you’re good enough, you can be God.  On a small scale.

[…] The only thing that lim­its what you can do are the capa­bil­i­ties of the machine—and, more and more often these days, your own abilities.

It’s an exer­cise in creativity.

Linus Tor­valds in Just for Fun: The Story of an Acci­den­tal Revolutionary