Posted on Leave a comment

Lessons Learned as a Programmer

Author’s note: A somewhat similar version of this article appeared in 2005. The argument remains valid.

During the 1980s, I worked in the computer departments of three different corporations. As I explained in my autobiography, Million Dollar Video Poker, I needed to go to work as a computer programmer because I was not sufficiently successful at my profession of choice, namely being a professional backgammon player.

The language I programmed in was COBOL–this was way before personal computers were common. I haven’t had anything to do with programming since the early 1990s and do not claim any current proficiency.

One thing I do remember from programming, though, is testing. Highly simplified: Testing is the procedure you go through trying to find mistakes in your code. It is as much a mindset as an exact procedure. Sharing it with you may help you understand my approach to video poker.

In programming, the goal is to create a program that does exactly what it is supposed to do. If it’s a banking programming, for example, you don’t want people to be able to access money in someone else’s account, but you do want them to have access to their own. That can be a fairly involved program. In an automobile, if the purpose of the program is to turn on a warning light when the amount of gasoline gets to a certain level, that is a simple program, but still you want it to work properly. Warning lights that illuminate when they’re not supposed to or don’t turn on when they are supposed to are annoying to the driver and a headache for Mr. Goodwrench to fix.

Virtually no program works perfectly the first time and these imperfections are commonly called “bugs”. Sometimes these bugs are difficult to find. One might only appear on February 29, for example. If not discovered beforehand, it might shut down an entire company once every four years. Another bug might take several unlikely-but-possible events happening simultaneously to crash the program, but when it does happen (which it will eventually), it can be expensive to fix.

Why did I say this is a mindset? Because to a good programmer, the goal is 100% accuracy. A program that works 98% of the time is woefully unacceptable. A good programmer spends a lot more time checking his work than most non-programmers can imagine.

Now let’s shift the discussion to learning to play video poker. The “computer program” in this case is you — including your knowledge, your attention span, your distraction level, your sobriety, etc. The vast majority of people who play video poker have the attitude of something like, “If I know most of the plays, that’s good enough. So what if I miss a few of the exceptions? They’re pretty rare and not very important.”

My approach, on the other hand, is that if I only know how to play 99.8% of the hands in any particular game then I’m not ready to play for real money. Not for nickels, not for quarters, and certainly not for higher stakes. I practice on the Advanced Mode in Video Poker for Winners.

Using one computer program is good. Using two different ones is better. I set WinPoker to Advanced Mode and then Hard Hands and then set it so that the computer only deals hands where the best play and the second-best play differ by a penny or less. When I can play 500 or so of these hands in a row perfectly, I’m ready to “invest.” The appendixes in the Winner’s Guides have a lot of information about these hands, so you don’t have to work them out for yourself, but I believe that if you play a game regularly, an attempt should be made to learn it well.

How well is well? Consider the following hands in NSU Deuces Wild, where the W indicates a deuce:

W 4♠ 5♠ 3♦ T♥ W 4♠ 5♠ 3♦ T♦

W 4♠ 5♠ 3♦ J♥ W 4♠ 5♠ 3♦ J♦

W 4♠ 5♠ 3♦ Q♥ W 4♠ 5♠ 3♦ Q♦

Most players play all six hands the same — either always W45 or always the W by itself — either of which means they are playing three of them incorrectly! Since this is a game I play for important (to me) stakes, I believe I need to know this kind of thing. If you want to argue that its only fractions of a penny we are talking about here, go ahead, but you’re wrong. Dollar players who misplay the last hand are making a 2¢ error. $25 players are making a 50¢ error. (Yes, the game is available at that denomination in 2014). Players complain that the games are tighter than they used to be (which they are), but still regularly throw away sums of money that can eventually add up to a substantial amount. Computer programs generally don’t change. The code is “locked up” and constant. But if we are using ourselves as a metaphor for a computer program, our knowledge DOES deteriorate. In the same NSU game, we may have forgotten (if we ever knew) the difference between K♠ Q♠ A♥ 9♥ 7♠ and K♠ J♠ A♥ 9♥ 7♠. Or perhaps between K♦ J♦ Q♥ 3♦ 7♣ and K♦ J♦ Q♥ 3♦ 7♥. Or maybe W 6♦ 7♠ 8♥ K♣ and W 6♦ 7♠ 8♥ K♥. Or even 6♦ 7♦ 3♠ A♥ Q♣ versus 6♦ 7♦ 3♠ K♥ J♣ If you haven’t reviewed these types of hands recently, I’d be very surprised if you made the proper distinctions. There are HUNDREDS of similar distinctions to be made in this game. One big reason for my success is that I attempt very hard to master them, and I still review them regularly — even though I’ve played this game for thousands of hours.

I do not review 9/6 Jacks regularly because the penalty cards in those games are very easy and I have them down cold. Even 10/7 Double Bonus, while MUCH more difficult than 9/6 Jacks, has few enough penalty card situations that that game is also able to be memorized. But all versions of Deuces Wild and Joker Wild are MUCH more difficult if 100% accuracy is your goal. So I still have to review those games.

My mindset is that I KNOW I’ve forgotten some of the important distinctions and it’s important for me to search out and re-learn the ones that I’ve forgotten.

Leave a Reply