Spend a couple of weeks getting to fully understand how the code works. Then spend some time playing with your own modifications to it. Work on making it do something new and unique. Then once you are comfortable with it, pick another piece of medium sized "tight" code and do it again.
Pick something of a size that that seems challenging to you personally. Be it a single dll or an entire OOP application. Pick something challenging, but not so big that you cannot get a hold of it in your brain and learn from it in a couple of weeks.
After three or four of these self directed learning exercises you should have a better understanding of how to write "tight" code.
At that point, (with some additional experience under your belt) pick up an advanced programming guide for the language you have been studying and read it cover to cover.