Excellence Is a Habit: How to Become a Good Programmer
Requirement drives technology capabilities.
Solve algorithm problems.
Do some great open-source projects (making wheels or writing common systems). Or contribute to open-source projects.
Reading technical books and docs.
Creating some small toy projects.
Solving other code problems. Answer questions on StackOverflow.
Answer interview questions by yourself.
Browse technical websites and forums.
Reading classic fundamental CS books, documentation, and specification.
Reading source code.