A colleague asked me why we had issues introducing a new feature into a product. On a high level, the feature was pretty simple. So I needed to explain how adding layers of complexity made the design and implementation increasingly difficult. Here’s the analogy I gave to explain the problem.
At the end of the day, most tasks are conceptually easy. Need to install a piece of software? Just click a button, wait 30 seconds and voila, success.
Any trivial task can become enormous when you start adding layers of complexity.
I just noted installing software is trivial, right? But what if you need to do it on computers running OS X, Windows and Linux? What if you need to install 24 different language versions depending on the language of the OS? What if you need to install across phones, tablets and computers? What if you need to do it all automatically?
Getting complicated, right? Let’s keep the complications coming.
What if the automation needs to do the installation during nighttime, which you need to deduct depending on what timezone the device resides in just now? What if users have to be able to opt-out of specific installation times? What if you need to have a plan for how to maintain and update said software before being able to install?
Even one of these specific needs makes the installation much more difficult. Adding a new dimension makes the task exponentially more difficult.
Based on the discussion we were having, the same colleague told me an anecdote about Facebook’s logo redesign. She said that turning the logo from blue-on-white into white-on-blue cost the company 200 million Euros. Crazy, right? (Note: I have not fact checked this anecdote.)
If Facebook needed to test the logo to make sure it doesn’t contain unplanned meanings across most countries in the world, across most religions in the world and across a substantial set of sub-cultures throughout the world, the price tag starts to make sense.
I’m often tempted to remind people of the exponential difficulty of adding layers of complexity when they wonder how it’s so difficult to do simple things in large organizations.
On the other hand, this presents a huge business opportunity for anyone who wants to serve the enterprise segment. Just select what types of complexity you want to support and build a product or a service to mitigate said complexity.