At the risk of alienating myself, I’ve often had difficulty with object oriented programming. Not that I couldn’t understand the concept. I just always found that the languages that implemented it were causing more problems than they were helping. Or at the very least, the idea of making everything fit into hierarchical objects is too rigid of a style to be practical.
It’s comforting to know that many people smarter than myself have had the same conundrum: What’s Wrong With Object-Oriented Programming?. Charles Scalfani summarizes some common gripes in his article, Goodbye, Object Oriented Programming. (There’s a lively debate in the comments for and against).
All of this changed when I started using Objective-C and was introduced to Categories. And more so when Swift introduced Protocol Oriented Programming. If you’re not already familiar with it, the 2015 WWDC talk (408) is one of the best ways to get introduced. In addition, this is a really great article: Protocols I: “Start With a Protocol,” He Said.