Definition Code Kata
Code Kata is a term coined by Dave Thomas, co-author of the book The Pragmatic Programmer, in a bow to the Japanese concept of kata in the martial arts. A code kata is an exercise in programming which helps a programmer hone their skills through practice and repetition. As of October 2011, Dave Thomas has published 21 different katas.
Ziele & Prinzipien
- Verbesserung: Eine Code-Kata ist eine vorgegebene Programmieraufgabe mit überschaubarem Umfang, die viele Male hintereinander gelöst wird. Dabei soll bei jedem Durchlauf ein besserer Weg gefunden werden.
- Übung: Der Weg, die Wiederholung sind das Ziel, nicht die perfekte Lösung eines Problems. Lernen durch Üben (Musiker, Karateka).
- Test Driven Development (TDD) Skills verbessern, Refactoring, besserer, getesteter Code.
- Software Craftsmanship: Nicht nur funktionierende, sondern auch gut gefertigte Software.
- Algorithmen unterschiedlicher Art und Effizienz ausprobieren.
- Neues lernen, z.B. eine neue Sprache.
Formate
- Coding Dojo: A periodic meeting (usually weekly) organized around a programming challenge where people are encouraged to participate and share their coding skills with the audience while solving the problem.
- Prepared/Guided Kata: Jemand hat die Kata bereits gelöst und stellt sie dem Publikum live vor. Dabei beginnt die Person wieder bei Null, erklärt die einzelnen Schritte und erlaubt anderen Teilnehmenden, Fragen zu stellen oder Vorschläge zu machen.
- Randori: In diesem Format lösen alle Teilnehmenden das Problem gemeinsam mit TDD und Pair Programming. Nach 5-7 Minuten wird rotiert, Anmerkungen aus dem Publikum sind nur eingeschränkt erlaubt.
- Koan: Koans sind im Zen-Buddhismus Fragen, auf die es keine absolute Antwort gibt. Ruby Koans sind fertige Tests, zu denen als "Antwort" die zu testende Klasse geschrieben werden soll.
Live: Prepared Kata
Roman Numerals Kata: „Create a function that takes a Roman numeral as its argument and returns its value as a numeric decimal integer. You don't need to validate the form of the Roman numeral.”
←
→
/
#