I started out hacking by studying how hex editing works and soon became familiar with hacking all kinds of data.
Once I understood more about pointers, I realized every data I'm editing is pointed to from somewhere and by searching for those pointers, I noticed "something different" there. I knew this was some general code making the game do what it does and I could edit a bit of it (mostly asm instruction parameters) with a hex editor.
Later on, a person called Sawakita linked me a web page explaining the basics behind assembly of GB CPU and studying that, I figured how to write simple routines and after gaining more experience, figured out how to debug code and remake some of the original in-game routines and not just write new ones from scratch.
(Before all this, I had literally no programming experience although I have now. It all came naturally but it sure did take some time to learn as well.)