There’s a third aspect of being easy that I don’t think we think enough about, which is being near to our capabilities. And due to a combination of hubris and insecurity we never really talk about whether something is outside of our capabilities. It ends up that it’s not so embarrassing after all because we don’t have tremendously divergent abilities in that area.Rich Hickey, Simple Made Easy [00:07:10]
Because the fact is, we can learn more things, we actually can’t get much smarter. We’re not going to move our brain closer to the complexity. We have to make things near by simplifying them. The truth here is not that there are these super bright people who can do these amazing things and everyone else is stuck.
Because the juggling analogy is pretty close. The average juggler can do three balls. The most amazing juggler in the world can do like nine balls, or twelve—they can’t do twenty or a hundred. We’re all very limited. Compared to the complexity we can create, we’re all statistically at the same point in our ability to understand it, which is not very good.Rich Hickey, Simple Made Easy [00:23:20]
How can we possibly make things that are reliable if we don’t understand. It’s very, very difficult. For the things we want to understand and make sure are correct, we’re going to be limited to our understanding. And our understanding is very limited. So we can only consider a few things and when things are intertwined together, we lose the ability to take them in isolation.
Every time I pull out a new part of the software that I need to comprehend and it’s attached to another thing, I have to pull that other thing into my mind because I can’t think about the one without the other. That’s the nature of them being intertwined. So every intertwining is adding this burden and this burden is combinatorial as to the number of things we can consider. So fundamentally, this complexity is going to limit our ability to understand our systems.Rich Hickey, Simple Made Easy [00:12:35]
I don’t write better software because I am smarter than you. I’m just too lazy to work on systems where I have to spend four days bouncing back and forth between seven different classes just understand this rat’s nest well enough to finish a two-point user story.
The problem is you always understand the code you are currently writing so its very easy to write code that even you won’t be able to understand six months from now. The only way to fix that is to develop habits that will give you immediate feedback on how easy it will be to understand your code.