A few days ago, my colleague assigned me the task of joining two entities through a foreign key, which basically means extending a set of data through a relationship. For example, every bank transaction is related to a client. If you want to get the data of the client in the transaction that is represented by a foreign key, you get the data by using a JOIN command.
Without losing time, I jumped on the task at hand. Almost an hour passed before realising I missed the whole point. I wrote a few dozens of lines of codes to add another related but different model (e.g. customer) with the bindings through decorators (also known as annotations).
I was solving a different and irrelevant problem. I took a pause before continuing the work and reflect on how this happened.
I encountered these situations throughout my career - trying to work on the solution without truly understanding the source of the problem.
Once I understood the exact situation, I had to rush and could not complete the remaining list of tasks for the day as I lost almost 1 hour.
So how do you avoid this situation?
This is something that happens to plenty of developers, creative workers and problem solvers in general. Without truly understanding the requirement, we jump right across the task. I've seen it happened to several of my colleagues throughout my career.
One way of mitigating this problem is by using the Richard Feynman technique. The main idea is to try to understand the problem statement in a way that you can explain to someone else.
Mr Feynman said the best way to understand something is to try to explain it to someone else. If you can't, then you don't understand it well enough. And if you are at such a state, you do not continue working - as you are only going to waste yours and everybody else's time.
Now you don't need to actually search for a person, but you can also explain it by writing it down. You can for instance describe a requirement in an email for delegating to someone else even though the task is assigned to you. This forces you to truly understand the concept behind and get more information from the decision maker if required.
“If I had an hour to solve a problem I'd spend 55 minutes thinking about the problem and five minutes thinking about solutions.” - Albert Einstein
"Seek First to Understand, Then to Be Understood." - Dr Stephen Covey
Coming back to my task - until I was about to communicate with my colleague for asking a question, I actually understood what was required. I wrote a small description of the problem he told me as a summary and immediately found what elements I was missing. The problem itself was simple requiring only a few minutes of work, a fraction of the one hour I lost.
Therefore, when you are assigned a task, describe the problem in a way to explain someone; or as a means of delegating it. This forces us to understand every point which helps with completing the work and not lose time, energy and effort solving the wrong problem.
Solving the right problem makes us more effective and productive, without losing unnecessary time and effort.