Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What metrics would be usable to determine expertise level in a particular programming language

Tags:

metrics

I am interesting in the raw (or composite) metrics used to get a handle on how well a person can program in a particular language.

Scenario: George knows a few programming languages and wants to learn "foobar", but He would like to know when he has a reasonable amount of experience in "foobar".

I am really interesting in something broader than just the LOC (lines of code) metric.

My hope for this question is to understand how engineers quantify the programming language experiences of others and if this can be mechanically measured.

Thanks in Advance!

like image 803
John Burley Avatar asked Feb 12 '09 01:02

John Burley


People also ask

What is considered proficient in a programming language?

In summary: To demonstrate Basic Coding Proficiency, a student must prove their skill in at least three different concepts. For each concept, the student must complete three or more puzzles of difficulty level 3 without hints and with the optimal number of blocks.

What are code metrics?

Code metrics is a set of software measures that provide developers better insight into the code they are developing.

What is the best programming language for performance?

The most used programming language for professional game development is C++, which marries good productivity with performance. It has also the most experienced developers. Some software may be written in C, but most developers prefer using C++.


3 Answers

In reply to the previous two posters, I'd guess that there is a way to get a handle on how well a person can program in a particular language: you can test how well someone knows English, or Maths, or Music, or Medicine, or Fine Art, so what's so special about a programming language?

In reply to the OP, I guess the tests must assess:

  • How well you can program
  • How well you can use the programming language

Therefore the metrics might be:

  1. What's the goodness of the person's programming (and there are various dimensions of goodness such as bug-free, maintainable, quick/cheap to write, runs quickly, meets user requirements, etc.)?

  2. Does the person use appropriate/idiomatic features of the programming language in question in order to do that good programming?

It would be difficult to make the test 'mechanical', though: most exams that I know of are graded by a human examiner. In the case of programming, part of the test could be graded mechanically (i.e. "does it run?") but part of it ("is it understandable and idiomatic?") is intended to benefit, and is better judged by, other human programmers.

like image 171
ChrisW Avatar answered Nov 15 '22 10:11

ChrisW


The best indicator of your expertise in a particular language, in my opinion, is how productive you are in it.

Productivity is not just how fast you can work but, importantly, how few bugs you create and how little refactoring/rework is required later on.

For example, if you took two languages you have similar level of experience with, and were (in parallel universes) to build the same system with both, I would say the language you build the system with faster and with fewer defects/design flaws, is the language you have more expertise in.

Sorry it's not a "hard" metric for you, it's a more practical approach.

like image 45
Ash Avatar answered Nov 15 '22 09:11

Ash


I don't believe that this can be "mechanically measured". I've thought about this a lot though.

like image 41
12345 Avatar answered Nov 15 '22 11:11

12345