24 comments

[ 3.3 ms ] story [ 53.2 ms ] thread
I just played with some challenges. JavaScript, Python, and Java are there. Users are allowed to create new challenges, translate available challenges from one language to another, and write test cases. This is great. There’re instructions for each challenge and resources where one can go to learn programming concepts and come back to code the challenge. Also, there is a discussion area for each challenge. I think this is not for absolute beginners, but those who’re familiar with the syntax of a language will find it interesting. Way to go.
I tried to run a challenge but upon trying to run it, I'm greeted by an obnoxious pop-up that asks me to register or log on. Nope, sorry, won't do that. You could have mentioned that _before_ trying out a challenge...

Please don't do that. Aside from being a major buzzkill, it probably kills conversion, which I'm sure you find a buzzkill ;) Maybe you could let people try out some challenges and then after N runs, ask them to sign up?

> Maybe you could let people try out some challenges and then after N runs, ask them to sign up?

I agree with you.

Hey wjvdhoek, I'm the guy working on this project. I agree mandatory registrations are indeed very annoying (and 95% of the time completely unnecessary). My reasoning behind requiring user registration is for security. Since code is being executed on my server, I want to be extra careful.

That being said, you have an idea I never thought of. I could simply let any user make X number of attempts and then prompt for registration. It's not as annoying that way and still secure. And yes, it's definitely hurting conversion BUT I couldn't think of any other way to set things up. If anyone else has suggestions on this, I'm all ears!

Should users have any reputation before creating new challenges or making translations?
This would make for a great anti-spam mechanism. Kind of like the ultimate captcha. If quality / spam ever (inevitably) becomes an issue, I will absolutely require a minimum REP / XP.
I asked the question because as of now it looks like any registered user can create new challenges and/or translations.
It is kind of soul crushing to work on a problem only to be denied execution. Thankfully, I ran an easy JS challenge that was a one-liner. Had I done a a harder challenge that took 10 or 20 minutes, I would have been rather upset.

I understand why you put the registration further into the process. People have already invested time, so they might as well register so that the time isn't wasted. This is markedly different from how the rest are. They either put registration up front (HackerRank) or you're required to validate your own code (cryptopals). Aside from intentionally infecting my computer with malware or something, I couldn't think of a more negative user experience from a code challenge site.

These types of sites are far from unique. They are basically a dime a dozen. But now my experience is, "Don't make the same mistake I did. It gives you an input field to submit a challenge, but it will not validate your answer until you register. Either register up front, or don't bother."

Edit: This post was intended to be constructive, but I can see how it can be interpreted otherwise. See here[0] for more info. Apologies!

[0]: https://news.ycombinator.com/item?id=14349780

> These types of sites are far from unique. They are basically a dime a dozen.

That's not constructive criticism. You can't always create something that's unique and not a dime a dozen.

It's not meant to be flippant, although I see I should have chosen better wording. It's meant to go right into the next point: I spent time solving a challenge, but the site will not let me validate it without creating an account.

Sometimes the challenges take 30 seconds. Other times, you may spend over 30 minutes working on something more challenging. Who wants to spend time working on a challenge only to be told, "Wait a sec. You need to register before I tell you if you were correct." If I am presented with an input field, I would expect that I am allowed to submit that input. And that's where the dime a dozen comment comes from. If I try to accomplish the task your site has given me but there's an unexpected roadblock imposed by the site itself, why would I stay on that site when I can go elsewhere?

If registration is required, it should say so up front. Allow users to browse challenges. Even allow users to view the full challenge text. However, disable the input field if they must register first. It otherwise implies that I can solve the challenge without an account. You don't want to mislead your potential users.

I supposed I should have said something like, "There are many code challenge sites available. It is imperative to give users a positive experience, because users can easily go elsewhere for something similar." I did not mean to be insulting.

What about putting a small banner / notice right above the code editor that explains the user must register before executing code? I'm honestly not intentionally trying to create an annoying site, it's just when you have users running code you legitimately have to take some security precautions. I'll put some thought into how I can communicate this to the user... My favorite idea so far is to just let the user execute code X number of times and then prompt for registration.
I am sympathetic to your reasoning. I am terrible at design, but I think almost anything would be better than what you have. An obvious banner works well. Allowing a few attempts works well, but in that case, how do you rate limit someone executing code without an account?
Having an account tied to the execution of the code does nothing to help with security. I can still register with a bogus email account and then run code anonymously. This doesn't inconvenience attackers, only legit users.
> This doesn't inconvenience attackers, only legit users.

You just nailed it.

The security-rationale is a fair point, haven't thought of that ;)

Without knowing how you run the code server-side, are there any languages/challenges that are presumably safe? Maybe you could offer the Javascript challenges without the requiring the user to register.

"Since code is being executed on my server, I want to be extra careful." If you mean security I think your concern isn't necessary, if nothing else you will have less people using your site so whatever issues you do have will take longer to surface. If the concern is performance or loading your backend that may be valid but is also a great problem to have! I would try to get as many people to use it as possible OR at least make the first challenge or two available to anonymous users.
Also a really good suggestion. Thank you.
How is this different from codewars, leetcode, topcoder, etc? Genuine question, not trying to be snarky.
Its focus is on teaching and learning, not getting hired at a big company. Hacker Rank / Leet Code / Code Wars are essentially talent scouts. They want to attract programmers who are already really good. Nothing wrong with that, but it's not conducive to learning.
FYI Codewars has nothing to do with talent scouts. It's purpose is exactly the same as yours, except that it has content ranging from beginner to advanced. Did you build your own testing system for this? It seems to be very similar to Codewars.
Looks like it's for those who're coming to grips with the syntax of a language and trying to move to an intermediate level.
Reading through some of the comments here I feel like you just posted a video series of running over cats in your SUV to Reddit.

Personally, I love it, I think its great, has a slick feel and experience to it. The site wasn't as responsive as you might hope but to be fair you are currently on the front page of HN so I am willing to let that slide.

Looks like a ton of hard work went into this and I think it comes across really well!

> Looks like a ton of hard work went into this and I think it comes across really well!

I thought the same. Too much for a lone developer!