Monthly Archives: June 2013

Hướng dẫn tổ chức Coderetreat

Giới thiệu về Coderetreat

Coderetreat là sự kiện diễn ra trong một ngày, các thành viên tham gia vào hoạt động thực hành chuyên sâu, tập trung vào những kỹ năng căn bản của phát triển và thiết kế phần mềm.

Có rất nhiều thảo luận xoay quanh việc chúng ta đã không thực sự thực hành một cách chú tâm. Trong những lĩnh vực có yếu tố sáng tạo, người ta cần rèn luyện thường xuyên. Nhưng hầu hết các lập trình viên lại được rèn luyện chủ yếu từ thực tế công việc. Vì vậy họ đã không học tập tốt theo cách thường thấy với khả năng vốn có như khi họ rời xa những áp lực công việc. Ở Coderetreat các nhà phát triển tập trung vào những nguyên lý căn bản của thiết kế hướng đối tượng, giúp họ cải thiện kỹ năng lập trình để giảm thiểu chi phí thay đổi trong tương lai. Trong Coderetreat mọi người tham gia có thể dùng ngôn ngữ, môi trường phát triển, khung làm việc tùy ý.

Ý tưởng về Coderetreat khởi xướng khoảng năm 2009 tại hội thảo CodeMash ở Sandusky Ohio. Code Retreat lần đầu tiên được tổ chức tại Ann Arbor, Michigan. Với một vài nỗ lực, giờ đây Code Retreat đã có định dạng như chúng ta thấy hôm nay: đơn giản, hiệu quả và có tính lan tỏa. Giờ đây hoạt động này đã trở thành thông lệ với nhiều người vào mỗi dịp cuối tuần.

Chuẩn bị

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

Mặc dù điều then chốt là thứ mà người tham dự mang về 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 công ty mình thì cũng nên mời người ở các doanh nghiệp khác, bạn bè, v.v.

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, khung kiểm thử , server mà họ có thể dùng trong Coderetreat.

Địa điểm và hậu cần

Tùy vào số lượng người tham gia mà cần một địa điểm rộng hay hẹp, nhưng địa điểm cần đảm bảo việc di chuyển dễ dàng cho các các thành viên.

Hình 1A. Một địa điểm tổ chức Coderetreat cho khoảng 40 người

Hình 1B. Một địa điểm tổ chức Coderetreat cho khoảng 20 người

Bạn cần chuẩn bị đủ ổ cắm điện cho lượng người tương ứng. Tuy nhiên Coderetreat thường áp dụng lập trình cặp, nên bạn cần chuẩn bị số ổ cắm bằng một nửa số người tham dự.

Phòng cần có một nơi để thực hiện hoạt động cải tiến và chia sẻ. Các ý kiến sẽ được cố định lên vị trí đó. Đó có thể là một bảng dính được bằng nam châm. Tuy nhiên bạn cũng có thể làm là dán một tờ giấy lớn lên tường và dùng băng dính hai mặt hoặc sticky (Xem Hình 2).
Hình 2. Nơi diễn ra hoạt động cải tiến

Các quy tắc cũng nên được in và dán ở vị trí mà mọi người tham gia luôn luôn nhìn thấy chúng (Hình 3AHình 3B).

Nơi diễn ra các quy tắcHình 3A. Nơi dán các quy tắc

Hình 3B. Nơi dán các quy tắc

Bạn cũng cần chuẩn bị giấy, bút và sticky cho tất cả mọi người để thực hiện quá trình cải tiến (xem một số loại giấy như ở Hình 2).

Thức ăn, đồ uống

Trong quá trình làm việc các thành viên cần có đồ uống. Tùy vào sở thích bạn có thể có nước lọc, cafe (dễ nhất là cafe hòa tan và nước nóng), trà, nước ngọt. Nếu có điều kiện bạn nên có thêm chút bánh ngọt và hoa quả.

Đồ uống và thức ăn nên được để ở nơi tương đối tách rời khỏi nơi diễn ra Coderetreat bởi mùi của chúng có thể gây phân tán hoặc ảnh hưởng tới mọi người.

Hình 5. Thức ăn nhẹ và đồ uông

Bữa trưa đối với hoạt động Coderetreat là rất quan trọng. Sau buổi sáng làm việc mọi người sẽ đói, nên để cho hoạt động buổi chiều hiệu quả thì bữa trưa không nên là bữa ăn nhẹ (ví dụ pizza). Chú ý tới sở thích của mọi người, có thể một số người phải ăn kiêng. Nên chọn đồ ăn ở một nhà hàng địa phương. Bạn nên có một nhà tài trợ cho đồ ăn riêng.

