Self-improvement is a huge thing for me, both personally and professionally. I like both Justin and Rick’s ideas – Emulate, Get Involved, Read, and Stretch.
My strategies tie these all together and are pretty simple, really: Learn and Teach.
I’ve gained the greatest understanding of programming by sharing my knowledge with other developers. Teaching has forced me to develop a solid understand of whatever subject I’m teaching.
But teaching doesn’t just involve teaching brown bags or presenting at user groups/conferences. Teaching also includes mentoring colleagues, co-workers, and junior developers. By mentoring, you develop a longer term teaching relationship. You grow along with the person you’re mentoring. Their questions often delve into areas of expertise that you may never have investigated which gets you both learning that subject together and makes use of the collective intelligence to improve your mutual understanding.
Never stop learning. Learn new techniques in your current language. Learn how your language’s compiler/VM works. Learn about different types of garbage collection. Learn a new language. Just keep learning. Never stop following your passion for technology. Sometimes these technologies may not be immediately applicable to your current project, but learning new concepts will help you approach your current work differently and more efficiently (check out Array.ForEach() in the .NET Framework)