
Ask HN: What coding challenge sites should I try next? - lakechfoma
I&#x27;m learning PHP for a new position and tried using codewars and codefights. I&#x27;m not impressed by the UX with either of them, they&#x27;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.<p>Can you offer suggestions on similar platforms that are less gamified, higher quality challenges, and more reliable?
======
cag_ii
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](https://github.com/topics/php)

~~~
arwhatever
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.

~~~
DavidWoof
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.

~~~
balls187
You don't need to make a trade off. You _can_ do both contribute meaningfully
to an open source project AND practice on Codewars.

------
SlyShy
Project Euler (projecteuler.net) has great algorithmic and mathematical
challenges. I like to go through their problems when learning new languages.

~~~
VLM
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.

------
ferdbold
I personally love [https://www.codingame.com/](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.

------
plg
[https://adventofcode.com](https://adventofcode.com)

------
MitjaBezensek
Advent of code just started, so you might try that:
[http://adventofcode.com/](http://adventofcode.com/)

~~~
w4tson
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

------
subrat_rout
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.

------
marsrover
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.

------
rayalez
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...](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.

~~~
lakechfoma
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.

~~~
khedoros1
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.

------
antognini
I like Programming Praxis:

[https://programmingpraxis.com/](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.

------
calebtroyer
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/](https://adventofcode.com/) [1]
[https://challenge.synacor.com/](https://challenge.synacor.com/)

------
bhollan
I'm shocked Codility isn't on here yet.
[https://codility.com/programmers/lessons/1-iterations/](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](https://rubygems.org/gems/rubedility)

------
MithrilTuxedo
[http://www.codeabbey.com/](http://www.codeabbey.com/) is more CpSc oriented
but very similar to [https://projecteuler.net/](https://projecteuler.net/).

[https://uva.onlinejudge.org/](https://uva.onlinejudge.org/) has too many
problems to sum up easily, but they have online solution checking.
[http://acm.timus.ru/](http://acm.timus.ru/) and
[http://www.spoj.com/](http://www.spoj.com/) are similarly massive.

------
johnsonjo
If you don’t mind competitive programming sites then you can try codeforces
[1] which is probably one of the hardest sites to compete in. You could also
try codechef [2] which has long challenges so you can compete over the span of
a week rather than over two hours like on codeforces.

[1] [http://codeforces.com](http://codeforces.com)

[2] [https://www.codechef.com](https://www.codechef.com)

------
0x54MUR41
When I was taking algorithm courses in my university, my lecturer used SPOJ
[0] and Uva online judge [1] as part of coding exercises. For example, today,
I learn about greedy algorithm, my lecturer find a problem on those website
about greedy algorithm problems. Someone already mentioned CodeForces. It
likes SPOJ and Uva. But, CodeForces usually has a coding competition
regularly.

The websites above will affect you on how to solve a problem quickly because
it's timed. It helps for job interview. If you want to learn about software
engineering, e.g. architecture or what's going on in real industry, it's
different in my opinion. You should know well the problem, use cases and of
course, the contexts. To be honest, I agree with @cag_li. Involve in open
source projects or build a real project!

[0]: [http://www.spoj.com](http://www.spoj.com)

[1]:
[https://uva.onlinejudge.org/index.php](https://uva.onlinejudge.org/index.php)

------
banachtarski
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

~~~
tartrate
OP said he's learning PHP.

~~~
hawski
Uncharted territories are quite a challenge. But probably there are projects
out there that are doing those already.

------
zapperdapper
As others have said try building something. I would add the following:

Start with something really, really simple - like a single page website (and I
mean literally a single page of HTML). Then incrementally add features, adding
the PHP code to, for example, read content from a database. Every day add a
little feature or a tweak or fix a bug. After a couple of months you will be
surprised by what you have achieved. But you don't need to stop there. Keep
adding little features - eventually you will end up with a CMS.

The thing about this approach is you never burn out because you work in small
doses, and the project never "runs out" because there's always something new
you can add. But because you work on it incrementally you are more likely to
get somewhere than if you sit down one day to "write the next Google".

Hope that helps and good luck!

------
whatyoucantsay
Code Forces is an ugly, ungamified site but the calibre of its contestants is
of a far higher grade. If you can do well there, you'll have no need to ever
again worry at your ability to solve smaller coding-related problems. Silicon
Valley tech company interviews will also feel easy in comparison.

------
rb808
[http://www.hackerrank.com](http://www.hackerrank.com) \- most popular, lots
of corps use for first line recruiting so worth knowing.

[http://www.interviewbit.com](http://www.interviewbit.com) \- teaches you at
the same time.

~~~
johnsonjo
One similar to Hackerrank is hackerearth [1].

[1] [https://www.hackerearth.com](https://www.hackerearth.com)

------
indigochill
One I like is Wechall. It's sort of an index of other challenge sites
(including a nifty API that can track your progress through some of their
indexed sites), although they have a few of their own challenges as well. The
sites it indexes tend to be geared towards security topics like web security
and cryptography, though there are some more general programming challenges as
well.

------
exikyut
PHP is an unusual situation; for PHP, I would recommend reading bug reports
and learning what has not been fixed for years that will bite you badly. Lots
more info here:
[https://news.ycombinator.com/item?id=15815830](https://news.ycombinator.com/item?id=15815830)

If you want an honest appraisal of PHP, you'll find it in the above link.

~~~
lakechfoma
Ha yeah that's been my experience at a smaller scale so far. Why are "arrays"
actually key value sets? Not at all intuitive. I figured that out when I used
array_unique() only to discover that some index values had gone missing. Of
course that function provides no option to "treat $array like an actual
array". I found a solution of array_keys(array_flip()) which I read also
happens to be faster than array_unique(). Wat.

------
bitlax
Anybody know some good resources for advanced sql query practice? Multiple
nested subqueries, more obscure functions, etc?

~~~
jpamata
Have you tried pgexercises or hackerrank?

[https://pgexercises.com/](https://pgexercises.com/)
[https://www.hackerrank.com/domains/sql](https://www.hackerrank.com/domains/sql)

------
lawrencewu
I'm the founder of Daily Coding Problem
([https://dailycodingproblem.com/](https://dailycodingproblem.com/)).

We send high quality programming questions every day. You can sign up to our
mailing list for free to get problems starting tomorrow at 9AM PST.

I hope you enjoy our problems!

~~~
artwr
I tried signing up via the form but could not do so.

~~~
lawrencewu
Sorry! There was a bug in the subscription logic. It should be fixed now. Mind
trying again?

~~~
artwr
It seems fixed, thanks for the quick turnaround.

------
toAnswerIt
[http://codeforces.com/](http://codeforces.com/) and
[https://www.topcoder.com/](https://www.topcoder.com/) have really good
algorithmic challenges with frequent Competitions.

------
sedzia
We're going to start more business-oriented dev challenge soon, more info
[https://dev.to/msedzielewski/voucherify-developer-
challenge-...](https://dev.to/msedzielewski/voucherify-developer-
challenge-57m)

------
segmondy
None, go build something. Build a clone of something, facebook, twitter, HN,
google, slack.

------
muzani
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.

------
songzme
Hi! I'm teaching a coding bootcamp and one of my students built
[http://jsstation.com](http://jsstation.com)

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

------
loeg
Synacor Challenge is a pretty good one:
[https://challenge.synacor.com/](https://challenge.synacor.com/)

I wasn't a fan of the text adventure puzzle, but the rest is great.

------
swyx
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

~~~
lakechfoma
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.

------
lancew
[https://codegolf.io](https://codegolf.io)

This site has been mentioned on HN and reddit a few times.

Good if you are looking for sharp code, and perhaps to span languages.

~~~
rb808
[https://code-golf.io](https://code-golf.io)

------
aaron-santos
I had a great time going through the challenges at
[http://www.4clojure.com/](http://www.4clojure.com/)

------
autogn0me
What about the original "challenge" website?

[http://www.pythonchallenge.com/](http://www.pythonchallenge.com/)

------
mattpk
Google Codejam has some great problems.

[https://code.google.com/codejam/](https://code.google.com/codejam/)

------
cdancette
I really like [https://www.crackthatcode.com/](https://www.crackthatcode.com/)

------
lancew
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

~~~
recursive
This link does not go anywhere.

------
markfer
I would personally recommend taking the 10x Club course (note: I work at the
parent company, and yeah I know about the name)

------
j45
It might be something fun to build something that solves a need that someone
or a group of people have.

------
mvdschaaf
hacker.org is pretty good.

Some of the challenges can be brute forced easily, and some have only been
solved fully by one person. The puzzles are good, but the real fun is in the
challenges. Some of the ones I've unlocked have only been solved by less than
100 people.