Người hỗ trợ

Coderetreat là hoạt động thực hành có chủ ý, nên người tham gia cần có người hướng dẫn (facilitator) các hoạt động luyện tập. 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 codetreat.

Coderetreat có cấu trúc như thế nào?

Đây là lịch làm việc của Summer Coderetreat 2013

8 – 8.30 : Đăng ký, ăn sáng, cafe

8.30 – 9 : Giới thiệu Coderetreat và thử thách

9 – 9.45 : Phiên #1

9.45 – 10 : Cải tiến và giải lao

10 – 10.45 : Phiên #2

10.45 – 11 : Cải tiến và giải lao

11 – 11.45 : Phiên #3

11.45 – 12 : Cải tiến và giải lao

12 – 13.30 : Ăn trưa và giao lưu

13.30 – 14.15 : Phiên #4

14.15 – 16.30 : Cải tiến và giải lao

14.30 – 15.15 : Phiên #5

15.15 – 15.30 : Cải tiến và giải lao

15.30 – 16 : Tổng kết

Giờ chúng ta sẽ chi tiết các hoạt động ở mỗi phần.

Đăng ký, ăn sáng, cafe

Phần này có thể kéo dài từ 30′ tới 45′. Thời gian này có mục đích để mọi người giao lưu với nhau, nghỉ ngơi, chờ những người tới muộn, và chuẩn bị những thứ cần thiết như chuẩn bị máy tính.

Giới thiệu Coderetreat và thử thách

Giới thiệu về lịch sử của Coderetreat

Giới những giá trị định hướng và định dạng của Coderetreat.

Giới thiệu về bài toán Conway’s Game of Life

Các phiên làm việc

Phiên bản của Global Day of Coderetreat có 6 phiên làm việc, tuy nhiên bạn có thể điều chỉnh. Thực tế chúng tôi đã tổ chức chỉ có 5 phiên như ở Summer Coderetreat 2013 và cả Global Day of Coderetreat 2012. Mỗi phiên gồm 2 phần: 45 phút lập trình và 15 phút cho cải tiến và giải lao.

Ở mỗi phiên lập trình, các cặp sẽ tự chọn cho mình quy tắc muốn áp dụng. Ở phiên đầu tiên hầu hết mọi người không nên chọn quy tắc nào để làm quen với bài toán. Nhưng ở các phiên sau bạn có thể gợi ý quy tắc cho các nhóm. Sau đó họ sẽ lập trình tuân thủ quy tắc đó. Trong khi các thành viên lập trình, người hỗ trợ nên đi quanh phòng và quan sát cách các nhóm cộng tác, cách thực hiện các quy tắc, cách mã nguồn được viết và hãy thỏa mái hỏi họ về điều đang làm, khi hợp lý hãy hỏi họ về cách tiếp cận như:

  • Tại sao bạn lại đặt tên hàm là getLiveCells?
  • Tại sao bạn không viết kiểm thử?
  • Tại sao bạn lại tái cấu trúc khi kiểm thử thất bại?

Khi bạn thấy ai đó đang có vấn đề về việc làm việc cặp, người hỗ trợ hãy cố gắng giúp họ cặp với người có thể mang lại cho họ một trải nghiệm tốt hơn.

Sau mỗi phiên làm việc bạn phải đảm bảo là tất cả mọi người đã XÓA MÃ NGUỒN.

Sau đó sẽ đến phần cải tiến và giải lao. Ở phần này mỗi nhóm nên viết ra một số ý mà họ nghĩ về phiên làm việc vừa qua. Bạn cũng có thể gợi ý các câu hỏi như:

  • Bạn đã học được gì?
  • Bạn thích gì?
  • Bạn không thích gì?
  • Có gì tốt?
  • Có gì không tốt?

Do thời gian có hạn, bạn nên chia thành các nhóm và chọn số câu hỏi hạn chế để mọi người viết vào giấy, sau đó mọi người trong nhóm chia sẻ với nhau và cả nhóm chọn ra một số lượng ý nhất định (3-5) để chia sẻ với toàn bộ Coderetreat ở bảng.

Hình 6. Nhóm thực hiện hoạt động cái tiến

Hình 7. Hoạt động chia sẻ, cải tiến giữa các phiên

