In software development, assumptions cause a lot of issues. Particularly when they’re quite speculative and not tested until as early as is practicable. Re-work or deadline extensions follow, inevitably.
Sometimes the reverse is true, in life as well as in software. We thought something was needed or complicated that turns out not to be, and this pleasant surprise (unless profiteering on hourly work) leads to those resources being used elsewhere, to achieve more.
A trivial example – my idealising about an Apple mouse to go with my MacBook. Wanting one gave me pause for thought in terms of how to setup my desk and screens so I would feel happiest. Should I also get an external keyboard? Build or buy a stand for the laptop if it’s off to the left of the main monitor? I reached a decision and gave myself some extra work to do, to create the ‘perfect’ desk, then went off to the Apple store. It turns out I don’t like the mouse as much as I like using the trackpad – the reverse of my experience using Windows!
Given this realisation, I no longer need to tweak my desk layout. A few moments to make sure cables are tidy and the monitor is at the right height behind the MacBook – job done. I spent far too much time working out how best to accommodate a mouse, before making sure that I really wanted the mouse.
Nice to have the assumption wrong this way around!