Cal Newport describes the pyramid strategy to evaluate one’s progress.
From the blog:
[quote]
I call this general technique the Pyramid Method. I claim that it’s a powerful approach for anyone looking to transform an interest or natural talent into an expertise that cannot be ignored. Regardless of the pursuit in question, if you want to take it someplace serious, follow Chris’s example. This means:
- Pick a single relevant venue to join at the entry level and work to increase your standing.
- Make sure the venue offers clear metrics on your progress; use these metrics to guide your efforts to get better.
- Forget all the other bullshit advice and mini-strategies people offer for getting ahead in your pursuit. If you can’t master this one venue, then you don’t yet deserve the world’s respect.
- Put your head down, and get it done.
[/quote]
The strategy can work for many skills music, sports and coding. But choosing the proper venue is critical. IMO, apart from the above properties mentioned by Chris, The venue should have some other properties. I would talk about them from a coder’s perspective.
1. Have a low entry barrier: So that you can start early from a entry-level. So, when you only know the syntax and basic constructs of a high level language (C++, Java, C#)
2. A high competition/quality: So, you don’t “win” the venue too soon. So, you are actively engaged when you can solve non-trivial problems in your arena also. This also ensures that good coders will keep coming to your venue rather than taking off someplace else.
3. Can cater to more than 1 skill: I find this important to be a successful programmer you have to do more than code! This can involve making system architecture, understanding existing codebases, soft skills like communication.
One of the venues I know is Topcoder.com as it offers all what Chris has outlined in his article and what I have outlined here in this post.
Now, I just have to go and follow the all important Step 4 from Chris’s post.