Monday, January 20, 2014

Focus On Abstraction And Not Complexity


I am a big fan of software design patterns. A design pattern is a general reusable solution to a commonly occurring problem within a given context. Software design patterns are all about observing technical abstractions in complex problems by identifying patterns and applying well known solutions to them.

My management style is largely based on abstractions. When things get muddy I step away from complexity for a few minutes and explore abstractions. This helps me keep in touch with the bigger picture while I look for solutions to a given problem. When you're too close to a topic you do tend to fixate on complexity leaving sight of the bigger picture. I make a conscious attempt to go between complexity and abstraction when I need to. And, that's perhaps the only way to manage it effectively in pursuit of working smart and not just working hard. Complexity invariably makes people get into an analysis paralysis mode resulting into a decision gridlock that affects the bigger picture. In many cases, not being able to make a decision has far worse consequences than not solving a problem which may or may not be important in long run. Abstracting complexity helps me make a decision with focus on consequences as opposed to a short term solution. Abstraction also allows me to spot behavioral and systemic problems as opposed to tactical and temporal problems.

Ask yourself what you remember the most about a couple of complex problems that you solved last year and the answer most likely won't be how great your solution was but it very well would be what the problem actually taught you. It's not the complexity that you will cherish but the simplicity, the abstracted experience, is what will stay with you for the rest of your life to help you find solutions to similar problems in future.

Photo courtesy: miuenski 

5 comments:

Jonathan Stevens said...

Project management styles vary greatly between different positions at different firms. I find that the key is to stay flexible above everything else.

Bernard Markowicz said...

Abstraction is all about conceptual thinking, Conceptual thinking helps identify key business drivers in a complex problem, and helps reduce complexity by breaking a problem down into separate parts. Decision analysis can be a valuable tool for "abstracting" a problem into its core components.

Chirag Mehta said...

Thanks Bernard for the comment! You're spot on. I have observed that when most people deal with complex problems they tend to do the opposite - run away from conceptual thinking to abstract a problem.

Chirag Mehta said...

Jonathan, yes, being flexible is a key and that's why I emphasized to navigate between abstraction and complexity. But, also, make that a conscious effort.

eliza925994 said...

There are still many positive effect of cloud in many businesses and web market, just make sure to have the right cloud system integrated into your system. Databricks has made big bets on Spark . Build that first element table and give others an imagination to extend it. As an entrepreneur you were not the first and you are not going to be the last trying to solve this problem.

IT Managed Services in Brisbane