Technology Development: Trains & Hitchhiking
You set a goal, pack your bags, board the train, and the only variable between you and your goal is the speed of the train. Unless the whole thing derails, you end up where you were planning on going.
Unfortunately software development is more like hitchhiking:
You set some general goals (somewhere sunny), pack your bags and after that where you end up depends on a whole lot of variables: who will pick you up and where will they be heading to? Along the ride your goals can change at every turn. You might end up pretty close to your goal but the further you are planning on traveling the greater the chances that you won’t.