17

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.

lollancf37
  • 281
  • 1
  • 3
  • 9

4 Answers4

15

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

Bruce Alderson
  • 974
  • 5
  • 9
  • 7
    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 07: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
  • It is quite interesting thanks. I also noticed that this represent in a way what Duros is explaining. – lollancf37 Dec 12 '10 at 20:28
9

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.

duros
  • 2,464
  • 1
  • 21
  • 25
  • +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
  • As a software engineer/architect who doesn't approach language proficiency or coding in a typical fashion due to learning disabilities, I rely HEAVILY on tooling for syntax and linting. Looking at experience and an existing codebase is a much better measure of someone's capabilities than a stupid whiteboard review or one-off coding quiz. – jrypkahauer May 06 '21 at 21:34
2

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.

user281377
  • 28,352
  • 5
  • 75
  • 130
1

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

  • 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. –  Dec 12 '10 at 21:29
  • 4
    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 07 '11 at 03: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 (http://projecteuler.net/index.php?section=problems&id=282) where insight in how computers work with numbers are essential to solving it. –  Sep 22 '11 at 08:54