I can’t say it enough: If you are working on Magento programming, you have a gold mine right in front of your face. The best way to create new functionality for Magento is to create a module. But that begs the questions: How do I build a module? What’s the best way to setup my file/folder structure in my module? How do I create a table and models for my data?
When you build a module, it typically goes in app/code/local/YourName/YourModule/. Magento’s modules live in app/code/core/Mage/ModuleName/. Your modules should basically follow the same exact format. So, as of Magento 18.104.22.168, you have 57 different modules to look at as examples. For most things that you want to be able to do, there is probably a great example somewhere in the core modules for you to learn from and re-factor for your own needs.
If you are going to build modules, then learn how Magento does it and build them properly! I am tired of seeing modules that require a file in itself to be writable (because they didn’t want to take the time to figure out how to set/get configuration from the database), or “modules” that are nothing more than files to be put in the app/code/local/Mage/ directory to directly override core files, or modules that have such jacked up file/folder structure that you can’t even tell what’s going on.
Honestly, there is no better method that I have learned Magento development from than looking through the core modules. You will not regret spending time doing that if you wish to be a better Magento developer.