Coding. Coding. More Coding. You spend a lot of time working on problems. You learn to generalize. You save and reuse code. You go off and try stuff and make mistakes.<p>You read less tutorials, but you actually try to implement more stuff you read about, instead of reading it.<p>You learn from people. Those who know more, those who know different, those who study CS and those who study art, psychology, gerontology, whatever.<p>You go over what you learn. You teach, you tutor, you explain, you blog, so you get a better grasp on what you know, so you think about and recontextualize what you take for granted, so you can nail down ideas.<p>You go back and look at old code you wrote, and fix it. You read code, yours and others, bad code and good code. You submit a pull request to add a feature to something you use.<p>You stop worrying about being the top whatever, and focus on being better then you used to be.
Writing code, thinking about code, reading code.<p>As an addendum to what adrianhoward said, work with people who are better at coding than you are, then work with people who are worse at coding than you are. You will learns loads of things from both.
I see people at work hammering keyboards for 10 hour stretches 6 days a week and feel sad for the current state of the profession. Being a developer is about THINKING. Converting your solution into code is the easy bit (typing I say). Forget the language, concentrate on the solution. BTW architecture is just the crap that you need to do in YOUR environment. Chuck has it right - go FORTH my son.
<a href="http://www.colorforth.com/" rel="nofollow">http://www.colorforth.com/</a>.
Anything else is just domain/environment knowledge.
1) Get some open source projects in a technology you are familiar with and try to fix bugs.
2) A framework is a good example to learn good coding skills. As it gives a very structured, scalable code. So, you can learn few good techniques.
3) Get a person who you think writes good code to review your code.
3) Practice, practice and more practice.<p>Please note- there is no top here. Every developer's technique to write code would be different. So, you cant compare yourself with others. You just need to worry about writing efficient code.
Though i am not among top 1% bit, here are few personnel skills<p>- Choose you favorite language ( your can't have same skill in all languages so choose you base language mine is JAVA )<p>- Work in opensource ( it will give you experience of reading and understanding code of other programmers, also your code will be seen by others )<p>- Follow tutorials for tasks you have not fully grasp<p>- Automation ( do automation testing for your code )<p>hope it might help