Ask HN: How do I judge the quality of a programmers work?
3 comments
You could try to give them all a well-defined task and see how long it takes to deliver a working solution. Then mix it up, and send them a copy of someone else's code and have each one extend it to do a second well-defined task. Repeat until you get a strong pattern which matches what you want to see in the real world.
If you're lucky, this will show you who's capable of delivering working code, who's capable of turning in work in a reasonable amount of time, who writes maintainable code, and who can deal with maintaining code from other people. You might also rig things to see how they do at documentation, support, or other "meta" stuff, but that requires more rounds and more testing.
Basically, create a fake programming team and throw some stuff at them, and then cull the ones who don't seem to be working out. If you can set it up so you make more money back than this costs you, then you win.
If you're lucky, this will show you who's capable of delivering working code, who's capable of turning in work in a reasonable amount of time, who writes maintainable code, and who can deal with maintaining code from other people. You might also rig things to see how they do at documentation, support, or other "meta" stuff, but that requires more rounds and more testing.
Basically, create a fake programming team and throw some stuff at them, and then cull the ones who don't seem to be working out. If you can set it up so you make more money back than this costs you, then you win.
This is just my opinion, but the word quality is a "generic" term. But if you had to judge, a number of things that may be good to look at, is:
1) Are they commenting their code?
2) Formatting structure of code
3) Are there redundancies in logic, that over complicate a simple idea.
4) Are they using "common" best practices while developing the code?
5) How long is it taking them to create/implement base elements like functions, classes, variables, etc.
These are just some ideas to look at. A lot of programmers are really great at what they do, but lack organization of what they build. Some programmers are great at organization, but over complicate simple ideas. It's variable based on what your "expecting" with the end product.
Do you want, just get it done, and it works code?
Do you want clean, efficient, and best practices code?
1) Are they commenting their code?
2) Formatting structure of code
3) Are there redundancies in logic, that over complicate a simple idea.
4) Are they using "common" best practices while developing the code?
5) How long is it taking them to create/implement base elements like functions, classes, variables, etc.
These are just some ideas to look at. A lot of programmers are really great at what they do, but lack organization of what they build. Some programmers are great at organization, but over complicate simple ideas. It's variable based on what your "expecting" with the end product.
Do you want, just get it done, and it works code?
Do you want clean, efficient, and best practices code?
How is a non-programmer supposed to understand best practices, redundancies in code, or time to implement a complex class?
I've been programming my entire life and I still wouldn't be able to tell you if a Python class follows best practices simply because I don't know enough python.
The problem is that a non-programmer can't quantify what makes a good programmer any more than a non-mathematician can tell who writes the best topology proofs.
I suppose anyone can get a feel for who "gets shit done" and who doesn't, but then you're measuring something much less tangible than "programming".
I've been programming my entire life and I still wouldn't be able to tell you if a Python class follows best practices simply because I don't know enough python.
The problem is that a non-programmer can't quantify what makes a good programmer any more than a non-mathematician can tell who writes the best topology proofs.
I suppose anyone can get a feel for who "gets shit done" and who doesn't, but then you're measuring something much less tangible than "programming".
Quality is a "measure". So regardless you still have to have a basic understanding of what your considering "quality" and what isn't "quality" to you. Otherwise you just shooting in the dark.
Make sure to read my post thoroughly, even I know what the OP is asking is impossible without a basic understanding of what to measure by. I'm just giving them ideas of what to research themselves to help apply some ideas for their "quality" measure.
Also if you can't code a problem without requiring redundancies in your logic, then you might be looking at the problem wrong. This is not absolute, but there are better ways at problem solving in most cases.
edit: grammar
Make sure to read my post thoroughly, even I know what the OP is asking is impossible without a basic understanding of what to measure by. I'm just giving them ideas of what to research themselves to help apply some ideas for their "quality" measure.
Also if you can't code a problem without requiring redundancies in your logic, then you might be looking at the problem wrong. This is not absolute, but there are better ways at problem solving in most cases.
edit: grammar
3) Are there redundancies in logic, that over complicate a simple idea.
4) Are they using "common" best practices while developing the code?
Depending on the framework, the answers to these questions are often the same.
4) Are they using "common" best practices while developing the code?
Depending on the framework, the answers to these questions are often the same.
That is true, but the OP never states what the framework is. So I'm stating ideas of what to look for. Also when I mention "common" best practices, those are the buzz words people like throw around when describing particular points. It's not hard for someone to pick up buzz words, and google their meaning.
Everyone has already mentioned the basics. What I would suggest that check whether he or she can read some existing code and understand it and how quickly then can do it. I just hate it when someone asks me give KT (knowledge transfer) of some project to another team and ask me to take them through code rather than high level design. I mean if you can't read someone else code and get the intent/design out of it how you are supposed to write good code yourself.
PS. I am not a programmer.