One of the things I seriously hate while doing work is to be able to look back and say that things could have been different but I did not put the required effort to get the job done. Completion of software projects is as much about planning as it is about being able to put the required amount of effort into it. The thing is that anyone can do anything technically, but it is the things that we actually do, matter the most and are the ones seen by the world. So yeah, while the world is harping on being agile and doings things fast, one step at a time, I think that doing them and not leaving them for later is a bigger game changer. No matter how agile we can be, there are things which should be done at an early stage of the project and cant be left for later. There is no guide which can tell which decisions fall under these categories, it's an individual's job and an individual regret that lives on with him/her later for the rest of the project cycle. We all wish for things to happen, but we can't just hope for them to happen, we have to satisfy the necessary preconditions in order to get the job done.