The first thing you do when you design software is design a solution strategy.