Top-down and bottom-up thinking

So, if the last post was about the details, in this post I will try to explain the concept of top-down and bottom-up thinking.

The smartest people in the world will have the Zoom In and Zoom Out ability which is to understand the nitty-gritty details without missing the big picture. Usually what happens is that either

  1. People get focussed on the details ( and gets lost in the details ) or
  2. They forget about the details

Both are equally bad and can cause failure. If you miss the Big Picture, it is very much possible that you may miss the impact of external forces that might apply to your system which ultimately results in failure. If you miss the details, it is equally possible that you do not have an accurate understanding of what is possible given the constraints.

Management folks encourage mostly top-down thinking (Big Picture) and engineering schools teach bottom-up thinking (Details Oriented). This is one of the reasons for tensions between management and the worker ants in technical companies.

To understand this principle in detail let us take the example of Iridium Communications Company.

The founding company for this firm went bankrupt because it developed the technology for satellites, mobile phones etc, however the cost of putting these satellites into space was in the order of billions which the company was unable to raise. It is possible, that they thought that, if they build the best satellite phones in the world, it will be enough for them to succeed. This is a common problem for people obsessed with details, since human mental capacity is limited, they shrink their mental models about this world so that they can see the details more clearly. This causes them to neglect the external forces that affect the system, which some people call ‘Failing to see the Big Picture’.

Now, to explain the concept of attention to detail, take the example of IBM deciding to incentivize software developers based on the number of lines of code they wrote (sorry, can’t explain this without knowledge of some detail and code and technology are details I understand). This caused many problems within IBM as people wrote code that introduced subtle bugs which they rewrote to fix (more lines), they started writing code in a verbose manner and introduced unnecessary complexities etc. What went wrong here ? The root of the problem is that not all lines of code are equal.

When a factory worker has to put in X amount of work to produce N units of stuff, then when he produces 2N units he has put in 2X amount of work. Unlike mechanical jobs (like the above case), this is not true for creative and innovative jobs like software development, journalism etc.

So you can see that the best decisions are made by people who can refrain from getting caught up in the details, take a step back and look at the big picture from multiple perspectives and at the same time see how the details fit together to form the whole system. Further, you will also note how there is considerable overlap between the two types of thinking; meaning it may be easier to explain the above principle to people who think either way.

When you understand the above principle you start to understand the idea behind a lot of quotes that go around the world, like:
“Complex systems that work evolve from simple systems that work”
“The devil is in the details”
“Details often kill initiative, but there have been few successful men who weren’t good at details. Don’t ignore details. Lick them.” — William B. Given


Published by

Joji Antony

What’s up, I’m Joji. I’m a software engineer at Nutanix living in Bengaluru, India. I am a fan of technology, programming, and football.

Leave a Reply

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

You are commenting using your 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 )

Google+ photo

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

Connecting to %s