I had been mulling thoughts on object oriented programming when I came across this Hacker News post. One highlight in line with my thoughts is this comment about solving the actual problem instead of diving into the structure of the objects. It’s an easy trap to fall into, because we think we need the structure or abstraction, but making that judgement pre-maturely can lead to over-abstraction.

I also found this other comment quite insightful. I never thought of the web itself as a giant object oriented system where each website is an individual program.

Some people mentioned that object oriented is not well-defined. I’ve found more value focusing on individual concepts like encapsulation, polymorphism, immuatbility, and so on; then look at how different languages, object oriented or functional, implement those concepts. Good ideas tend to permeate to other languages, although they may not be fully representible because of core design philosophies. For example, I can program in an immutable way and take immutable concepts but there’s a difference between doing that compared to the required level of immutability for Erlang.