Hacker News new | ask | show | jobs
by TheCowboy 3974 days ago
If you're asking this as a hardcore chess player interested in getting into programming, then you should just jump in and give it a try. If you are trying to play chess to increase your "programmer's IQ" then I would recommend passing.

I think the honest way to think of this is that: Playing chess is a really good way of figuring out who is good at playing chess.

But, the abilities and aptitudes that often help aid being good at chess can be valuable assets in becoming a good programmer. Strong sense of logic. Able to think multiple steps in advance and the consequences. A strong memory can be useful.

Where it might frustrate a chess player, is that chess lacks an element of imperfect information. Real world programming isn't a perfect self-contained world where everything is known. It is impossible to know every aspect of programming as well as the rules of chess. You'll write bugs, and bugs in other software will create unpredictable problems. Users will add a random element into how your software breaks. Malicious attackers will find holes in what you've written. Things will just break.

4 comments

I've never understood the 'imperfect information' thing when discussing chess. Chess _as played by people_ is full of hunches, uncertainty, prejudice, intimidation. Just look at how Kasparov played or Lasker, to see how important psychology is to chess. Or go down to Washington Square Gardens and play under the glare of dozens of people tutting at your every move.

It's so much more than an abstract problem.

Perfect information doesn't preclude the human element. It is a technical designation: each player has the entire knowledge of the game history up to and including the current state.
The original quote was:

"Where it might frustrate a chess player, is that chess lacks an element of imperfect information."

Any chess player worth their salt deals with imperfect information, and has to manage risk, make kludges, pick imperfect paths, deal with the clock etc etc.

Right, however none of that has to do with perfect/imperfect information.

To quote Wikipedia: "In game theory, an extensive-form game has perfect information if each player, when making any decision, is perfectly informed of all the events that have previously occurred."

This is a technical designation, it has nothing to do with the future, only the past and current state.

Yes, to be a good chess player you need to be able to evaluate your opponent and make subjective determinations. Yes, your strategy is probably imperfect. But the fact remains that you can see the entirety of the game board and you can write down the history of moves, so you have perfect information.

[0]: https://en.wikipedia.org/wiki/Perfect_information

My point is in the context of a discussion about analogies about chess and software dev - if you're good at one are you good at the other etc?

In this context the fact that chess has perfect information in a technical sense is irrelevant, since chess as played is so much more than a game about digital information.

Yes, but the possible input to a chess game is strictly limited - one player cannot just change the way a piece moves or introduce a new piece, and thus, it is not taken into account in any strategy. These sorts things must be taken into account when programming.
This is how a chess player thinks. "Jesus, why did she play that? She must have seen something I've missed. Shit, if I had more time I'd be able to figure it out. Damnit, I'll just move my knight back, that way my king'll be safer. I'm sure there's a better move but I can't find it now, and I think my ass went to sleep."

Change a few words, and it's pretty much a typical thought process when coding for me.

Bughouse chess might fit the bill in this case. If you're not familiar, there are two boards with four players, with teammates playing opposite colors on each board. A captured piece on one board can be held in reserve by the teammate and played on any subsequent turn on any open square on the other board.
> chess lacks an element of imperfect information

To airframeng: if you are interested in games with imperfect information, consider:

* bridge

* poker

* Twilight Struggle board game

These games hide competitor's positions and force you to reason about what your opponent's position could be, and not just what it is.

If you believe that "everything is known" when playing the game of chess, I suggest you challenge Magnus Carlsen for the title of best player in the world right now!

edit #2

Just thought of the perfect (pardon the pun) analogy. Chess has perfect information in the same way that a large code-base with 500k lines of code has perfect information. When I ask you how much time it will take to implement or refactor feature X, do you think you'll have enough time to read and learn the entire code-base before answering? How you approach that problem is almost exactly how you think through a position in chess.

edit #1

(tldr; chess teaches you to evaluate an overwhelming large number of options to evaulate and choose what you think is the best one in a reasonable amount of time, without having all the answers)

In all seriousness, the ability of human reasoning is finite and the skills that we apply to chess to deal with the seemingly infinite problem space apply very much to other things like programming. When we decide not to thinking deeply (e.g. multiple moves in) about a certain line of moves, it is because we do not deem them worthy of further thought, in the same way that I would, at an early stage, discard the option of refactoring an entire code base because, on the surface, the cost-benefit analysis is just too lousy. Also, in the same way that I can only think about 15-20 moves ahead at best along certain decision trees, I can only foresee and estimate so much of a software project before the limits of my knowledge and prediction power fail.

I don't think this is quite what was meant by the "everything is known" comment. I may not know what Carlsen is going to do for his next move, but I could certainly come up with a list of every possible move. The rules of chess won't change in the middle of the game and he won't suddenly be able to castle twice.

Chess is a game of perfect information where nothing is hidden from either side. Theoretically the white player should be able to win or force a draw every single game. It just doesn't happen that way in real life because to construct a tree of every possible move and counter move and then pick the optimal branch is hopelessly complex with this game. But for checkers it's doable (the best checkers players will play flawlessly and games are won or lost on a single mistake), and you probably already have tic-tac-toe figured out.

Edit: dang, ninja edit where you just said almost everything I said.

"Chess is a game of perfect information" - perfect but almost infinite/impossible to calculate even for the most powerful computers, within a finite timeframe. The number of legal chess positions is 10^40, the number of different possible games, 10^120. As a comparison, the number of atoms in the observable universe is estimated to be between 4×10^79 and 4×10^81.
I don't understand the imperfect information thing. The whole game is assuming what the other player is attempting to do. Can't the other player not acting how you predicted be considered a bug? Or is this more formally defined than I'm aware of?
Information in this instance is the current (and past) state of the game. Poker is an imperfect information game because you can't see your opponents cards, and you can't see the cards in the deck. Chess is a perfect information game because you know where every piece is, nothing is hidden.
Aaah, alright. Thank you!