Định nghĩa

Coding Dojo là buổi họp của nhóm lập trình viên để cùng nhau vợt một thử thách trong lập trình. Trong buổi họp này, lập trình viên tham gia vào hoạt động thực hành có chủ ý với những mục tiêu cụ thể để nâng cao trình độ kỹ năng nào đó trong không khí vui vẻ.
ParisDojo (Một Coding Dojo tổ chức ở Paris) tập trung vào việc lập trình trước công chúng, thường là làm một chương trình hoàn chỉnh, trong khoảng thời gian rất ngắn (từ 1 đến 1,5h). Họ dùng nhiều ngôn ngữ, công cụ và các dạng bài tập khác nhau. Một bài tập được coi là thành công khi được hoàn thành trong thời gian định trước và người xem có thể tự mình làm lại bài tập đó tại nhà.
Các nguyên lý của Coding Dojo có thể giúp bạn hiểu rõ hơn về Coding Dojo.

Tiên đề

  • Việc tiếp thu các kĩ năng lập trình phải là một quá trình liên tục

Đặc điểm

  • Không cạnh tranh, cộng tác, tạo không khí làm việc vui vẻ
  • Mọi trình độ kĩ năng đều có thể tham gia
  • Thoải mái đề xuất, thử ý tưởng mới

Các yêu cầu khi làm việc

  • Phòng họp phải có đủ chỗ ngồi (Lượng người tham gia thường từ 5 tới 20?)
  • Cần tối thiểu có một máy tính xách tay hoặc để bàn
  • Có một máy chiếu

Quy trình làm việc

  • Phiên bản Paris Dojo
    • 2 phút: để quyết định thời gian cho buổi gặp mặt tiếp theo
    • 25-30 phút: Xem nhanh lại những gì của buổi trước, những gì tốt, thú vị, những gì còn chưa tốt
    • 10 phút: Quyết định chủ đề của buổi gặp này
    • (Chúng tôi dùng các từ “tiếp, trước, này” trong giao thức làm việc của mình)
    • 40 phút hoặc hơn: Lập trình! Tùy theo là PreparedKata hoặc RandoriKata, xem dưới đây.
    • 5-10 phút: Nghỉ giữa phiên làm việc để thảo luận xem cách mọi việc đang diễn ra.
    • 40 phút: lập trình thêm

Các loại họp

PreparedKata

  • Một thuyết trình viên sẽ chỉ cách giải quyết thử thách dùng TDDBabySteps
  • Mỗi bước làm phải có ý nghĩa cho các thành viên
  • Mọi người chỉ ngắt khi không hiểu điều gì đang diễn ra

RandoriKata

  • Thử thách được giải quyết bằng cách lập trình theo cặp (bao gồm lái (driver) và hoa tiêu (navigator)).
  • Mọi người có mặt đều có thể giúp đỡ.
  • Mỗi cặp có 1 khoảng thời gian ngắn( 5 đến 7 phút) để viết mã nguồn, dùng TDDBabySteps.
  • Kết thúc thời gian trên, người vừa làm driver sẽ về chỗ ngồi làm khán giả, người navigator trở thành driver và 1 khán giả sẽ lên làm hoa tiêu.

Nguyên tắc của Coding Dojo

Nguyên tắc đầu tiên

Một nguyên tắc quan trọng về Coding Dojo là: Tại võ đường (dojo) bạn không thể thảo luận về một giao diện mà không có mã nguồn, và bạn không thể đưa ra mã nguồn mà không có kiểm thử (test). Coding Dojo được thiết kế như một phòng tập nơi mà “mã nguồn chính là bản thiết kế” và không tồn tại những đoạn mã nguồn mà không được kiểm thử.

Tìm kiếm một chuyên gia

Các chuyên gia không thể là chuyên gia của mọi vấn đề. Tôi làm việc tốt với các hàm đệ qui và xử lý danh sách, v.v.. Nhưng tôi nghĩ mình không biết các tạo ra được một ứng dụng web đơn giản. May mắn thay, trong khi đây là lần đầu tiên một số học viên ở đây thực sự đối phó với “đệ qui-đuôi”(tail-recursion), nhưng vài người trong số họ đã làm các chuyên gia trong ứng dụng web nhiều năm qua.

Hãy đến dù bạn không có gì của riêng bạn

Tất nhiên bạn có cách làm. Bạn biết tại sao và cách để mã nguồn này tốt hơn mã nguồn kia. Bạn đã hoàn thành mã nguồn này. Vậy thì hãy đến Coding Dojo để giải thích cho mọi người và chia sẻ điều mà bạn học được.

