Teaching yourself new things is not an easy task. It's even harder when you do not have anything to learn from, but you are just guessing. I have a general idea of what I want to do, but I don't have any reliable materials to work from. To get to this imagined point, I've been pretty much just guessing as to how to get there. For example, some of the points I'm trying to reach include, making code easier to access and hiding unnecessary materials from people that don't need to be there.
It seems like a pretty simple idea. If it is, I'm sure everyone that reads this post will go and do this in their code. That's possible. This is a public blog for anyone to read and try out. All you have to do is think of an area of your code, then make it more easy to work with for someone that may or may not have your whole code base memorized. Then you find another part of your code and bury that in more code. This will create a separation between what you want changed easily and what may not change ever, except for possible bug fixes and that sort of thing.
The execution of the idea is a little more complex. I think that if you were staring at my code right now you might have a general idea of what I'm trying to do. Maybe you'd learn the whole thing right away and go implement this with your own ideas. The difficult part for me has been not having an example to work from. I have all the basic concepts that everyone else learns, but you have to be able to put them together in a way that is going to be reliable and ready for public consumption.