Friday, April 20, 2018

Keep it Simple

We have this idea that the more complex something is the better it is. We seek complex ideas and complex solutions. In academia, the more complex your research is the more valued the work is. In engineering, some engineers over engineer solutions to the point that no one can understand the systems they build. Sometimes if we hear advice that is too simple, we might even reject it and look for something more complex. Somehow it seems impossible that a solution can really be that simple.

Keeping things simple is sometimes more difficult than making things complex. Lets take a software application for example. When writing code, if you don't plan out your application, you start adding code here and there as you go. Soon you might have a tangled mess of code. You don't have clear components and boundaries, proper encapsulation. Soon you might make one change which causes another part of the code to break. Although this application looks very complex, it is complex in a bad way. A developer's job is to manage complexity in a program: for example dividing the app into components. Keeping something from getting too complex actually takes more thought and planning. It means thinking about how the project is going to grow and how to break down the complexity into manageable chunks.

Some of the smartest engineers I have met are able to talk about very complex ideas in simple ways. They can interface with both engineers and business people with no technical background. In order for you to be able to do this you need to have a very good grasp of the technical subject. This lets you see it from different people's perspectives. It is said that if someone is not able to explain a complex problem in simple terms, then they don't truly understand it. If you ask someone what a database is and they can't describe it without using the term database in their explanation, that's a bad sign. They should be able to explain to a 4 year old the concept; which probably means making an analogy to something a 4 year old understands: how is a database like an ice cream truck? (I was once asked this question in a Google interview, so at least they realize the importance of this)

Occam's razor tells us that the simplest solutions are the best. Why? because simple solutions are the most direct solutions. When you add more assumptions, you add more possibilities for error. So keep things simple, realize that complex is often times worse (and due to laziness, not smartness)