Học lại

Để có thể học lại điều gì đó, chúng ta phải quên nó đi trước. Nhưng không dễ để quên khi mà bạn ở một mình. Việc này sẽ dễ hơn khi chúng ta tập trung toàn bộ sự chú ý cho một người đang cố gắng học nó lần đầu tiên. Chúng ta có thể học từ sai lầm của người khác cũng như là khi chúng ta học từ chính sai lầm của chúng ta vậy.

Chậm lại

Việc học tập nên thực hiện thật chậm. Bạn có thể làm nhanh khi bạn đã có kinh nghiệm, nhưng bạn không thể học và trau dồi kinh nghiệm cùng lúc. Không sao, Chúng ta không vội vàng. Chúng ta có thể thực hiện trong nhiều năm. Sẽ có người thực hiện được. Chúng ta sẽ muộn gì nếu dành hơn bốn tuần cho một vấn đề thay vì bốn vấn đề khác nhau? Chính xác hơn, chúng ta đạt đến phần tiếp theo, vì đã vượt qua phần trước đó, hoặc chỉ vì chúng ta đã lướt qua chúng?

Nhập tâm

Khi từ ai đó mới bắt đầu một lĩnh vực và muốn tiếp cận lĩnh vực khác. Thì họ bị đe dọa bở sự nhàm chán. Vậy hay đặt mục tiêu trinh phục độ khó cao hơn để lấy lại động lực cho mình.

Hãy hỏi chuyên gia

Thật là khó khăn cho bạn, khi tìm sự trợ giúp của những người giàu kinh nghiệm, họ có thể đánh giá mã nguồn của bạn và cho bạn thấy được những điều mới mẻ. Hãy hỏi đến khi bạn không còn khó khăn nữa.

Chuyên gia một lĩnh vực

Nếu điều đó dễ với bạn, hãy giải thích nó cho những người đang gặp khó khăn. Hãy giải thích chừng nào họ còn cảm thấy khó khăn với nó.

Giới thiệu thực hành có chủ định

Thực hành có chủ định là hoạt động có cấu trúc cao với mục tiêu cụ thể trong việc cải tiến hiệu năng.
Thực hành có chủ định khác với làm việc, chơi và sự lặp lại đơn thuần của công việc. Hoạt động này yêu cầu sự cố gắng, không lợi nhuận, và bản chất không phải là thú vị.
Khi bạn thao gia, cùng với thời gian bạn cải tiến hiệu năng, đó mới là là mục tiêu và động lực của bạn.
Điều đó không có nghĩa là thực hành có chủ ý không thể vui vẻ, nhưng vui vẻ không phải là mục đích chủ yếu.

Nếu bạn muốn nhanh có kỹ năng hoặc trình độ của một chuyên gia ở lĩnh vực nào đó thì bạn phải biết tầm quan trọng của thực hành có chủ ý và học cách đưa nó vào đời sống hàng ngày.

BỐN THÀNH TỐ CHÍNH YẾU CỦA THỰC HÀNH CÓ CHỦ Ý

Những nghiên cứu lịch sự giáo dục (từ thời cách đây hàng nghìn năm), kết hợp với thực nghiệm khoa học gần đây đã phát hiện nhiều điều kiện để học tối ưu và cải tiến. Một lần nữa, K, Anders Ericsson chỉ ra bốn thành tố chính yếu của thực hành có chủ ý.
Khi những điều kiện này thỏa mãn, những thực hành sẽ cải tiến độ chính xác, tốc độ của hiệu năng ở nhận thức, cảm nhận và động cơ:

  1. Bạn phải có động cơ để tham dự vào công việc và nỗ lực để cái tiến hiệu suất của mình.
  2. Việc thiết kế nhiệm vụ nên dựa vào kiến thức đã có để có thể hiểu chúng một cách chính xác sau một đoạn ngắn giảng giải.
  3. Bạn nên nhận ngay thông tin phản hồi và kết quả hiệu năng của mình.
  4. Bạn nên lặp lại các nhiệm vụ đã làm hoặc tương tự.

    Đây là bài dịch từ WhatIsDodingDojoCodingDojoPrinciples của các học viên tham dự workshop “Practices of an Agile Developer”: Nguyễn Trung Tuyến, Đào Văn Đức, Nguyễn Hoàng Quyết, Dương Hồng Phong, Phùng Nguyễn Đức Minh, Nguyễn Anh Tuấn, Trần Đức Hưng.

    Biên tập: Phạm Anh Đới