Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Possible Duplicate:
How Can I Know Whether I Am a Good Programmer?

As many programmers I have worked in several languages. While of course there are some that I am more at ease than other, I do not have a real way to precisely measure my skill in a specific language.

So I thought of a system which allows me to help me with that. I am looking for 5 common criteria in programming languages, to which I will have a value from 1 (junior) to 4 ( Senior) to represent my skill.

I however have no real idea of the criteria I should choose for that.

Does anybody have suggestion ?

Thanks.

share|improve this question

marked as duplicate by Anna Lear Nov 30 '11 at 21:30

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

8  
The answer is 0.42 –  Job Dec 12 '10 at 3:08
1  
@Job No, it's 6x9. –  muntoo Dec 12 '10 at 3:39
2  
Maybe I am ruining somebody else's joke, but is not 42 = 6 x 7, not 6 x 9? –  Job Dec 12 '10 at 15:22
5  
@Job: have you read the hitch hikers guide to the galaxy? –  Matt Ellen Dec 12 '10 at 17:53
2  
@Job: Try base 13. Also, as @Matt Ellen points out, do read HHGTTG, then you may know where your towel is. –  Orbling Dec 12 '10 at 18:57
show 4 more comments

4 Answers

up vote 8 down vote accepted

I can't imagine of a system that will allow to measure someone's skills definitely even for a particular programming language. What may you need it for? Data structures and algorithms are common, and it takes half an hour to find the appropriate data structure implementation in the standard libraries (not always true, of course). So if you know what is a linked-list, you will probably use it correctly.

Moreover, criteria depend on the language, and cannot be common. Some programming languages provide more freedom to do everything you want (to shoot yourself in the foot) and some of them set boundaries you cannot go out from. So criteria vary from language to language.

If I need a developer to work on a web-service I want to implement using Java, I will probably hire someone who has built a complex system using django (Python) than someone how knows Java but have no experience on web-services. So here I measure the knowledge in a particular domain, not a programming language, because for this task I consider the domain knowledge more important than the implementation language.

share|improve this answer
    
+1 for 'knowledge in particular domain'. I totally agree. –  ykombinator Dec 12 '10 at 13:13
    
+1 for the same reason as @ykombinator, the domain is substantially more important than the language in play; unless the language has an exceptionally steep learning curve for even seasoned engineers. –  Orbling Dec 12 '10 at 18:51
    
To be honest I can't imagine this system as well, that's why I came to ask. I do think you make a point though. Thanks. –  lollancf37 Dec 12 '10 at 20:25
add comment

If you can do all Project Euler problems correctly in language X, I would consider you to be an expert in language X.

share|improve this answer
    
I think it tells you more about your problem solving capabilities than your skill in a language. –  lollancf37 Dec 12 '10 at 20:38
    
@lollancf37, that's because you have not tried to do the hard ones. –  user1249 Dec 12 '10 at 21:29
    
I'll look deeper into it then, thanks. –  lollancf37 Dec 14 '10 at 7:30
    
Project Euler's problems are almost all math. Couldn't one be an excellent programmer and not be able to solve some of the problems because of a lack of math knowledge. Also, couldn't a mathematician with little programming skills solve them? –  fender1901 Jun 7 '11 at 3:51
    
@fender1901, in my experience the problems are well-worded and accessible to most. Also the things considered trivial in math may actually turn out to be hard to calculate. I would suggest you have a look at the Ackermann problem (projecteuler.net/index.php?section=problems&id=282) where insight in how computers work with numbers are essential to solving it. –  user1249 Sep 22 '11 at 8:54
add comment

The ability to read and understand any (reasonably well written) code in that language is the most important criterion to measure mastership.

The ability to write code to solve any problem doesn't say much; just consider a C programmer who claims the ability to write C++. Since C is more-or-less a subset of C++, the C programmer can solve any problem by writing an appropriate C program and using the C++-compiler to compile it, so technically it's C++. Likewise, many programer learn just enough of a new language so they can apply the old idioms. You can write FORTRAN in any language.

By the same argument, LOC/hour says nothing. A programmer who writes Perl programs that look like C programs probably generates more LOC/hour than a Perl programmer who writes idiomatic Perl code.

share|improve this answer
    
You are right I think, but I also think that while you can be much more objective in your self assessment. –  lollancf37 Dec 12 '10 at 20:35
add comment

Take a look at the Programmer's competency matrix. It's a good all-around measure of skill, more or less.

share|improve this answer
6  
The person who wrote this "matrix" is mostly trying to brag about himself and declare that everyone else should be just like him. –  chrisaycock Dec 12 '10 at 7:44
    
Seems interesting though. +1 –  nayan Dec 12 '10 at 10:46
2  
@chrisaycock: I totally agree. Much of the matrix suggests that the author has quite a narrow perspective on the subject. Many things are arbitrary, subjective and highly disputable, quite a few criterea are missing and those present are not weighted, which renders the whole thing quite useless. –  back2dos Dec 12 '10 at 17:09
3  
@chrisaycock @back2dos: Personally, I think it is an excellent list that covers most salient points of software engineering. If he himself knows all this stuff and declares that other programmers should know at least as much, then I think he is quite justified. All items are weighted, from level 0-3, there is no attempt to weight one facet of knowledge against another as all may be required, which come to the fore in a particular instance varies by instance. –  Orbling Dec 12 '10 at 18:43
    
@chrisaycock @back2dos - Any rubric for measuring what people can do will be flawed, but this one is pretty reasonable. I've always measured developers against something like this list, not always expecting people to excel in all areas (depends on what you're experience and focus is). –  Bruce Alderson Dec 12 '10 at 19:08
show 1 more comment

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