The Importance Of History
Dec 10, 2019 09:03 · 515 words · 3 minute read
History, what is it good for?
When I interview someone I often ask, “Where did object oriented programming (OOP) come from?” There generally isn’t a right or wrong answer to this in the interview. You can go look up whether a particular answer is consistent with what’s on the internet. However you could give several answers that would all be right. You might say, “it was pioneered in Sketchpad.” Or you might say, “it came out of the atom in LISP.” Both are consistent with history. Each lens can bring a distinct understanding of OOP.
Why is that important?
I often cite Simula and base my understanding of OOP from that perspective. It helps me to understand OOP and think about how it works. I use it to tell myself a story. I ask about OOP because I’m interested in the story that they tell themselves. It can also help identify people that understand the how, but not the why of a technique. People who understand how, but not why generally can explain what OOP is, but not where it came from. The ability to understand why a technique is the way that it is, helps people understand when they should follow it. I would claim that ability is a prerequisite of mastery. As Pablo Picasso said, “Learn the rules like a pro, so you can break them like an artist.” You can’t know when it is okay to break a rule, if you don’t have an understanding of why.
WAT??
Another example that I find instructive is Javascript. The wat video shows some interesting examples of unexpected behavior from Javascript. A few years ago I worked with a friend. That friend worked at the Mozilla foundation. My friend had the chance to work with Brendan Eich. When we talked about the video my friend related a story to me. Every time he had a question about why Javascript worked in a particular way he would ask why. Usually Brendan would answer along the lines of, “Let’s see what happened at the time.” Many of the problems in the WAT video stem from an assumption on how the language would be used. Eich pointed out that when language was initially designed it was designed to try and continue working as best it could on the client side. In other words continue to work without a developer. The type conversions and error handling are logically consistent with this view. If you go back and watch the video this makes a lot of sense. Most of Javascript does would allow it to function as expected. With that in mind the wat video is actually fairly misleading. But you would never know that without an understanding of the history.
Conclusion
Taking the time to really understand the history of technology is important. It gives a grounding in the intention. It allows current users not to reinvent the wheel. It helps to direct where and how to use current technologies. Ultimately if I could I would require all schools to have a class on the history of different technologies.