Unlike all of the answers here, I am neither a professional programmer nor an efficient one as well (I work for a bank and I just started learning web dev/programming a few weeks ago - I hope I'm still welcome! :] ). I'd like to believe, however, that I have some developer skills and am keen on improving those.
My humble developer skills include HTML, CSS, and some JavaScript. I learned most of these through books and an online course on Coursera to give me some sort of "dialogue level" explanation of things. I train myself by:
Doing most, if not all, of the exercises in the books I read and the videos I watch before proceeding to the next chapter.
Planning, designing, coding, and sometimes improving a website once a week and applying things I learned throughout the week and those in the past in these weekly websites.
And more recently, reading web development stuff here on Hashnode.
I love the feeling when I write something and discover the next week that there are easier ways of doing things. Just last week I built a portfolio that had each of my skills and my proficiency level of those (most were 1 out of 5 stars) on cards spread out over my page all in HTML -it wasn't that long but- it was looooong. Then I discovered the Angular's repeat, controller, app systems and found that I could do this in a much cleaner more readable way.
The feeling is almost like the first time you played pokemon and discovering new things and places for the first time.
Also, I still can't get my head over Github. I understand how it works I.. I I just don't know, I can't explain it. I try to place my projects on there but I just mess everything up. Someday.
Motley Developer