On Codewars, kata are code challenges focused on improving skill and technique. Some train programming fundamentals, while others focus on complex problem solving. Others are puzzles meant to test your creative problem solving, while others are based on real world coding scenarios.
The term was first coined by Dave Thomas, co-author of the book The Pragmatic Programmer as an acknowledgment to the Japanese concept of kata in the martial arts. Dave's version of the concept defines a code kata as an exercise in programming which helps a programmer sharpen their skills through practice and repetition.
Codewars supports users in many ways so their training with kata is maximally effective:
- They can set up one of available training routines.
- Users can run test cases against their solution and solve kata using Test Driven Development approach.
- Users can take a part in a discourse on every kata, to ask for help, or help others.
- Kata can be bookmarked or grouped into collections for easier management, categorization, or sharing with others.
- Users can view solutions of other people after they manage to solve the kata or unlock them.
Users can also contribute to existing kata in various ways: