What teaching competitive programming taught me
· 1 min read
Explaining a dynamic programming solution to a high school student forces you to understand it completely. There is no room for hand-waving.
The habit I tried hardest to teach was simple: before writing code, write down the state, the transition, and the complexity. It applies just as well to production software.