Ask HN: What coding challenge sites should I try next?

138 points by lakechfoma ↗ HN
I'm learning PHP for a new position and tried using codewars and codefights. I'm not impressed by the UX with either of them, they're over gamified. The quality of Kata on codewars is not good (at least the easy stuff) and both are broken in random trivial places.

Can you offer suggestions on similar platforms that are less gamified, higher quality challenges, and more reliable?

66 comments

[ 2.2 ms ] story [ 138 ms ] thread
Maybe just skip the game sites.

Go to github, find a project that you find interesting and relevant to your position.

Take a look at the open bugs and try to fix some. Even if you don't feel comfortable sending a pull request you can learn a lot by going through the whole process on a real project.

Alternatively, take a look at the recent commits and what they fix...

https://github.com/topics/php

Good call on at least reviewing fixes on github. I was going for the game sites because I just want to get the trivial gotchas of the language out of the way, get a feel for what error messages look like on some basic stuff.
Along those lines, find projects that have "up for grabs"[1]. I was trying to learn Go for personal enrichment and learned tons about real-world Go by opening a PR.

[1]: http://up-for-grabs.net/#/tags/PHP

My recent interviewing experience, while anecdotal, would suggest that you'd actually be better off with the coding challenge sites, assuming that succeeding at interviewing is your goal.

I think this is unfortunate, irrational, and that contributing to Github projects would actually build your practical skills while adding some value to the universe.

But having spent more time working on coding challenges, algorithms and puzzles would have been more beneficial to my most recent several interviews.

It's a trade-off. One thing that's definitely going to get you more and better interviews is a section on your resume that lists major open-source projects you've contributed to. But yes, once you hit the interview you still might hit the old-style puzzle questions depending on the company.
What top companies exist that don't ask candidates to solve coding challenges?
You don't need to make a trade off. You can do both contribute meaningfully to an open source project AND practice on Codewars.
(comment deleted)
(comment deleted)
Project Euler (projecteuler.net) has great algorithmic and mathematical challenges. I like to go through their problems when learning new languages.
Agree with your good suggestion, and extend with rosalind.info for kinda the same experience but for bioinformatics instead of math.

Now what I'd be VERY interested in is an implementation of a list of "Like Project Euler, but for X" where X is all manner of things. WRT various values of X, I know there are periodic security challenges but nothing long term/permanently ongoing, I'd greatly enjoy being proven wrong. I'd be particularly personally and professionally interested in "Project Euler for HFT". How about "Project Euler for VLSI design"?

Yeah, yeah, If I want it, I should do it, and its true I probably could, other than the lack of infinite spare time.

I love Project Euler. Each time I pick up a new language I actually go to PE and solve some problems (often times ones that I have already solved) just to get a better feel for the syntax of the new language I am learning.

Afterwards I'd just go make some standard 'mock projects' that require a bit more of software architecture. Such as building Game of Life, a twitter clone, a HN clone,..

Depending a bit on if I actually liked the language :-)

codewars Kata get hard soon enough. maybe its because youre doing it in PHP but ive had no complaints at all on python and javascript.

agree with cag_ii that you should just work on projects given that you're keen on PHP

It wasn't that they were too easy, too easy is fine. I'm doing this to understand where the good docs are, what error messages read like, and what the common mistakes and gotchas of the language will be. It's just like no one proofread some of these, repetitive concepts, one Kata had a blatantly wrong test condition, etc.

Reviewing commits on github will be useful in understanding what contributing to mature projects looks like though.

Codewars isn't being maintained very well. Some of the languages aren't current - their version of Elixir is over a year old, and they have no plans to upgrade it.
You don't really need platforms to help you learn how to code. Find some good video courses and create practical projects by following the instructions, that's the best way to learn, especially if you're into webdev.

