Lots of things.
I would say read articles about design patterns, look at the examples. Look at the functionality that you're developing from designs' perspective. And try use those designs. Study more about OOP, that would help you think in OOP way. DoFactory may be a good start.
For code reviews, download source of open libraries/projects/tools/etc; skim through the code. See project organization, code organization, naming conventions, etc.
Clearly, this would require a continuous "effort", since you "hobby" programming.
On a side note, in most cases that I have come across... hobby that turns into profession has higher chances of "excelling" in their career; probably because in that case you don't put much of an effort to convince yourself to learn about something, because you just start "being" that.