Should we make assumptions?
23 days agoA common saying when discussing software development is "When you assume, you make an ass out of you and me.". But how sacred is this saying? We often use this sentence when translating business needs into software requirements. Since the developers of software are rarely the end-users, it's hard to guess how those business needs need to be understood. So the rule of thumb is to never assume anything and make everything explicit.
Can we assume that all assumptions are bad?
I didn't intend to write a paradox, but it gives us a nice starting point. If we assume all assumptions are bad, does that make that assumption invalid? And thus not all assumptions are bad? Which again casts doubt on the statement that this assumption is bad.
Should we regard assumptions something to avoid? It depends on the assumptions and context of those assumptions. Making baseless assumptions probably isn't a good idea, but making them based on experience, past data, or background knowledge isn't bad per se.
Assumptions in traffic
Imagine the following, you're at a intersection with traffic lights in a car and you've stopped for a red light. On your left side another car is speeding towards the intersection and crosses it without braking. Can we say, for certain, what color of the light over his lane was? There is no way for us to see the lights and know for sure. If we assume the light was green, we also need to make the assumption that the driver wasn't breaking the law, we also assume the traffic lights are working. Though our experience tells us this, more often than not, is the case.
This also works the other way, if we get a green light we assume we can cross safely, we assume the other traffic has red lights, and we assume they will actually stop for the red lights.
Can you imagine what would happen if nobody assumed any of those things? Traffic would either come to a standstill or become anarchy.
What can we assume?
I won't say all assumptions are inherently bad or good. By default you should avoid making assumptions. But, depending on the situation, it's better to assume something than to spend effort to deduce something. Especially when you're the expert on a topic or there is little to no risk to it.
I've briefly discussed the risks of assumption in a previous post, the form of a table, and as an extension on that example: When a client asks for a table, we can at least assume it should be sturdy enough to place things on top of it. Depending on the context we can ask further into how sturdy it should be exactly. With domain knowledge you could estimate that, or consider if that it's necessary to ask.
As a more pedantic example: when a client asks for an ecommerce site, we can with certainty assume they want it to be available online.