Tuesday, 8 May 2012

Chasing ideas

When working on complex tasks related to knowledge disciplines like software development, our brain works in a way that really makes us find ourselves running and reacting right behind it like chasers.
Given that providing a software development solution requires a great amount of technical rules and knowledge applied to a specific solution, taking into account possible scenarios/use cases/logic paths and a big amount of creativity on the solution design, we usually use a huge portion of our attention on this, which requires a total control on our concentration. 
Trying to think of what I think and do when working on a problem solution, I can enlist some of the ideas and activities that pop up during the process:
  • listen/read the problem (or both)
  • try to understand the expected/desired/possible result
  • think of technical alternatives
  • think of the right tool to solve the problem
  • understand if I need to investigate new tools
  • make quick searches on the internet
  • think of other similar problems from the past
  • sketch some drafts in paper
  • think of a person who would know about the topic
  • go back to the original problem
  • think of a possible alternate high level solution,
  • assess the cost/effort of that solution...
This is just a really short summary of the amount of things we do when working on a solution and, for sure, it varies from problem to problem,context to context and person to person. Besides, the activities/thoughts in the list don't have a specific order and we jump from one to the other based on our previous experience, partial results and lines of thought we have.

It's really interesting to see how a quick interruption in a task that requires our complete attention and concentration can make our previous efforts completely useless and turn them into wasted time. Exactly the same consequence is obtained when working with the incorrect tools, tools we are not familiar with or slow ones.
Imagine the following scenario based on the list above: 

  • listen/read the problem (or both). 
  • I can barely hear, there's a lot of noise in the call/office. Let's start again.
  • try to understand the expected/desired/possible result.
  • think of technical alternatives.
  • think of the right tool to solve the problem
  • but we can't use it, we need another alternative
  • understand if I need to investigate new tools
  • make quick searches on the internet.
  • Oh, my internet connection is really slow.
  • think of other similar problems from the past
  • sketch some drafts in paper.
  • phone call... blah blah.... end call. "what I was doing?" back to start.
  • think of a person who would know about the topic
  • call the guy. Oh, he's not there... ok, let's wait until his back and do something else in the meantime.
  • go back to the original problem
  • think of a possible alternate high level solution,
  • SMS/Whatsapp/facebook/... hm... what I was thinking of?
  • assess the cost/effort of that solution...
Of course, it's impossible to avoid any interruptions in our work environment and this won't stop happening, but what's really important to highlight is the importance of making the best efforts to get as much control on the work environment as possible. Meaning, creating a comfortable environment (from comfortable chairs to mutual respect on the office noise), getting access to the correct tools, avoid unnecessary interruptions, establishing priority rules so everyone understands when an interruption requires immediate attention, etc. and therefore minimize the issues that deviate our attention to our responsibilities while working.