3 essential tactics for program design