Code review. Even if you don't have someone to review it, you can pretend to explain it to someone else, a line at a time.
Error logging. When you make a mistake, and find it, document it, with as much of the reason why you made the mistake as you understand. Keep a diary of these for a few months, and you'll be surprised by how much you learn, as well as learning which mistakes you're most prone to.
Comments
Code review. Even if you don't have someone to review it, you can pretend to explain it to someone else, a line at a time.
Error logging. When you make a mistake, and find it, document it, with as much of the reason why you made the mistake as you understand. Keep a diary of these for a few months, and you'll be surprised by how much you learn, as well as learning which mistakes you're most prone to.