Coding Dojo là gì?

Coding Dojo là một sự kiện mà nhóm nhà phát triển (developer) cùng nhau giải quyết một thử thách trong lập trình, họ tham gia vào hoạt động thực hành chủ tâm với mục tiêu cải tiến một kỹ năng nào đó trong không khí vui vẻ.

Tại sao cần Coding Dojo?

Rất nhiều người làm việc hàng giờ với hy vọng sẽ giỏi lên. Thông thường khi chúng ta tập luyện với khối lượng lớn thì sẽ tiến bộ. Nhưng sự tiến bộ này là chậm hơn đáng kể so với khi thực hành chủ tâm. Khi thực hành chủ tâm, người tham gia chủ ý để cải tiến từng kỹ năng, họ không chịu những áp lực công việc có hại cho quá trình học tập (như áp lực thời gian, áp lực từ các quan hệ).

Ở Coding Dojo các nhà phát triển tập trung vào những nguyên lý và kỹ năng căn bản của lập trình và thiết kế hướng đối tượng. Các kata (bài tập – thử thách) và quy tắc được thiết kế để giúp các thành viên tập trung cải thiện kỹ năng đó.

Nếu bạn muốn tổ chức Coding Dojo, hay đơn giản là bạn chỉ muốn đến tham dự Coding Dojo thì bạn nên biết đến bộ nguyên tắc của nó. Và sau đây là 8 Nguyên tắc của Coding Dojo

Nguyên tắc của Coding Dojo

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

Tại Coding 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 cũng không thể đưa ra mã nguồn mà không có kiểm thử. 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ử.

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

Các chuyên gia không thể là giỏi 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ân vân. 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.

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

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.

4. 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ư của chính mình.

5. 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 đã biết những mẹo mực, nhưng bạn không thể học và làm việc nhanh 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 kata thay vì bốn kata 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?

6. Nhập tâm

Khi 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 hãy đặt mục tiêu chinh phục độ khó cao hơn để lấy lại động lực cho mình.

7. 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  cho đến khi bạn không còn khó khăn nữa.

8. 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.

Thời gian

Theo tôi thì thời gian và địa điểm tổ chức cần phải giữ để tạo nhịp và ít gây sao nhãng. Tần xuất tổ chức Coding Dojo thì nên là hàng tuần, hai tuần một lần hoặc hàng tháng.

Sau đây chúng ta xem ba phiên bản khác nhau.

– Phiên bản Paris là khoảng 2 giờ buổi tối sau đó là giao lưu bằng rượu bia hoặc cafe.

– Coco Dojo phiên bản một là 2 tuần một lần vào các buổi tối ngày thứ 4, mỗi lần 2 giờ.

– CocoDojo phiên bản hai là một tháng một lần vào 4 giờ chiều ngày thứ 7

Người hỗ trợ

Coding Dojo là hoạt động thực hành chủ ý, nên người tham gia cần được hướng dẫn các hoạt động luyện tập. Người hỗ trợ (facilitator) sẽ thực hiện việc này. Theo lời khuyên thì để trở thành người hỗ trợ bạn nên tham gia ít nhất 2 lần Coding Dojo, nắm được cách thức tổ chức, hoạt động hướng dẫn và cách viết mã sạch. Hãy cố gắng tìm đến để tham gia một vài Coding Dojo. Nhưng nếu không thì bạn cũng không cần phải lo lắng vì Coding Dojo là một hoạt động học tập, nên nếu bạn không có điều kiện như trên thì cũng hãy cứ làm và bạn sẽ thành thục.

Tạo sự kiện và quảng bá

Mặc dù điều then chốt là thứ mà người tham dự đạt được sau sự kiện. Nhưng số lượng và đặc biệt là sự đa dạng của các thành viên tham gia là yếu tố quan trọng. Số lượng và sự đa dạng của các thành viên tham gia quyết định rất lớn tới chất lượng trải nghiệm. Do đó việc tạo sự kiện và quảng bá rất quan trọng. Nếu bạn định tổ chức chỉ cho tổ chức của mình thì cũng nên mời người ở các tổ chức khác.

