This is on how to take your first thought and turn it into a good design. Good design for the sake of easy tweaking, gaining confidence that there are no bugs, and making it easy to tell what’s going on after not looking at the code for a while. Explains the process from an atomic alpha idea, to a full system, to tweaking the strategy and execution. Shows how to go from your first thought to the most natural final design.
Three parts: 1 on the basic structure, 2 on a more adaptable FSM design, 3 on managing complexity as new functionality is added. To be followed in order.