Main point: When confronted with the need to make assumptions on softwaredevelopment, pick the one that is easiest to implement.
I am working with software and understanding data for a living. The processes surrounding that are highly dependant on learning fast, predictable and reliable to be able to deliver before specified deadlines. This partially relies on faith but mostly on an iterative approach where I move forward before finishing a step with the expectation of iterating back later on with a deeper understanding. I embrace it and let it lead the way I work.
Knowledge is partial and requirements vague. Hence, it is important to be aware of assumptions vs. knowledge. As for the assumptions we should always choose those that makes our life the easiest; We should choose the assumption that yields the lowest lift solution.
At Spor we often need to make data we do not fully understand available for exploration without rails. Data is made available by writing an ontology that assigns semantics to the data. As with other software development, we are at liberty to only implement semantics we are certain about. And so we do. We choose the assumption that data we do not fully understand is not important. As soon as that assumption is conflicted, we have new knowledge and use that to direct our efforts.
At another instances I was implementing a minimum viable product for a client. The platform was serving customers and a default assumption is that we need a sign-up flow for new users. I refrained from implementing it as the easiest assumption was that new users did not do self sign-up. To this day, the platform does not allow people to enter a sign-up flow.
Working this way has the bi-effect of recognizing that there are things in life that is more important than re-implementing the same feature over and over again. Like spending time with friends and family.