Tennis pros win based on the positive actions they take: unreturnable shots down the baseline, passing shots, service aces, and so on. We (beginners) try to emulate our heroes and fail… We hit our deep shots just beyond the baseline, our passing shots just wide of the sideline, and our killer serves into the net. It turns out that mediocre players win based on the errors they don’t make. They keep the ball in play, and eventually their opponents make a mistake and lose the point.
Tennis pros are playing a Winner’s Game, and average players are playing a Loser’s Game. These are fundamentally different games, which reward different mindsets and different strategies.
The smart novice programers play a Loser’s Game, where the greatest reward comes to those who make the fewest and smallest mistakes. That’s not very exciting but works.
What is the best way to succeed? As in all Loser’s Games, the key is to make fewer mistakes: follow examples closely, pay careful attention to syntactic details, and otherwise not stray too far from what you are reading about and using in class. Another path to success is to make the mistakes smaller and less intimidating: take small steps, test the code frequently, and grow solutions rather than write them all at once. It is no accident that the latter sounds like XP and other agile methods; they help to guard us from the Loser’s Game and enable us to make better moves. Search Eugene Wallingford for more info.