Số lượng người cũng không nên quá đông và cũng không nên ít quá. Lượng người tham giá tốt nhất từ 5 tới 15 người [4].

Trong thư mời bạn nên thông báo rõ những thứ mà người tham gia phải chuẩn bị như máy tính, ngôn ngữ, cài đặt môi trường phát triển (IDE), khung kiểm thử, server mà họ có thể dùng.

Chuẩn bị

Cách bố trí phòng tùy thuộc vào cấu trúc của từng Coding Dojo và hoạt động mà bạn định tổ chức. Trước tiên bạn chỉ cần có một phòng đủ rộng cho tất cả mọi người, một máy chiếu và ít nhất một máy tính.

Có đồ uống sẵn trong phòng để cho người tham dự dễ dàng sử dụng, điều này giúp cho buổi luyện tập trở nên thoải mái hơn.

Hình minh họa cấu trúc của một phòng tổ chức Coding Dojo

Bạn cũng nên in sẵn kata để người tham dự dễ dàng đọc, tra cứu khi họ chưa hiểu và nhớ được.

Có đủ bút và giấy viết cũng rất hữu ích cho người tham dự để tìm lời giải và trình bài ý hiểu của mình cho bạn làm cùng.

Cấu trúc của Coding Dojo

Có rất nhiều phiên bản khác nhau, và bạn cũng có thể tạo ra phiên bản riêng cho mình, nhưng cơ bản thì Coding Dojo có các phần sau:

Giới thiệu Coding Dojo

Mục đích của phần này là giúp mọi người cảm thấy an toàn, đặc biệt cho thành viên mới tham gia. Nội dung có thể bao gồm:

1. Coding Dojo là gì

2. Nguyên tắc của Coding Dojo

Thời gian cho phần này từ 2 tới 15 phút.

Giới thiệu kata

Phần này có mục địch giải thích cho mọi người tham gia rõ về thử thách.

Nếu Coding Dojo của bạn theo định dạng không phải PreparedKata thì thêm phần chọn kata.

Bạn nên chọn kata đủ đơn giản với nhóm của mình để phần tìm hiểu đề bài không mất nhiều thời gian. Bạn cũng nên in đề sẵn giúp mọi người tra cứu.

Lập trình

PreparedKata

Đây là hình thức có người làm trước kata và biểu diễn lại lời giải từ ban đầu dùng phát triển hướng kiểm thử và bước nhỏ.

Mọi người tham gia phải hiểu rõ ý nghĩa của mỗi bước.

Mọi người chỉ làm gián đoạn khi không rõ điều đang diễn ra.

Hình minh họa một PreparedKata

Hình ảnh minh họa một PreparedKata

Định dạng này giúp mọi người có cơ hội quan sát và học hỏi nhanh các kỹ thuật, nhưng kém tính tương tác và trải nghiệm. Do đó định dạng này rất phù hợp khi cộng đồng còn mới với coding dojo và các kỹ thuật áp dụng.

Randori

Kata được giải quyết bằng lập trình cặp (bao gồm người lái và hoa tiêu).

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 phát triển hướng kiểm thử và bước nhỏ.

Kết thúc thời gian trên, người vừa lái sẽ về chỗ ngồi làm khán giả, hoa tiêu trở thành người lái và một khán giả sẽ lên làm hoa tiêu.

Hình thức này giúp mọi người đều có cơ hội tham gia nhiều hơn, từ đó tăng trải nghiệm của mọi thành viên. Hình thức này phù hợp khi các thành viên cơ bản đã quen với Coding Dojo và các kỹ thuật lập trình áp dụng

Randori phiên bản Paris

Với định dạng này tất cả những người muốn lập trình đều được tham gia. Các thành viên được chia thành các cặp hoặc nhóm 3 và sẽ giải quyết kata trong thời gian mỗi phiên từ 45 phút tới 90 phút. Sau đó lại đổi đôi và các đôi mới lại giải quyết lại kata từ đầu.

