Total Pageviews

Sunday, July 27, 2014

5 Mind Hacks for Cracking a Winning Solution

Process of finding right solution to a problem is like reaching trans through meditation. You need to focus on body, breath and mind  step by step to reach the trans. Its not easy. At every step there are distractions. So are distractions in the process of finding solutions. You cannot resist them. They are natural. You can only observe them and understand them. Its only that understanding that sets you free.

Here are 5 hacks to train your mind to deliver winning solutions. Its mostly thought out with software development background but it does not contain anything very specific about software like architecture, design or programming language etc Its meant to be set of generic principles.  


[1] Problem x Space (Present): Immerse yourself and get intimate with problem  

Can you Feel the breath? Breath of the problem and problem only. 

After you hear word problem, its tough to resist the word solution flashing in your mind. They are like twins. I know its hard to resist both. 

Wait..Hold that thought right there. Thinking about both at same time is like having both of your girlfriends visiting your house at same time !!

That says it all. While you are thinking about problem, focus only on problem. Build the intimacy with the problem to understand it completely. Its very natural to have thoughts about solutions come running while you are thinking of problem in your mind. Make a conscious effort to not let them in. Block them.

Why? What happens if I let thoughts about solutions come in during the process of problem understanding?

Lets say you have only understood part of the problem and you also start multi-task thinking about the solutions as well. The solutions you are thinking can by themselves have some implementation level problems.  Now you have risk of mixing the core problem with implementation issues of the solutions. This can misguide you as to what is the definition of the primary problem. This can potentially leave you with incorrect understanding of the problem.  Don't let the solution space bias your understanding of the problem space.

Also do not worry about how this problem could evolve. Future is imaginative. Its like imagining the trajectory. The accuracy of the predicted trajectory improves if you locate the starting coordinates accurately. Just stay in the moment and understand the problem at this moment.  Just that. 

Remember: The simplicity of solution is directly proportional to the intimacy with the problem. 

[2] Problem x Time (Future):Imagine it over the Lifecycle

Now that you have understood the problem at moment correctly, Don't just fall for looks at the moment. 

Imagine how your problem will be evolve over the entire lifecycle. At different phases the problem will evolve and morph itself into something  different. It may not become totally different but slight variation. Try to visualize and understand it. This helps you to identify those small tweaks and those little additional features that can make a big difference in usability of solution. It also helps to future proof your solution.

Imagine simple TODO list tracking problem for a management team. Lets say you are expected to solve tracking problem by showing total tasks and total completed tasks for a project.  Lets visualize how the definition of this problem could change over a period of time. 

At the the beginning of the project, leaders are interested to look at the total count of tasks at project level to get sense of overall effort needed. But after intermediate milestones are defined, Leaders are interested in knowing how is project doing on next milestone rather than complete project level details. Now the todo tracking solution should be capable of showing total tasks and completed tasks for a complete project or per milestone to be effective over project life cycle.  Problem definition has changed slightly over a period of time. Modification in original solution to support such requirement is simple tweak, if its thought out upfront.

Remember: Imagining problem over its lifecycle allows your solution to stand strong through the test of time. 


[3] Solution space: Enumerate Theoretically and Execute Practically

After the problem has been completely and clearly understood in space x time, enumerate all the possible solutions. While thinking about solutions do not worry about the priorities, resources, how to implement it, what has been precedence etc. These are secondary parameters. First, just focus on defining solutions with all its possibilities for primary problem without writing anything off.

After you have enumerated all the possibilities, start thinking about secondary parameters during the selection of the solution.  Now bring in priority, resources, precedence, process or any other secondary parameter that you care about in the play and select the solution that is practical for execution. This allows you to make a very informed choice. Right solution gets selected. It also allows you to switch to different solution easily in future if any of the secondary parameters change. 

Remember: Never allow premature rejection of possible solutions based on the secondary parameters.

[4] Solution review: A round in Boxing ring  

Now that you have a solution, How do you check if your solution is ready for implementation? Take it for a round in the boxing ring. 

For any completely and clearly thought out solution, It must be possible to communicate it to any one in 10 minutes. May not be all parts of the solution, at least the core theme or the core essence of solution should be communicable in 10 minutes.

Even if you are not expected to review  your solution with anyone, force yourself to do that. It forces you to organize your thoughts. It brings out any weak links. It makes sure the solution is coherent. It allows you and your team members to question it. It allows any weakness to surface and hence get addressed. Also make effort to focus on anything that you are not comfortable during debates. Expose its weakness. Let it take some blows especially in the weak spots.  

Remember: Do Not hide weakness in solution. Let it take some blows early to stand stronger in finals to win it.

[5] Solution implementation: Balance ease of Developer vs User

 Both developer and user are people. Both are real humans. Have empathy for both.

"Build highly user friendly solutions" has been pounded in to our head. While I am not denying that but its worth noting that there are people on both sides. You cannot totally ignore the people who are building the solution under given time and resource constraints. If you tax developers unreasonably to build a highly user friendly solution they are going to do a poor job out of it. Thus its good for no one. 

Once you internalize the fact that there are people on both the sides you will surely be able to  balance it. Initially it may seem counter intuitive. But you have to trust in it and make sure you balance it. Attempt win-win for both the user and developer. It's possible. 

Remember: You take care of your developers and your developers will take care of your users.  


All of it might sound like lot of work, potential "Paralysis by Analysis". I hear you. You are right it might sound like it. Come on, think yourself. If that's reality of the problem why run away from it. You can make conscious decision to do it over a period of time. That's fine. But do not hide it under the rug and forget about it. If you do  that, it's anyway going to pop out. It will pop out when you least want it. When that happens you can't blame it on Murphy's laws. He will say, I have already told you so. 

Doing anything worthwhile is going to take time. Prioritize but do it well. 

The structures were austere and simple, until one looked at them and realized what work, what complexity of method, what tension of thought had achieved the simplicity. - Ayn Rand - Fountainhead

No comments:

Post a Comment