This presentation points out the different between simple and easy. It starts talking about the difference between those two words from their word origin. He defines both words and their antonymous (complex and hard) in the context of Software Development.
Easy / Hard are relative, they depend on how familiar an individual is with something. The things that might be easy for me might be hard for you.
Developers usually focus on trying to make the process of construct software easy however what really brings flexibility, maintainability, quality, etc is simplicity.
Even if something is hard to learn but helps you to create simple software it is worth using it.
Complex things are too tight, connected, coupled. We are limited to the things we can reason about at the same moment. Rich Hickey compares a regular person that can juggle 3 balls at the same time with the one who is the best in the world. Probably the best in the world might be able to juggle 6 or 20 at the same time however he won’t be able to juggle 100 balls, there is a limit on it.
Rich Hickey lists some points that must be considered when choosing technology and tools to develop software in order to make it simple.
He does some comparison with unit tests that are supposed to bring flexibility (ability to change) and guard rails, “nobody drives hitting the guard rails”. Almost all hard to find issues are not covered by tests, they require that you understand the source code.
He says that if you favor easy over simple you will get speed during a short period of time however in the long run simple is much better. He compares to runners, they can run super fast for a short time but when they want to run for a long time they can’t start super fast, it is better to keep the pace. He says a fun thing about agile, he mentioned that we solved this problem creating sprints, so every week someone fires the starting pistol.
Rich Hickey is the author of Clojure.