Cấu trúc phòng khi làm theo Randori phiên bản Paris

Vai trò của người hỗ trợ là đưa ra phản hồi về mã nguồn và kiểm thử. Nhược điểm của cách làm này mỗi thành viên chỉ được tương tác với ít thành viên khác, do đo nếu sự tương tác này không đủ hoặc không phù hợp với một thành viên nào đó, thì họ không có cơ hội thay đổi.

Randori phiên bản Kake

Với định dạng này tất cả những người muốn lập trình đều được tham gia. Các thành viên được chia thành các nhóm 3 người: người lái, hoa tiêu và khán giả. Người lái sẽ giữ bàn phím. Hoa tiêu giữ vai trò định hướng người lái. Khán giả có vai trò quan sát để hiểu.

Luồng di chuyển theo Kake

Sai mỗi phiên làm việc (khoảng 10′) thì người lái của nhóm này sẽ thành khán giả của nhóm khác. Hoa tiêu sẽ thành người lái và khán giả sẽ thành hoa tiêu.

Hình ảnh minh họa một Kake

Vai trò của người hỗ trợ là đưa ra phản hồi về mã nguồn và kiểm thử của cặp.

Đây là hình thức mà các thành viên có trải nghiệm nhiều nhất và an toàn cho các thành viên. Tuy nhiên nhược điểm là khi thay đổi nhóm thì sự thích ứng mặc dù thú vị, nhưng tạo ra sự khó khăn nhất định .Sau khoảng 5 coding dojo thì định dạng này trở nên rất phù hợp.

Cải tiến

Khi mọi người đang làm việc thì vai trò của người hướng dẫn là để phần này diễn ra. Sau đó bạn hãy hỏi những người tham gia một số câu hỏi, ví dụ như những câu hỏi sau:

– Bạn học được gì hôm nay?

– Điều gì làm bạn bất ngờ?

– Bạn sẽ làm gì khác trong công việc?

– Bạn nghĩ Coding Dojo tới nên làm khác đi ở điểm nào?

– Điều gì bạn không hài lòng buổi hôm nay?

– Điều gì làm bạn thích nhất buổi hôm nay?

Lập kế hoạch cho Coding Dojo tới

Hãy chủ ý tới những ý kiến của các thành viên để có thể lên kế hoạch cho buổi tới tốt hơn.

Kata

Bạn không nên chọn bất cứ một bài tập nào là một kata, mà nên chọn trong danh sách các bài đã được tổng kết ở Kata Catalogue. Ở đây chúng tôi có một số đề bài đã được dịch sang Tiếng Việt.

Bạn nên tham gia Coding Dojo như thế nào cho hiệu quả

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 độ và hiệu năng của 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ự.

Các quy tắc

Hình minh họa một số quy tắc

Câu hỏi đặt ra là những quy tắc này để làm gì? Tại sao chúng ta nên tự ràng buộc mình? Chúng ta có rất nhiều cách và công cụ để giải quyết một vấn đề. Khi đặt ra một giới hạn tức là đang hạn chế các công cụ và cách thức để giải quyết cùng vấn đề, chúng ta sẽ phải vận dụng tốt hơn những kỹ năng, công cụ và cách thức khác. Từ đó chúng ta sẽ rèn luyện mình tốt hơn. Đó là một phần của thực hành chủ ý.

Nhóm của bạn không nhất thiết phải dùng một quy tắc nào. Khi bạn cảm thấy thoải mái thì có thể áp dụng một trong những quy tắc, và bạn cũng có thể lựa chọn một quy tắc cho chính mình.

Tác giả: Phạm Anh Đới

Tham khảo

http://tapchilaptrinh.vn/2012/09/29/codingdojolagi/

http://tapchilaptrinh.vn/2013/06/17/huongdantochuccoderetreat/

http://tapchilaptrinh.vn/2013/04/04/hailoikhuyenkhithuchanhcochuy/

The Coding Dojo Handbook

http://codingdojo.org