A Reflection on Simple Made Easy

Rich Hickey’s talk at StrangeLoop on the differences between ‘simple’ versus ‘easy’ and its implications to programming provided a valuable perspective to evaluating tools for programming. In his talk, he argues that a large segment of the industry overly emphasizes ease, familiarity, and convenience for creating software as opposed to prioritizing reliability, purpose, and performance.

Not only have I made the mistake of using ‘simple’ and ‘easy’ interchangeably, I’ve also fallen into the trap of implement solutions that are familiar and convenient for me. As a novice programmer, I would approach new tools that are some-what familiar as I have a basis to build upon my knowledge and continue to stay productive. However, the biggest takeaway as I gain more experience is not to jump into a familiar toolset without evaluating all the options and future implications.

Further along into his presentation Rich compares how the Object Oriented Programming (OOP) Paradigm creates artifacts that lead to complex systems. Some examples that lends to his arguments includes managing state and working with an Object-Relational Mapping tool. He argues that functional programming creates simpler artifacts and that simple systems are more reliable.

As someone new to functional programming, I can not say with certainty that I agree functional programming can lead to more reliable system. Some problems are more suited to be solved with functional programming while OOP may be appropriate for others. What is important is for me to be aware of the trade offs and implications of each. I will continue to reflect on his framework for evaluating the two paradigms as I continue to learn more about functional programming.