Coding Dojo is?

คำว่า Coding Dojo ก่อนอื่นเราลองแยกคำออกเป็นสองคำก่อน คือ Coding และ Dojo

  • Coding ความหมายนี้ตรงตัว หมายถึงการเขียนโค้ด (Code) หรือเขียนโปรแกรมนั้นแหล่ะครับ
  • Dojo คำนี้ในภาษาญี่ปุ่นเป็นคำสองคำที่รวมกัน “Do-โด” หมายถึง วิถีหรือหนทาง “Jo-โจ”  หมายถึงสถานที่  เมื่อรวมกันแล้วหมายถึง สถานที่ซึ่งเป็นที่ฝึกวีถีต่างๆ ที่เข้าใจง่ายๆเช่น โรงฝึกวิชาศิลปะการป้องกันตัว

ดังนั้นถ้าพูดให้เข้าใจง่าย Coding Dojo คือกระบวนการหนึ่งในการพัฒนาทักษะการเรียนรู้ในการเขียนโปรแกรม โดยที่รูปแบบการฝึกหลักๆ มี 3 แบบดังต่อไปนี้

1. Kata

Kata (คาตะ) แปลตรงตัวหมายถึง แบบอย่าง อธิบายเพิ่มเติมแบบเข้าใจง่ายๆ เช่น คาตะในคาราเต้ จะบ่งบอกถึงลักษณะเด่นของแต่ละสำนัก เปรียบเสมือกระบวนท่าเอกลักษณ์ อีกทั้งยังบ่งบอกระดับความสามารถของแต่ละบุคคลได้ด้วย

ถ้าเชื่อมโยงกับการเขียนโปรแกรม ที่ดังๆ เราจะนึกถึงได้เช่น

  • การเขียนโปรแกรมแบบ  TDD (Test-Driven-Development)
  • การเรียนรู้ภาษาใหม่ Learning New Language
  • การ Refactoring Code

เป้าหมายของการทำ Kata คือทำการฝึกฝนทักษะที่สำคัญอย่างสม่ำเสมอ โดยที่ซ้อมกับการแก้ปัญหา โดยที่ไม่ได้เน้นการแก้ปัญหายาก แต่เน้นการเข้าใจถึงขั้นตอนการคิดการเขียนโปรแกรมเพื่อแก้ปัญหาให้ถูกรูปแบบมากกว่า


2. Wasa

Wasa (วาสะ) แปลว่า เทคนิค ลีลา ชั้นเชิง ในการฝึก Wasa เทียบได้กับการฝึก Kata แบบสองคน คือมีฝ่ายรุกและฝ่ายรับ ถ้ามาประยุกต์ใช้กับ Coding

เราจะจำลองให้เลือกโจทย์มาเหมือนทำ Kata แล้วให้คนนึงเขียน Unit test แล้วให้อีกหนึ่งคนเขียนโปรแกรมมาทำให้ Unit Test ผ่าน เน้นไปเชิงการเรียนรู้ที่จะเข้าใจแนวคิดการเขียนโปรแกรมของอีกคน อีกทั้งฝึกการวิเคราะห์หรือวิจารณ์การเขียนโปรแกรมของอีกคนนึง


3. Randori

Randori (รันโดริ) คือการฝึกซ้อมแบบจริง โดยใช้แนวความคิดว่า นักเรียนสองคนใช้เทคนิคต่างๆที่ตนเรียนรู้เพื่อการเอาชนะอย่างเต็มกำลัง [wiki]

รูปแบบนี้จะมีคนร่วมมากกว่าสองคนขึ้นไป โดยที่เราอาจจะขึ้นจอทีวีใหญ่ๆ หรือโปรเจคเตอร์ เราจะทำการเลือกโจทย์ มีคนนึงเขียน unit test และ เขียนโปรแกรมให้ unit test ผ่าน แต่จะผลัดกันเขียนไปเรื่อยๆให้ครบทุกคน รูปแบบนี้เน้นบรรยากาศการฝึกที่สนุกและได้เรียนรู้แนวคิดที่หลากหลายมากขึ้นในการแก้โจทย์


What’s next?

สำหรับผู้ที่สนใจและอยากจะเริ่มต้น แนะนำให้ลองเข้าไปดูและเลือก หัวข้อที่สนใจจาก http://codingdojo.org/kata/โดยเริ่มจากโจทย์ง่ายๆ ที่เหมาะกับการเริ่มต้นเช่น Fizzbuzz ก่อน แล้วค่อยๆเลือกหัวข้อที่สนใจและยากขึ้นไป

ข้อมูลและแนวคิดที่ได้นี้ ได้มาจากหนังสือ The Clean Coder: A Code of Conduct for Professional Programmers ของ Robert C. Martin ลองเข้าไปหาซื้อมาอ่านเพิ่มเติมได้ครับ


ขอบคุณรูปภาพจาก IC Shorinji Kempo