1

After having watched this video I have to ask how a programmer can go about measuring themselves against other, better programmers much as a chess player would.

How would you decide who is a role model to start with? I mean James Gosling is known by every Java programmer but he invented the language and there is almost certainly an expert out there who could show him a few tricks.

Now say you have you found that role model. This could be, say, StackOverflow's own superstar Jon Skeet. It's possible to read his answers on StackExchange, visit his blog and read his books but what about actual programming skill? How could you go about fixing challenges and determining where you are in the programming skill spectrum?

1
  • 1
    "but what about actual programming skill?": being a good developer does not mean having just the best possible programming skills. It's also about communication, and too often, communication is ways more important. Jon Skeet explains difficult things in a way that it becomes easy to understand. He writes books and maintain blogs. That's why he's successful. Aug 27, 2011 at 19:19

5 Answers 5

7

The more pertinent question is why?:

Stop measuring yourself to others. Go solve problems, everything else just becomes a side effect :)

3
  • 2
    +1, agreed. Compare yourself to yourself, not to other people. Aug 27, 2011 at 14:49
  • 1
    Couldn't agree more. Programming is not meant to be competitive. Its for personal satisfaction as a hobby and in the workplace its a means of putting food on the table.
    – user29981
    Aug 27, 2011 at 17:29
  • Why? The answer is simple. I'm not content with my current level (because I know I do even better...) and I want to avoid recruiters downplaying my skills. And as Desolate Planet points out, it's possible to compete with oneself :)
    – James P.
    Aug 27, 2011 at 18:44
2

I watched that video, and I think you may be taking the wrong lesson from it. Comparing yourself against role models is just one way of getting instant feedback on your performance, and a pretty subjective one, at that. What you need to decide is, "what aspect of my performance would I like to work on?", then "how can I measure my success in that area?", then "how can I change my technique to improve my results?"

For example, though I didn't consciously put it into a framework like this, years ago I started looking to see how often I needed to change code that I had thought complete, with the aim of reducing that time. I observed that I spent a disproportionate amount of time maintaining code that shared state with other threads, so I started trying to reduce how much state was shared with other threads, and my results improved. This fits into the model I described, and fits into the model I think Foer described in that video, but did not require a role model or mentor.

2
  • You're right. I think I misinterpreted what is being said in the video. So in short it would be up to each individual to set their metrics and come up with ways to improve efficiency and/or problem solving.
    – James P.
    Aug 27, 2011 at 18:40
  • 1
    @James: other people ought to be able to help in finding areas that need improvement (in particular), or in coming up with good metrics, or in suggesting ways to improve your performance. These aren't things for a role model to do, but rather require someone you can interact with frequently, and whose advice you would respect. (In the story I related, no one told me "why don't you reduce the amount of state you're sharing between threads", so I had to figure it out on my own.) This is different than passive observation of role models. Thanks for the comment, it's helped me clarify my thinking. Aug 28, 2011 at 11:18
2

James, before picking a role model (for any field), you need to look at what you enjoy. If it's Java, then what aspect of Java is it that interests you? Mobile computing, distributed computing etc? Sit down and pencil what you enjoy as a developer and where you'd like to be in 10 years time as a ramification of what your doing. At this point, start looking at people out there that are doing it already and doing it well.

My role models have changed through time, but I've always gravitated towards individuals who challenge conventional thinking, they don't accept things as they are and constantly look for improvement (Richard Stallman is one example imho), not only for their own gain, but for their colleagues too. Admittedly, I get tired of people who utter "Spolksy says..." like it's gospel. Joel Spolsky has done some really good things in his career, but you should not blindly accept anything that's uttered from him or from anyone else for that matter. Nothing is gospel, use the information as part of your decision making as opposed to your religion.

As well as positive role models, you should have anti-role models; people you don't want to emulate. In my case, I've listened to developers in conference calls talking to customers about JPanels, device drivers, OEL etc and the usual reply is "Can I get that in English please?". I'd say that's not an exemplary demonstration of how to talk to customers on the phone when pitching for work. If nothing else, it shows you live in a rather restricted world.

1

If you're not attempting to learn you're a worse programmer than if you were. But, I don't understand why you need a specific comparative measure. You won't get a better job or a bigger pay rise by saying "I'm better than programmer A" you'll get one by being the best you personally can be.

5
  • I'll answer that by another question. How do you know that you are a better programmer now than you were last month?
    – James P.
    Aug 27, 2011 at 9:40
  • 1
    :-). In some languages I'm not; I haven't learnt a single thing in SQL. But last month I'd previously only written one python program; this month I have a python library. It works, well, and running complicated web, ssh / sftp and SQL based processes automatically. I'm a better python programmer than I was last month.
    – Ben
    Aug 27, 2011 at 9:45
  • @James: like Ben said, just remember what you have learned in the last month. If you haven't learned anything, you should think about the reason and change it! Aug 27, 2011 at 10:04
  • To know if you've improved, read your own code from some time ago, for example a year earlier. You would probably find things that you would do differently (and hopefully better) now. You could also do specific exercises (code katas), to see if you write them faster, more elegantly, etc.
    – Lstor
    Aug 27, 2011 at 10:24
  • @James Poulson, he knows he is better as he now has more experience maintaining his own code.
    – user1249
    Aug 27, 2011 at 11:01
1

IMO, role model concept is good only in sports. Having role model in programming is something new I have heard lately. Though, you need to learn appreciating good code-work. This art gives you the ability to understand better programming, along with lending traits for optimal coding.

Because, you seldom come across legendary programmers, it's hard to imitate them. Apparently, you come across their work more often than not, so use that work to enhance your gravity and thinking.

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