I recently watched a talk about programming exercises by Terry Yin. As I finished university and are now working as a full time web developer I felt the need to keep on learning and improving my programming skills actively. Yin talks about different types of programming exercises with all their advantages and disadvantages. He especially mentions two websites with small to extensive exercises:
Project Euler is a collection of mathematical and computer science related problems. It starts out very easy with the problem “Find the sum of all the multiples of 3 or 5 below 1000”. But step by step the difficulty increases. It does not matter how you get your results (programming language, environment, efficiency). You just need to come up with the right number in order to solve the problem and unlock access to the corresponding discussion thread.
These types of exercises work very well for me. Even if I came up with the right result I usually want to improve my answer and try other programming paradigms or languages.
Cyber Dojo is a website with a much more guided approach with a heavy focus on TDD. You can create new “dojos” from a list of different programming languages, testing frameworks and exercises. Multiple participants can then work on this dojo by writing their own code inside the provided browser based editor. After a fixed amount of time the participants are supposed to stop and review each others code. The main goal is not necessarily to solve the puzzles but to write clean code and tests in a structured way. By repeating the exercises and reviewing solutions you keep on improving.