How important is planning ahead when building software?