Good questions!
Well, if it's anything like dancing (and I think it might be), we'll always have a hard time telling when we're good.
Going with that analogy, I'd say you know when it gets easier, when you begin to see forms and patterns, and can use them to tackle new challenges.
Some other thoughts: * When you are solving problems and seeing how to improve your code through testing and refactoring.
* When you can start reading other people's code and understanding the gist of what is going on at a high level without getting bogged down in the details.
* When you start feeling very comfortable with your tools.
* When you feel the satisfaction of solving problems.
* When you help others learn something.
Finally, dance like no one is watching. Enjoy yourself. If it's not bringing you joy, then you are unlikely to progress further. Either way, enjoy the process.