Suggestion: Scoring across multiple criteria
tl;dr = Score for maintenance and learning, not just the tightest code
I enjoy CheckiO. I love the challenge, I love coming up with a successfully solution and I enjoy viewing and learning from other people's solution.
However, there are two things I see wrong with the scoring mechanism:
- Not enough solutions receive a score (thumbs up/down)
- Scoring seems to credit "tight code" to the detriment of code that can teach other people
Not enough solutions receive a score
I like to look at solutions that receive a high score, since they are more likely to be "good" and teach me something. However, only solutions near the top of the list (or on the first page) tend to get scores and comments, and those ones tend to come from hard-core coding junkies rather than "real people".
So, I'd like to suggest that, when somebody publishes a solution, they are presented with a random solution from somebody else and they are asked to score it. Give some points to people who provide scores -- in fact, you might do that already, but I've never tried it so I don't know. Why have I never scored somebody? Because how would I know what is a "good" solution? Which leads me to...
Scoring on one criteria
When I look at solutions that have received a lot of "thumbs up", they all seem to be 3-line solutions that use lots of lambdas and have no comments. The challenge of reverse engineering such solutions is harder than writing a solution in the first place!
Also, I've worked in many IT environments where "clever coding" can be detrimental to the company. It is more important to have code that can be easily understood and maintained by other developers than to use esoteric functions that might only impress language nerds.
Therefore, I'd like to suggest introducing multiple criteria for scoring. Just like eBay seeks feedback on multiple criteria (accuracy of description, speed of posting, answering questions), it would be great to score solutions on multiple criteria such as:
- Elegance (good use of Python-specific capabilities)
- Maintainability (ease of understanding, good comments to explain how it works)
- "I learned something"
Perhaps allow a single thumbs-up for each category, giving a total score of up to 3.
And, if you are going to keep the "thumbs down" facility, then it could happen that something that scores well on Elegance could actually lose points due to Maintainability. (Personally, I think Thumbs Up are enough, without the need for negative voting.)
Anyway, thanks for your site. I've learned a lot of Python from playing along!