Design it simple, stupid
Tags: kiss, codedesign
Published: 2020-03-01 08:07:09

I love some programming principles such as as [KISS - Keep it Simple Stupid](https://en.wikipedia.org/wiki/KISS_principle), or even [Ockham razor](https://en.wikipedia.org/wiki/Occam%27s_razor) when debugging my code.

But somehow I do not practice them as much as I wish to see them on my daily work.

For example, I designed a powerful syntax the other day for a new customer, but the person that needed to code it didn't understand how simple it is (in my eyes at least).

When another fellow developer cannot see the simplicity of things I design, well, it is not simple as I see it!
**It's on me**, not on the fellow developer.

## Design Complexity 

The fast thinkers probably thinking "you are mixing between understanding and design".

I used to think that the two are different, but no longer.

As an example, lets say I provide you with two oval shapes. Then I'm explaining to you that the system must have oval shapes in order for it to work.

It is simpler to understand when everything is designed to help you understand that only oval shaped objects for example can get inside the system.

If you place a rectangle, well, the entry will not fit. The opening contain oval cutting, and the entire way of the system enforces the oval shape. 

When my design helps at very fast glance to understand things I wanted them to understand, then my design is good.

When my design does not help that, and a lot of effort is taken place to figure it out, then my design is bad.

## Testing a design

I know what you are thinking, let's create some unit testing for my theory.

Well there is a problem with that.

Things that are easy for me to understand and figuring it out, are not the same as what is simple and easy for others.

I need to generate something in a cultural agnostic way that can be understood by many.

That's why Emoji for example works. Emoji started with few symbols, and then incremented over the years.

The shapes are simple to understand most of the time - Happy face, Sad face, Angry face, Laughing face etc...

Then some less understood faces appeared, and we misused them. And that was the time that the design was over complicated.

The shape of the Emoji was too confusing.
On that point, many icons were re-shaped to be much better and much clearer for us to understand.

If something that supposed to be simple for humans to do (well, it is actually very complicated) became so hard, it's not the people that misunderstand it, it's the design that has a flaw in it.

## Taking responsibility 

I'm taking full responsibility when something is not that clear for others.

If there are people that it's clearer for them without me helping them, and others that it's unclear for them, then I'm trying to figure out what is the places people misunderstand the most.

If one or two people misunderstand, then I do not know if I can simplify it further (that is the effort for it, rather then imagination).

But if most or all people misunderstand something... 
It's time to re-group and re-think on a better way of designing the same thing.

Learn from what makes people misunderstand the design, rather then blame the people, and you'll become a much better KISS'er then me ;)