Tổng kết

Mỗi người sẽ trả lời ba câu hỏi ra giấy:

  • 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?


Hình 8. Các câu hỏi trong phần tổng kết của Coderetreat

Sau mỗi người sẽ trình bày nhanh với toàn bộ Coderetreat về những câu trả lời của mình. Bạn nên chú ý tới lượng người mình có để căn thời gian cho phù hợp và dán lên bảng.

Nếu Coderetreat của bạn lớn, thì nên chia thành các nhóm ( khoảng 10 người). Mọi người tự trả lời các câu hỏi đó, sau đó chia sẻ với nhóm và đại diện của nhóm sẽ chia sẻ với toàn bộ Coderetreat.

Hình 9A. Nhóm tổng kết trong phần tổng kết của Coderetreat

Hình 9B. Nhóm tổng kết trong phần tổng kết của Coderetreat

Lấy ý kiến đánh giá như thế nào?

Sau cùng bạn nên lấy ý kiến đánh giá để rút kinh nghiệm. Bạn nên in mẫu lấy ý kiến để mỗi người điền giúp bạn hay trực tuyến để dễ dàng xử lý. Chúng tôi tạo ra một biểu mẫu của Google và gửi cho mọi người.

Các quy tắc

Người tham gia nên chọn một hoặc nhiều trong những quy tắc để áp dụng trong mỗi phiên làm việc. Facilitator nên quan sát để hướng dẫn người tham gia thực hiện đúng quy tắc. Ở phần mở đầu khi giới thiệu về các quy tắc người hỗ trợ nên giới thiệu về các quy tắc này. Trong các phiên làm việc, người hỗ trợ cũng nên giải thích cho các thành viên.

Sau đây là gợi ý một số quy tắc. Bạn và người tham gia có thể tùy ý thêm quy tắc nếu thấy nó giúp quá trình luyện tập.

Hình 10. Các 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 thực hành có chủ ý.

Đọc thêm

http://tapchilaptrinh.vn/2013/05/15/summer-code-retreat-2013/

http://en.coderetreat.coachcamp.org/2011/12/09/first-gdcr-a-short-retrospection/

http://coderetreat.org/profiles/blogs/on-the-role-of-the-coderetreat-facilitator

http://tapchilaptrinh.vn/2013/04/04/hai-loi-khuyen-khi-thuc-hanh-co-chu-y/

http://tapchilaptrinh.vn/2013/06/11/lap-trinh-cap-chung-ta-giup-nhau-thanh-cong/

http://tapchilaptrinh.vn/2012/09/29/coding-dojo-la-gi/

http://tapchilaptrinh.vn/2013/06/11/xp-ma-kiem-thu-don-vi-dau-tien/

http://tapchilaptrinh.vn/2013/03/27/co-phai-thiet-ke-da-chet/

http://tapchilaptrinh.vn/2013/05/07/kiem-thu-don-vi/

http://tapchilaptrinh.vn/2013/02/28/kiem-thu-don-vi-trong-javascript-voi-qunit/

http://tapchilaptrinh.vn/2013/04/09/kiem-thu-don-vi-tren-android/

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

Lịch sử các Ngôn ngữ lập trình

(Tạp chí Lập trình) – Trong một thế giới ngày càng kết nối , các ngôn ngữ lập trình đóng vai trò nền tảng. Bạn có biết rằng ngôn ngữ lập trình đầu tiên đã hơn 100 năm tuổi và … read more

Lập trình Cặp: chúng ta giúp nhau thành công

Tóm tắt Lập trình Cặp (Pair-Programming) là cách hai lập trình viên cùng làm việc trên chỉ một máy tính, một người lái (driver), một người làm hoa tiêu (navigator), thú vị hơn bạn tưởng tượng nhiều. Việc hoán đổi … read more

[XP] Mã kiểm thử đơn vị đầu tiên

Khi tạo kiểm thử ngay đầu tiên, trước khi viết mã, bạn sẽ thấy việc viết mã dễ dàng và nhanh hơn. Tổng thời gian để viết kiểm thử, và mã để vượt qua kiểm thử xấp xỉ thời gian … read more

[XP] Không bao giờ thêm chức năng sớm

Giữ cho hệ thống gọn gàng với những chức năng được thêm vào mà bạn đoán chúng sẽ được sử dụng sau này. Chỉ có 10% chức năng bổ sung được sử dụng, do đó, bạn đang lãng phí 90% … read more