1) Coding, Coding and Coding
Why I have coding at top of this list? because it's difficult and same
time it's central piece of programming. By doing coding, you also
realize your mistakes in
designing,
error handling,
threading and
then go back to those respective skill to improve. You just can not
work in designing only, coding produce output, which is important to
learn and act as success. By the way, do not stop just after solving the
problem, it's always better to throw away your first solution, that is
just a prototype, your next solution should address issues, missing
requirements which you have found building prototype.