Programming Is Harder Than Chess

This is actually not hard to prove. For those who'd like it spelled out:

One reason
Programming is an open system, chess is closed.
Another reason
It takes one person (maybe two with a coach) to become a GrandMasterOfChess?; it takes a whole team from IBM to program a computer to beat a single GrandMasterOfChess? at a single match. Not even a GrandMasterOfChess? on his own could do that.


The first reason needs more explanations, the second only says that humans are smart.

Let's try these:

Of the above three, the first states only that chess is not fault-tolerant, is more time-critical, and less accessible, so ChessIsHarderThanProgramming?.

That's exactly what I thought. I think that in any case we're comparing apples to oranges. However, chess and programming have many things in common. We can use some techniques developed for the game of chess when doing programming, unless we think that ProgrammingIsHarderThanChess and therefore no chess technique will apply to programming.


Another reason: It takes one person (maybe two with a coach) to become a GrandMasterOfChess?; it takes a whole team from IBM to program a computer to beat a single GrandMasterOfChess? at a single match. Not even a GrandMasterOfChess? on his own could do that.

That only proves that programming chess, in particular, is hard. It doesn't prove anything about other kinds of programming. (Which, of course, are hard as well.) -- MikeSmith


I would conjecture that if chess is Turing complete then chess and programming are equivalently hard (every chess game would have an equivalent program). Of course the "chess" interface would make some types of program/game harder than others to play.

If chess is not Turing complete then it would be easier than programming.

The above has it a bit backwards. If chess were turing-complete (which it isn't since there are a finite set of states) then every program would have an equivalent chess game.

Chess is not turing-complete, but neither is any RealLife computer system. I accept that the number of states in even a small PC is many orders of magnitude greater than those in a chess game - but it is still finite. 'Sure. But chess is not eve turing-complete in theory. Not even close; it has a fairly small (in the scope of these things) set of states.

Additionally, turing-complete is not a good measure of difficulty. It tells you something about what is possible in a language, not what is easy. For a quick example, take your favorite 1000-10000 line program (in your favorite language), then rewrite it in intercal :). For a more pragmatic example, consider the fact that c++ templates are turing-complete.

`Hardness' in this sense has to do with the process of programming (or playing chess), and is more difficult to define. However, I don't believe that chess would be equivalently hard to (general purpose) programming, under any useful definition of `hard'.


Programming certainly pays better than chess.


In chess you don't get the chance to refactor. Usually one mistake is enough to lose the game.

But you don't need to win every game. Often, you're playing in a tournament environment, where you "merely" need to win M out of N games to progress. OTOH, a failed software project is a bad thing - it has real costs in terms of money, reputation, and sometimes jobs. So even though it may be easier to fail in chess, the cost of failure is higher in software development. -- MikeSmith


As a couple of people have mentioned, this comparison was broken to begin with. Chess is a well-defined two-player game, where players take turns making moves. There is a well-defined notion of winning, moves, turns, etc. Chess has consistent and relatively simple rules.

In contrast, programming is not a two-player game, or any kind of game in the ordinary sense. There is no notion of winning. What is a move, or turn, in programming? How do you castle? :-) You can write down the rules of chess in a few pages, but TheRulesOfProgramming? are ambiguous and inconsistent, written down in hundreds of books (reference books, text books, etc.). TheRulesOfProgramming? are complex, and inconsistent (I've seen lots of conflicting advice about ho to program).

Here are some comparisons between chess and programming that come to mind:

If you want to compare programming to games, programming is more a mixture of (at least) Risk, Life, Diplomacy, NomicGame, and MagicTheGathering. -- TobyDonaldson?

In contrast, programming is not a two-player game, or any kind of game in the ordinary sense. There is no notion of winning. Winning is getting the project done. Done well. You can think of your own limitations as your adversary. Also, see SoftwareDevelopmentAsaCooperativeGame.

I certainly agree that programming can be thought of as a game, if you are willing to stretch the notion of game thinly enough. I don't know about you, but if someone said "Hey, let's play a game!", writing code doesn't spring to mind! Since "game" is vague and imprecise (yet wonderfully suggestive), anyone can mean pretty much whatever they want by it. As you point out, you can think of programming as an adversarial game, or a cooperative game. Chess, in contrast, is a purely 2-player adversarial game, unless you change the rules. You could think of pretty much any part of programming as a kind of game, but it seems you will always be abstracting away some of the details of what programming really is. Treating programming in general as a game (or set of games) seems to be mainly a literary device.


For a chess position, there are a finite number of well-defined moves that the player can make. This doesn't matter. The number of moves in quasi-majority of situations is well beyond what any human can manage.

A chess game usually lasts (at most) only a couple of hours, and takes 40 - 60 moves. Yes. And playing chess is A LOT more intensive than programming.

In chess, you always see the entire board, i.e. you always know what's going on. You must be kidding. If you see the entire board , this has nothing to do with realizing what's going on.

Chess is always the same. That's a good joke. So why do people keep playing chess and discover a lot of new things about chess?

TheRulesOfProgramming? are complex, and inconsistent (I've seen lots of conflicting advice about how to program). Now is this a characteristic of programming or of humans doing programming? At least the fact that you saw conflicting advices should give us a clue that humans play an important part in the equation.


What a bizarre and ill-defined statement! I'm not even sure chess is a good metaphor for programming. There are several things "programming is harder than chess" could mean:

I'd love to have Costin's input as to the validity of any of these statements. -- IanOsgood


Here's one more take on this. ProgrammingIsHarderThanChess because we don't have computer programs which can do the job of a world class programmer, but we do have programs that are on par with world class chess players. -- IanOsgood


Is Programming harder than Go?

Is Programming harder than...

...and is 1 < a daisy?


Programming is more like a puzzle than a game. In a puzzle there is just one "player" and the objective is to solve the puzzle. Like a Rubik's Cube. In a game there are multiple players.

Actually programming is more like a kind of puzzle, since some programs are easy to figure out how to write, and some are very hard.

I suppose it can become more like a game if there are multiple people trying to solve the puzzle and there is a prize for being first. But such a game is more like a wrapper around programming than a description of programming itself.

I don't know what it would mean for a game to be Turing-complete. A Turing machine doesn't have any players at all. You set it up and then it runs deterministically. (A non-deterministic Turing machine is equivalent.)


CategoryComparisons CategoryMetaphor


EditText of this page (last edited January 1, 2013) or FindPage with title or text search