It's definitely not an easy process. It took me some time to learn the different things I could do, and I still don't feel like I've even scraped the surface. What really helped me was taking extensions that I was really familiar with and viewing their source code.