For me programming is more than a job. I believe you should have passion for coding. Sometimes tools and languages don't matter as much as the fact that you are doing it with love. You must enjoy your day to day.
Programming skill levels:
It's difficult to say where is the border between different levels and it will differ per language.
BasicCan work with basic understanding of the code. Can do cosmetic modification on working programs under tutor. Fully dependent on other people.Read more
AdvancedAsking questions and using external referrences. Having good understanding of what the code is doing. Still needs help and validation.Read more
ExpertCan program without external help. Ask good questions onStack Overflow and do research before to ask.Read more
MasterKnows the details for the framework and the language. Able to solve problems alone. He can validate code of the other people.Read more
Grand MasterCan create a language or a tool used by many others. Designing complex systems which work flawlessly.Read more
You can start by improving your skills in several areas: