Agreed. While I have no intention of using this site, myself, to advertise my abilities at this time, I have frequently thought that CG could possibly over time grow into a location to verify claimed skills of potential hires. The balance between teacher and assessor is a difficult line to tread, but I have always considered CG to have potential for both roles.
I would prefer not to do this, though I would understand if you were to do so. Permit me a couple of short anecdotes to explain why…
I tried functional programming for the first time because of the Clojure achievement in the Roller Coaster puzzle. After spending a good amount of time trying to wrap my head around the concepts and techniques of FP, I decided to watch several training videos about using an FP approach in other languages. I also spent hours researching Haskell and other FP languages. I don’t professionally program in an FP-oriented language, but this learning experience has affected the way that I design and write all of my code. Thanks for giving me the nudge in this direction.
I have used Bash extensively for years, but when attempting to solve CG puzzles in Bash (motivated by the Bash Addict achievement badge) I realized that my Bash knowledge was lacking in the area of solving computational problems. I had just never had a need to use the language in this way before, and now my Bash knowledge is that much richer as a result. It will affect the way that I write Bash in the future.
I’m sorry to criticize this feature, because I know that someone took the time and effort to implement it with the intention of building something useful, however, as it stands, I don’t like it one bit.
Here are my considerations.
I think that seeing the solutions can be helpful to learn a new language only after attempting to solve the problems in that specific language. You can’t assume that if someone solved a puzzle in C, its solution can be easily translated in Bash or Clojure. Fighting with different paradigms and language idiosyncrasies is an important learning step.
Moreover it can be discouraging for honest users having to fight more to reach the same rank as copy-pasters, unless they become copy-pasters themselves. We don’t want to teach that looking at someone else’s code and saying “I would have done the same” it’s equal to actually doing it, do we? Somehow I think that it becomes harder to achieve higher position just by copy-pasting, so it’s more a new user problem.
As stated by others, the language specific achievements incourage people to learn new things. They got me and other players, like @player_one, to learn Clojure and new Bash magic.
For these reasons my suggestions are:
show the solutions only to people who achieved 100% with that language;
/* I don’t know how it currently works with extra achievements, I guess they should be taken into account too */
keep the achievements as they are (and maybe add some for the highest voted solutions?);
give me 1 million dollars in small bills and an helicopter with enough fuel to reach Mexico;
allow people to choose for which puzzles share their code (to avoid leaking optimization solutions).
As a further cosideration, I think that the issue originates from the will to offer a challenging place to prove one’s skill and to teach coding. Nothing wrong with it, I like the idea, as long as one purpose doesn’t impede the other. Trying to add a didactic factor to the puzzles is taking away some of the challenging one and this is why people don’t like the change. I think you can find a balance this time, but maybe it would be better for the future to keep different purpose stuff in different sections (I saw a couple of “teaching puzzles” on the forum and I think they deserve a section on their own).
Third option is a little contradictory.
We’re talking about fairness on coding points attribution, ranking and everything, but if you already solved most problems in a language and you still want languages achievements, you’ll have to compete against others in clash code against with a language that you don’t master, and who can be inapropriated for clash of codes…
I agree with this. Languages achievements push us to discover new languages.
If you master, say, Java, you already have solved the easy puzzles, and medium ones. Now if you want any achievement for, say, Python, you will have to solve difficult puzzles in Python. But you are a beginner, so you won’t.
I personnally really enjoy trying out new languages in order to get achievements. The Thor puzzle for instance, being really just about IF/ELSE and Increment/Decrement, I enjoy porting my solution to different languages and learning that “omg scala doesn’t support ++ notation” or stuff like that.
Also it has been said, but I guess sharing only portions of code would be nice. Like, “I want to show you that neat data structure I came up with to store the inputs of the puzzle” or “That exact pathfinding algorithm”, without the rest of the code that is either not interesting, or we don’t want to share because it’s a special asset we use in AI / Optimization battles
No it is not . I got the Shareware of Doom between my hands when I was 6-7 and those were baaaad.
There is one of the point I suggested which has not be mentioned in other threads. Is it because you disagree or you overseen it? I refer to the “code review request” as a way to progress. My opinion was (and still is) that the easiest way to progress is to have other more routined CiGamers throw a look at he code and provide feedback. It however requires a way to request his for one’s code (forum thread, button embedded in the code sharing section or other). Any comment on that?
The cyberdemon wasn’t in the shareware version so far I remember, only in the full game
Regarding Code Reviews, one idea which is “easy” to implement from the website side abut somewhat hard to maintain is to get a thread dedicated to code reviews request.
Every solution has an address. For example: https://www.codingame.com/solutions/43/1289403
The discussion can be done in the comment section of the code. The whole structure is here theoriticaly. The only worry I have with this is that, depending of he ammount of request, the forum thread can end up being a mess.
In the other hand, having a request thread per language will create another kind of mess. The ideal state would be to have it integrated in the solution sharing plugin. One could flag his solution as “asking for review” and “review completed” and every user could see the current active review requests for the puzzles and languages he is granted access. But this requires much more work from the side of CiG.
Solutions were only available per puzzle once you’ve finished said puzzle, so very hard puzzle stayed very hard until you’ve complete it, so it wasn’t an issue, and it’s not as of today either.
The only issue would be those who copy paste code from other language to gain language achievement, but even if you did that for all 20+ languages 15 times (so yeah, more than 300 puzzles) you only get around 75*20+=1500+ points. A first place in ONE multiplayer game can grant you 2500 points. See what @Magus is talking about?
EDIT: by the way thanks a lot G_Rom and all the team