Something you need to do before you design software is understand the problem