I suggest trying Udemy, TutsPlus, or CodeSchool. Unfortunately, I can't recommend anything PHP-specific. Though if you're just getting started and aren't stuck with PHP, I recommend going with Django or Node instead. Udemy has excellent courses on Node(https://www.udemy.com/the-complete-nodejs-developer-course-2...), so if you're looking for the best place to learn webdev, I highly recommend going there.

For sure, it's just the little language gotchas that I'm trying to understand before really leaping in to anything. For example I didn't realize an array in PHP is actually a key/val set until it bit me on some easy challenges.

Thanks for the recommendations though. I'm not necessarily stuck with PHP and would prefer to move towards Python if possible.

A couple of years ago, I had some slack in my schedule, and decided to combine learning Python with starting a project in it. It took me a couple weeks to feel really comfortable, but it also got me to a kind of "MVP" implementation, and I was able to take the next month or so after that to fill in the features.

Starting out, I spent a few days in standard tutorials, then just started writing. As I implemented features, I'd research the standard Python idioms for doing various things. It might not work for every program, or for every learning style, but that script has been part of our build infrastructure for 2 years at this point, and maintenance for the last year and a half has mostly been limited to feature additions as our needs change.

Advent of code just started, so you might try that: http://adventofcode.com/
I second this, gets more popular every year. The puzzles are well thought out. They get progressively more involved each day, it’s definite worth a try
Realistically, the best way to learn a language is to make a small project that does something useful. But if you're still wanting to do challenges rather than a project, you're just in time to participate in Advent of Code 2017 [0]. The only 'gamified' part is the leaderboard which is based on how long it takes you to generate a correct answer since the challenge became available. Another challenge that, while not generally suited for a PHP programmer but still possible, is the Synacor Challenge [1] , which involves creating a virtual machine and running a provided binary in that virtual machine to find codes to submit.

[0] https://adventofcode.com/ [1] https://challenge.synacor.com/

Build your own toy version of the following:

- compiler

- neural network

- graphics engine

- web server

- physics LP solver

- JIT compiler

- garbage collector

- memory controller

- operating system

OP said he's learning PHP.
Uncharted territories are quite a challenge. But probably there are projects out there that are doing those already.
This site has been mentioned here a few times, good if you want a challenge in your language or a variety of languages.

Https://codegolf.io

I am surprised no body has mentioned Exercism yet. Go to exercism.io and there are around 60 problems for PHP that you can start working on it. The good part is, it has tests built into it. You can gradually work on a solution by progressive approach and thus passing each test successively.
I like Programming Praxis:

https://programmingpraxis.com/

There's a pretty extensive collection of problems there now, and they span a variety of topics, from basic CS stuff (e.g., implement a stack or a binary tree), to cryptography, number theory, and trivia (e.g., write a quine, calculate the date of Easter, or solve a Sudoku puzzle). Note that the chronological list of exercises isn't up to date.

I'm pretty surprised that LeetCode hasn't been mentioned. There are a lot of low quality questions on it but if you sort by "Top 100", you'll find some pretty interesting problems.
I personally love https://www.codingame.com/, but it's geared more towards university students. The challenges get pretty hard, and they all pretty much gravitate around game AI if that's your thing.

The cool thing is that some challenges are multiplayer, in the sense where you need to develop an AI for a given game, and then send your AI on a ladder to compete against other coders' AI.

Codility is really well written. I'm not sure if they have PHP but they seem to have the major languages.

They're one of the few which tests and teaches your code's performance. They're also very popular for hiring tests.

Hi! I'm teaching a coding bootcamp and one of my students built http://jsstation.com

If you could share with us what you could like to see, we can make it happen!

I'm shocked Codility isn't on here yet. https://codility.com/programmers/lessons/1-iterations/

They're really strong on language-agnostic testing with emphasis on CS concepts. That's great and typical, but they have the study material linked directly to each lesson. I've had great interview experiences through their platform.

(shameless plug warning) I liked it enough that when I went through Flatiron School, I made a Ruby gem to see their lessons in the command line. https://rubygems.org/gems/rubedility