Last week I saved a link for further investigation. It was Talentbuddy a coding exercise website.

## Coding should be fun and power

Day to day programming work is not always fun. It can get really boring sometimes, but coding itself shouldn’t be like that. It’s one of the most powerful tools in humanity’s possession, every programmer hopefully reached a point while learning, when they felt this power. The power to solve a difficult problem, something that would’ve taken centuries to solve a few decades ago. One can find such problems for example in Project Euler.

## Project Euler

In Project Euler (PE) you’re given problems on the scale of hard to really hard. You can use whatever language you want, they only ask for the answer. While some knowledge in computer science is required in most cases the challenge is not understanding the problem, but writing a solution that runs in a reasonable amount of time. What is reasonable you might ask, well… your first try would do pretty well on a smaller set of input values, but expect problems which require calculation on a set of millions of items. Doing it under a few seconds instead of weeks, dodging stack overflows and out of memory errors is the real fun in this game.

With its 2001 start PE was among the first of its kind. It was intended to be a game for grownups, a somewhat experienced lot, who are expected to focus on efficiency, not just brute force solutions. If you are learning a language (maybe your first) then PE is not in your league. You’re goal is to establish a solid foundation in the language, which is best achieved through easier problems.

## Codewars

The first real coding dojo I tried was Codewars. This site is a true dojo, with a working kyu and dan ranking system. If you’re not familiar with martial art systems, kyus and dans are ranks of expertise. Every beginner starts with a high (8) kyu rank. With every successful level jump, the kyu rank decreases, until 1 kyu. After surpassing this level the progress is measured in dans, which grows with every further new level. And one more important thing, you should challenge opponents with the same or slightly higher ranks in the hope of success.

In Codewars the programming challenges are called Kata (which is a term for exercise in martial arts). These kata are your opponents, so they also have a level. If you solve one you receive points calculated from your and the opponents levels by an algorithm. You reach a new level if you gather enough points. You can level faster if you solve much larger level problems than your own. There are many kind of problems: bug fixes, algorithms, game logics, and so on. Right now you can solve a problem in JavaScript, CoffeeScript and Ruby, but I just checked the site when writing this post and they’re planning to add a lot of new languages. Your code must pass a certain amount of black box tests to enable submission. After you submit a working solution, you can check out how others solved the problem and discuss it with them in the forums.

I managed to solve really interesting problems here, for example implementing a simplified version of the leveling algorithm I mentioned above, some complicated string analysis or a special kind of sorting. There were also fairly easy ones among the lower levels, which give a great point of entry for beginners and a large amount of room for success. Right now 2 and 1 kyu challenges are almost real world tech problems, but definitely candidates for interviews, you make yourself a great favor completing them… I wonder what dan level problems will be like.

## Talentbuddy

Time has come to introduce Talentbuddy, which I found lately. They are much like Codewars, but they chose a simpler gamification theme. Here you solve groups of gradually hardening problems. You get fixed amount of points for a working solution and you level and earn achievements by collecting these points. Beginner problems start with the sum of two parameters, which might seem childsplay, but checking the issues section you will find that even these could pose a problem for a beginner. You can solve the problems in a large variety of languages, but only the first successful solution counts. After completing an exercise you can ask a code review from fellow members.

Both Talentbuddy and Codewars is a growing community effort. Members can send in their challenges, which are curated by higher level members and then integrated into the system. While Project Euler is a great thing I think these new coding dojos will be the future of spreading programming knowledge. You should definitely go and spend some time honing your skill with them, but be careful they are massively addictive!

See you at the dojo, Coding Ninjas!