TLDR ALERT – see the presentation video at the bottom of the post.
Viewing the World In An Object-Oriented Way
Ever since I was a kid, I have asked myself how things came into being. I have no doubt in my mind that this question has been the catalyst for continually studying complex topics such as Math, Physics, and Computer Science. I see patterns in the world that mirror complex systems that are built by the hands of man, such as the comparison between a computer and the human cell, the rotation of the galaxy and the nautilus shell (fibonacci sequence), or the mind-blowing reality that the Higgs-Boson particle is virtually consisting of a mass which neither favors a chaotic universe, nor a stable one – and yet we are still here.
The Skewed Reality Of Object-Oriented Living
If you are anything like me, then you probably hold your phone in your hand and rarely think about how the images are being displayed on the screen. Perhaps you may know that the image might be read from a database in a stream of bytes, then cast as a primitive data type, such as NSDate or cast as an image (depending on the programming language and platform). I doubt that you think that way every time though. The difficult part of being a developer sometimes is switching from thinking like a consumer and putting our developer hats on. In reality, developers and consumers MUST think differently as they are two ends of the same spectrum.
Writing Object-Oriented Code
I recently had the amazing opportunity to speak before students and faculty at Full Sail University. The event was particularly devoted to graduates of the Web Design & Development program, who had the opportunity to show their final projects to the audience. I gave a short talk on the very important lesson that I learned as a young software developer and was able to share it with other developers too. Just like how Bob Ross painted beautiful compositions in layers, so too must software developers (web, mobile, IoT, etc.) when we craft complex, beautifully designed, secure programs. Object-Oriented Programming is so much more than just writing classes, procedural code, and hoping it all works out. No, the key to writing clean, secure, and efficient code is to consider the smallest integral part of a piece of software, write the class definition for that piece, and abstract your way up.