planning icon indicating copy to clipboard operation
planning copied to clipboard

Katas

Open OleMchls opened this issue 8 years ago • 15 comments

Idea

A kata is a self-contained coding problem in one GitHub repository. In the past, we have used katas as a great group non-talk activity. The feedback always have been very positive, so we would like to do more.

How to prepare a kata

A kata is a self-contained coding problem in one GitHub repository. Preferably in the hh-ex namespace (ask organizers for permissions, you can also move repos laters, start right away!).

The ideal meetup coding kata problem...

  • has little to no business logic, so it can be understood with little context as possible.
  • can be solved by all skill levels within 60 to 90 minutes
  • can be solved in iterations rather than a big a big bang release
  • has no external network dependencies
  • can easily be tested

Each kata should contain a readme describing the problem including some examples. It also has some general code setup, like a running elixir project, incl Mixfile, and the usual folder structure, so that attendees can start implementing code right away.

Ideally, a kata also provides failing specs. If it has specs, set up PR tests any CI tool of your choice, so when we are comparing results we will see if a solution passes the tests.

And if you are lacking a good kata idea, take a look here: http://rosettacode.org/wiki/Category:Programming_Tasks

How to run a Kata

In addition to the usual rules on how to make a meetup great for everyone, make it open and inclusive, etc. Katas works best when we pair up the group into teams. These teams are formed best when assigning team members at random (shuffle).

A nice way to shuffle group members was introduced to us by @pierrebeitz, by ripping apart a zine page and make attendees find their corresponding mates by finding the same page parts.

Past Katas

Topic Wishlist

  • General Elixir concepts (special data structs, processes, GenServers)

OleMchls avatar Apr 29 '16 18:04 OleMchls