In the TV Land 2006 documentary The 100 Greatest TV Quotes and Catchphrases, Lowell Ganz credits Jerry Belson (July 8, 1938 – October 10, 2006, a writer, director, and producer of Hollywood films for over forty years) with including in the script of the season 3 Odd Couple episode My Strife in Court (originally aired Friday February 16, 1973) the catchphrase:
Never ASSUME, because when you ASSUME, you make an ASS of U and ME
Ganz noted Belson had heard it used years ago by a teacher in a typewriter repair class. (Source: Wikipedia). If you google for it though, you’ll find that it’s a quote of Oscar Wilde.
But what does really mean to assume? According to dictionary.com:
assume verb (used with object), assumed, assuming 1. to take for granted or without proof to assume that everyone wants peace Synonyms: suppose, presuppose; postulate, posit.
When you look at those two above you may think that assumptions have only pejorative connotation. However, we still make them. Why?
On every project, there are things you know and things you don’t know. When it comes to the difficulty of the unknowns, you can make progress only thanks to assumptions. Without assumptions, you’d never get anything done because you’d be frantically proving everything before you’d move on.
Assumptions are anticipated events or circumstances that are expected to happen during project’s life cycle. Or things you assume to be true about your application or customer requirements.
The problem with assumptions, however, is, that even though they are supposed to be true, they don’t necessarily end up being true.
For example: Imagine you work on a particular feature with another developer (let’s call him Joe). You have made the assumption that his part of a project will be available to you whenever you need it. However, when the time comes, the thing you need is not yet delivered.
Another example: you make an estimate on how long it is going to take to fix a bug. You assume you know where to fix it. You make a certain estimate, estimating even a little bit more just in case or to get a breather. Than you start to fix the issue and it turns out there are so many dependencies in the code that fixing one part breaks another so it takes up more time and effort than you initially predicted.
As you can see, in software development, assumptions can be anything: they might be related to people, environments, time or any kind of functionality. When they end up being false, they can affect your project outcome significantly.
How to avoid false assumptions?
First, you ought to be aware that you actually make one. Try to pause before jumping to conclusion and ask yourself: “How do I know this?”. “How do I know Joe is going to deliver this feature next Monday?” “How do I know fixing this bug this way will do no harm to the other parts of the system?”
If you stop and do some fact-checking before deciding that you know something, you’ll avoid the trap of false assumptions and most likely prevent a lot of unnecessary difficulties for yourselves and the others.
When you are aware of the limits of your subjective knowledge next step is relatively easy: clarify and communicate. Ask your colleague or teammate about their intentions, or about their perception of the situation. And if you have to make a decision based on assumptions be sure to communicate them to other parties: your team members, colleagues, managers or customers.