Thanks so much for the excellent explanation. I remember reading about this in Smalltalk, Objects, and Design when reading about polymorphism. They only focussed on the upside of not having to adjust methods. I did notice that when building functional stuff and then having to update a bunch of functions when I made a change to the data.
As throwaway826483 said, Harvard's CS50 and Learn Python the Hard Way are great resources for getting started in programming. But I really think after that you'll be scratching your head as to WTF to do next. That was my experience. I recommend this book, then try some interesting projects. If you need a project idea, I'd suggest a Chip-8 emulator, at least halfway done, then a z80 emulator. They're not as hard as they sound at the most basic level, but give you a manageable degree of complexity, a lot of design choices to go "hmm," at, and are pretty limitless in advanced topics you can apply to your completed codebase as you continue to learn.