30

This goes back to a conversation I've had with my girlfriend. I tried to tell her that I simply don't feel adequate enough in my programming language (C++) to call myself good. She then asked me, "Well, when do you consider yourself good enough?"

That's an interesting question. I didn't know what to tell her. So I'm asking you.

For any programming language, framework or the like, when do you reach a point were you sit back, look at what you've done and say, "Hey, I'm actually pretty good at this."? How do you define "good" so that you can tell others, honestly, "Yeah, I'm good at X".

Additionally, do you reach these conclusions by comparing what others can do?

Additional Info

I have read the canonical paper on how it takes ten-thousand hours before you are an expert on the field. (Props to anybody that knows what this paper is called again)

I have also read various articles from Coding Horror about interviewing people. Some people, it was said, "Cannot function outside of a framework." So they may be "good" for that framework, but not otherwise in the language. Is this true?

yannis
  • 39,647
IAE
  • 1,458
  • 1
  • 15
  • 28

18 Answers18

41

You can't call yourself good at X. Only other people can.

P Shved
  • 7,477
  • 36
  • 51
38

There's a few good answers to this already, so I'll just contribute this:

alt text

Fishtoaster
  • 25,879
  • 15
  • 113
  • 154
10

One is good at something only when they can confidently and correctly say they can do it.

If you want to say you're good at C++, for example, you ought to be able to say, with confidence and justification, that given a general problem using C++, you can solve it.

This provides a distinction from being cocky, which would be to confidently say you can do something without sufficient justification; and experienced, which would be to say you can do something because you have done it in the past.

6

On a related note, while I think the Software Craftsmanship movement is an excellent idea to help standards improve in our discipline, I've seen a lot of people describe themselves as software craftsmen, which seems a little arrogant to me in most cases.

It's up to your peers to decide whether or not you are good at something (or a craftsman); I'm sure Einstein and Feynman didn't wander round early in their careers saying "look at me, I'm a genius!" Similarly, it's up to your peers to decide whether you are good or not.

Stackoverflow is a useful tool to decide whether you are competent. Pick some questions in your area of supposed expertise. Answer them (or if they've already been answered, answer them in your head without peeking at the posted answers). Did you think of the best answer? Did you miss anything? Were you just plain wrong?

Paddyslacker
  • 11,130
  • 5
  • 56
  • 65
3

Since there is no standardized programming test that you can take that will allow everyone to agree that you are a good programmer, it's up to you to determine whether you call your self that or not.

I find that it has to do with your confidence level. If you FEEL you are good at something then you should be able to say it. At somepoint you'll complete a project that pushed you and that feeling will change from 'not yet' to 'I am'.

Walter
  • 16,136
  • 8
  • 59
  • 95
2

I know this is a pretty hard question. I did two subjects with where I mainly programmed in C++ and got high distinctions in both. I wouldn't consider myself good at C++. In fact, if I was applying for a job, I would leave it off my resume and just write C instead. The whole language just isn't my thing.

Casebash
  • 7,672
  • 5
  • 42
  • 62
2

I think you can call yourself good at something when you develop the required knowledge to be able to look at yourself as if from another person's perspective, and then determine if you are good. In other words, you should have strong "meta" skills.

For example, I'm a hobbyist writer, and when looking at my own writing I can tell:

  • what aspects of it are good and why
  • what aspects of it are bad and why
  • what do I need to do to improve the bad ones, and why
  • which bad aspects are specific to the written piece, and which are a symptom of my abilities
  • what are the elements that other people may criticize, and why
  • which criticisms are not relevant to my specific piece, even if others may voice them, and why

etc. etc. Because of this I feel that I'm qualified to decide if I'm good at writing or not. The same applies to X.

EpsilonVector
  • 10,683
  • 10
  • 58
  • 103
1

Since good is very subjective, I would say you are good exactly when you are confident that you are great.

Brian R. Bondy
  • 7,027
  • 33
  • 53
1

You know you're good at it when you like what you're doing (and it's not just a trivial task).

You know you're bad (yet) when you keep swearing randomly while you code.

1

You can claim you are "good" at something once you have been doing it long enough that you've long since forgotten how to do anything else.

1

The only time you can be sure if you're good at something is when you're sure you're bad at it.

John Cleese spoke about this: At 9:00 http://www.youtube.com/watch?v=zGt3-fxOvug

1

Everytime I thought I was good at programming in a particular language, six months later I was convinced that at that time I sucked at it, and now i was good at it. So I guess it is a relative term. Maybe it would be better to call yourself "good enough to do Y" where Y is a particular project in that language.

RationalGeek
  • 10,077
1

When you can look at the source code of something like boost (in c++. or boost equivalent in another language) and NOT BE afraid of it.

1

When you start imagining how a software you are looking was written in that language.

kowsheek
  • 623
0

I often don't say that I'm good at X, but rather that I'm a quick learner and haven potential to be good at X.

Moshe
  • 5,042
  • 2
  • 31
  • 49
0

I'm going to take part of this question to be asking 'what are some criteria to evaluate my competence at a programming language'

I've found this matrix to be pretty useful in that regard. Most of the items are actually more about being a competent programmer in general, but once you get down the the Programming, Experience, or Knowledge headings you'll see some that depend on language used.

Of course, as with any somewhat-arbitrary divisions into categories it isn't perfect. But I think it is pretty useful nonetheless. It can give you at least some idea of where you are and where you should go.

0

Not sure about "good", but I say I "know" a language when it's not my knowledge of the language, but rather my understanding of the problem (or problem domain), that prevents me from implementing a piece of software to solve that problem.

mipadi
  • 7,533
0

I think the article you were looking for was Teach Yourself Programming in 10 years by Peter Norvig refers to requiring about 10,000 hours to become good at something. In addition I've seen it pop up in other places like "The Element" by Ken Robinson and on a lifehacker blog talking about reducing the number of hobbies you have.