When you start analyzing the two strategic activities of playing chess and developing software, you will notice they share many core principles. Defining a goal, recognizing patterns, and learning from mistakes are just some of the important concepts to keep in mind with both chess and software.