Problem Solving

My day job involves problem solving – I was wondering which aspect of my life does not involve problem solving! Over the years, I have realized that problem solving is much more than thinking logically, talking to computers and spewing out code on full moon nights.

One day I started writing down a personal checklist of tips, techniques etc that I believed will help be become a better problem solver. Another important reason to have the checklist was to be consciously aware of techniques at my disposal.

I am planning to make this a series of essays on Problem Solving where I will walk through each tip I have in my personal checklist and my rationale for including it in the checklist. Your thoughts are welcome and much appreciated!

The entire list of tips are:

1. Be Logical. Keep Emotions under check.
2. Do you understand the problem?
3. What are the constraints for this problem?
4. Is there somebody who can help you solve the problem?
5. The Rule of Three. Describe 3 potential solutions to the problem. Describe 3 ways in which you could have misunderstood the problem.
6. Understand when you have to stop. Take a break.
7. Paradoxes are beautiful. Embrace them!
8. Stress leads to poor decisions.
9. Listen.
10. Your reaction to mistakes is more important than the number of mistakes you make.

1. Keep Emotions under check. Try thinking Logically.
Anger, Fear, Frustration, Disappointment, Embarrassment, Sadness will reduce your ability to be effective at problem solving.

Having worked with computers, I realized that it does not make the job easier when you get frustrated or angry. Especially at the computer! Jerry Weinberg had a great insight when he said that the software programs we write are a reflection of our intelligence. Often times, our frustration is not at the computer but at the reflection of our own selves that the computer is so eager to project back!

I wanted to recount a personal story that helped me see the importance of this tip. I am currently the Technical Lead on a data warehouse project. I was developing ETL jobs to transfer data from one database to another (simplifying to an extent). I was having trouble with one particular ETL Job and was making numerous mistakes on this particular job. I would start getting nervous and anxious whenever I would run this ETL job. It became a Monster in my head – the capital M kind. One afternoon, I started to execute this ETL job with lots of trepidation. The job usually took 15 minutes to complete. Being very nervous, I started monitoring the target tables and checking if the table was populated to determine if the ETL job ran successfully. After 15 minutes, there was no data in the target tables and the ETL job was still running. My heart fluttered a bit and it seemed that I was having trouble again with this job and that thought made me even more nervous! 15 minutes turned to 20 minutes. No data in the target table. Finally at the 30 minute mark, I was in full panic mode and my nervous system was at DEFCON Level 5. My image of being a competent programmer was taking a huge hit in front of my own eyes. I felt embarrassed, ashamed and disappointed that I was not able to fix the problems with this ETL Job. I started investigating what the problem could be and came up with a couple of scenarios why the ETL Job was running for so long without finishing. I wanted to do a thorough job and tried to validate how these particular scenarios could be possible. In the end, it struck me to look at a Audit table we have built for tracking the progress on ETL Jobs. I was stunned to find out that the ETL job had finished in under 5 seconds. All this while, I thought the job was still running and hadn’t completed! On closer inspection, I realized that I had passed a wrong date parameter to the job that resulted in no data.I fixed the parameter and the ETL job finished successfully!

I had made the following mistakes because of my anxiety and nervousness:
1. I had failed to monitor the audit tables and instead chose to monitor the target tables to see if the data was moved successfully.
2. When I saw the target table had no data, I incorrectly assumed that the ETL job was still running.

This particular incident is etched in my mind because I could see how strong negative emotions had a huge impact on my problem solving ability.

Looking back, I have consistently noticed that emotions such as Anger and Frustration does not really help us get closer to solving the problems. That does not mean that we should never vent our frustrations etc. However, in the grand scheme of things, they seem to be wasted energy! Being calm and relaxed, have better results! :->

Advertisement

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.