Tuesday, March 18, 2014

The Best Designs are the Simplest Designs but Carries the Most Thought Behind Them

One of my favorite quotes is from Steve Jobs: "When you first start off trying to solve a problem, the first solutions you come up with are very complex, and most people stop there. But if you keep going, and live with the problem and peel more layers of the onion off, you can often times arrive at some very elegant and simple solutions".

I've experienced this over and over again in my Software Engineering Career. Most people stop at the first incarnation of the solution. Key to getting to the optimal solution is to do rapid iterations of the visualization of the solution and to really listen to feedback from critics as well as that little voice in your head that says something is not quite in order. Your critics can be your biggest strength in getting to the ideal solution - because the right solution will balance different perspectives while providing simplicity. This means you need to have an open mind that can absorb the best parts of maximum possible solution options. But an open mind does not mean continuous wavering or indecision on the approach. How do you move from the listening or feedback mode to honing in on and clamping down on the right solution? You do that by boiling down the problem solving process to key principles and conscious trade-offs. This is one of the most important aspects of the architecture practice.

2 comments:

  1. Can't agree more, as described by Tony Hoare's famous quote : "There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult. It demands the same skill, devotion, insight, and even inspiration as the discovery of the simple physical laws which underlie the complex phenomena of nature."

    ReplyDelete
  2. Absolutely! This is where Software Engineering becomes an art as well as a science - you really need to FEEL it first. The effort is to put that feeling into words - boiling it down to the core principles and trade-offs you can clearly communicate and defend to both yourself and others.

    ReplyDelete

GraphQL: what REST should have been?

Since the dawn of distributed computing, we've gone through many different mechanisms and standards for programmatically invoking remote...