We all make assumptions. We make all the time, it can be about anyone and anything. If you are not smart in making the assumption then you may get badly trapped in it. Most of the time assumptions make your life easier but at the same time they acts as a barrier in your knowledge. For e.g being from tech side if you want to know that how an app xyz works, then there are two cases, first one is that you searched for it and its related algorithm and second one is that you make some broad assumptions like that app might be working on concept of Machine Leaning, Artificial Intelligence etc. In the first case you will get to know about algorithm used, tech stack used and a lot of related technologies etc but in latter case you are making assumption (might be wrong also) which is putting you in comfort zone but at the same time it becomes a barrier in knowing new things.
The problem with making the assumptions, and we all do it, is that more often we are wrong. We assume that a person has a specific motivation for their actions or that an event took place for a specific reason. Then we start to see these incorrect assumptions as the truth. A lot of damage can be done by confusing our assumptions with the truth. For e.g a husband can assume that his wife is being unfaithful, and accuse her with so much conviction that he destroys her love for him.
The prime assumption, that is guaranteed to be wrong, that will effect all programmers, nearly all the time is:
Assuming that the clients know what they want.
The truth is….they don’t. Part of being successful at building software is observing the places where if they are wrong and change their mind, the entire thing goes up in smoke, and reducing the risks involved. Never assume client know what they want, always be prepared for them to change their minds.
Better way to avoid making assumptions is that ask more questions to yourself, your client or any other concerned people before your assumption become true for you .