This blog post is one part of the series “learning diary” for a course at my university.
Goal of this report is to take and rate a online learning unit. For the first learning unit we should take either a text based or animation based course. I finished two kata on the platform http://codewars.com.
Short synopsis of the unit:
The learning unit C# “Descending order” is a coding kata on the site http://codewars.com.
The goal of coding kata in general is twofold. On the one hand one should be able to practice their chosen programming language on small bite sized puzzles1, on the other hand a kata is a way to track their own improvements over time. The second goal is archived through repetition of the kata and the hopefully improved solution (improved in this case means solved the riddle faster, or with less tries etc.).
The task in this particular kata was to make a function, which can take any non-negative integer argument and return all digits of the argument ordered descending by their respective value. So for example
Reflection on your personal learning experience
My personal learning experience is somewhat mixed. On the one hand I really liked the approach of having small, well defined programming puzzles, which (after finished) then gave me a good feeling about getting something done. On the other hand does codewars.com show you other solutions to the kata from other users and often show you more elegant solutions. I realized at some point that my solution is neither fast, nor elegant. This is encouraging but also can lead to frustration.
Did you achieve the stated learning goals?
Because of the more fuzzy goals of a kata, simply doing one kata does not really improve the experience in a language. The expectation of the codewars makers is more of a repeatedly exercise, which a single take can’t provide. None the less, the solutions presented afterwards showed me a nice way to solve this particular problem.
Did the given time suffice?
The allocated time for the unit had been around 90 minutes. It took me 45 minutes to finish the kata (get it compiling and get all unit tests green). So I did a second kata, which took roughly the same amount of time. (“C# - CompoundArray” – Zip two arrays under certain circumstances).
Comment on the design - what was good, what could be made better?
Because the kata are written by open source contributors, the quality of the design of the kata varies. The “Descending order” had a very clearly stated task but had been accompanied only by a single unit test to start with. With a more elaborate set of tests, the kata could be more concrete.
Positive and negative aspects of the contents of the unit
The coding kata in general and the coding kata at http://codewars.com in special is well suited for programmers, which already know their language. Because of the level and the mediocre tutorial it is in my opinion not suited for beginners. You need to be able to understand the concepts of functions, unit tests and preferably the specialities of your chosen language. Otherwise you won’t be able to grasp the whole task, or can’t solve it.
For fun I tried to solve the Haskell tutorial (which is for all languages the same task “Why does this program not compile?”) and failed, even after looking the syntax up.
Grade the course on a scale of 0-10.
Because I took a coding kata in C#, a language I know well I would give this learning unit an eight out of ten. If the following points would be changed, I would improve my rating:
- The level of the kata is not good enough defined. I would assume that an eight Kyu (lowest level) kata is something an experienced developer should be able to solve in around ten minutes (really basic tasks). When I skimmed through the list of kata, I found descriptions of katas on fourth Kyu, which sounded relatively easy, whereas I took 45 minutes on a seventh Kyu kata.
- As already stated the learning unit is in my opinion not suited for beginners. A more extended example or a kind of hint after several tries could help.
One additional thing to mention is the open source character of the kata. Whilst the platform codewars.com itself is not open source, the kata are. Everyone can create a kata and propose it. On the platform itself the every kata you took can be rated, which then can be used by the user to filter only for “good” kata. To curate the kata, users can up vote and star the different kata. Also, kata have an issue tracker, where user can post suggestions for improvements.
Not only can a kata be rated, any solution can be rated as well. This enables a participant to compare his own solution not only against a random solution but against the best solution for that kata.
 Dave Thomas coined the Term “CodeKata” - http://codekata.com/kata/codekata-how-it-started/