I was recently thinking about what “doing something in a simple way” actually means. “Simple” what a complex word. When you working in the IT you hear everywhere “keep it simple”, “just do it simple”, “remove the complexity” etc. But everyone I asked explaines the meaning of this six letters differently. So what is it?
What does simple really mean and when is something really simple?
After thinking about this for quite a long time now I believe we need to think about “simple” as a function over time. Something can be simple today but is too complicated tomorrow. Furthermore it could happen that it is too much simplified in the future so it’s not fitting all the needs anymore! Aside from that I believe that simplicity is not free when you bring effectiveness and efficiency into the game !
When we bring all together I would say that the perfect simplicity costs to much in most of the cases that it’s often not worth to actually reach it. That means that it is ok to be simple enough in a lot of cases and maybe provide not the best (in terms of simplicity) solution but maybe the Most Valuable (keyword MVP) one.
When we bring all this to business it means that it’s ok not to have the perfect process as long as it is within a certain distance to it.
And when I think about programming with this in mind I would propose that most of our programming languages do not support us to be simple over time! Most of the static typed languages require more thinking up front and therefore we are make our stuff probably to complicated in the first shot and have to approximate from the top to the effectiveness hose. On the other hand all the dynamic languages helping to be simple in the first place but do not supporting your refactoring work so the complexity is growing fast… Might be that golang is a way out of this but I haven’t done much with it so far.
If you have any idea about what simplicity means for you please comment!