How can you determine objectively, over time, that you are getting any better at producing code? For example, I may sit here and feel that "I know <language> now, and I use <technique> now, so I must be better." But this does not account for my own bias, or the fact that I may be getting better at a slower rate than intended, or I may actually suck at <technique> and not realize it. What methods are available for one to objectively rate one's own abilities? What about to objectively compare them to their peer groups?

3 Answers 3


You can take a look at the Programmer Competency Matrix and see where you are on that and where there might be room for improvement.

Getting involved with the local development scene can be beneficial as well, since you'll be in a position to compare yourself against developers from different environments (i.e. not just your co-workers).

To see what your options are for finding fellow local developers, you can start by looking for a user group in your area. Some are focused on a particular languages, some are more general. For example, where I live, there's a .NET user group, a recurring demo camp, a Perl group, etc. Dev House Waterloo is an example of a more general interest group in my area. I found these first by Googling for a .NET user group (I was primarily a .NET developer at the time) and then through talking to people there to find out what else was happening in the area. If all else fails, you can always try getting a group going yourself.

  • 1
    That's a pretty nifty chart there :)
    – GWLlosa
    Jan 13, 2011 at 21:57
  • Beat me to it! :) Jan 13, 2011 at 21:58
  • @Ryan: I know what you mean. ;)
    – Josh K
    Jan 13, 2011 at 21:59
  • How does one locate a "local development scene"? I'm completely unfamiliar with that concept.
    – GWLlosa
    Jan 13, 2011 at 23:09
  • 2
    The meetup website meetup.com helped me find local Python, Ruby and other software development related groups.
    – DarenW
    Jan 14, 2011 at 7:02
  • Get a patch accepted to a major open source project. Your code will be scrutinized and will not be included if it's crap.
  • Review the Programmer Competency Matrix

As I age, I become less satisfied checking off items from lists of skill, technologies, and concepts. These days, what really matters is what I ship. Is my ability to ship improving?:

  • Can I produce more in less time?
  • Is my software becoming more reliable?
  • Is its usability improving?
  • Am I always reaching a little further, doing more than what I thought was possible yesterday?
  • Do my clients trust me and expect more and more from me?
  • Do I make the people working with and around me more productive?
  • Am I shipping bigger, more complex, and more important products?
  • Can I ship using any technology the client requires?

It doesn't matter how many checks you have on your list if you don't ship.

Not the answer you're looking for? Browse other questions tagged or ask your own question.