Cảm nhận về hội thảo XP Day HaNoi 2015

Rate this post

Chủ nhật vừa rồi mình có tham dự hội thảo XP Day HaNoi 2015. XP là viết tắt của Extreme Programming hay được dịch ra tiếng Việt là lập trình cực độ hay lập trình cực đoan :) Hội thảo được tổ chức tại Đại học FPT, Hà Nội với sự tham gia của khá đông lập trình viên. Nội dung hội thảo chia làm 2 phần:

Dưới đây là một số nhận xét của cá nhân mình sau buổi hội thảo.

Phần một về KeyNote – Is XP still Extreme?

Phần KeyNote được trình bày bởi Kiro Harada một Senior Consultant giàu kinh nghiệm đến từ công ty Attractor – Japan. Bài trình bày của Kiro mở đầu XP day và chứa đựng khá nhiều thông tin hữu ích, một trong số các thông tin mà mình thấy hữu ích nhất đó là các XP Practices:

  • Thiết kế đơn giản (Simple Design)
  • Lập trình cặp (Pair Programming)
  • Test Driven Development (TDD) thiết kế test trước khi code
  • Cải tiến code (Refactoring)

    XP Still Extreme

Kiro cũng chỉ ra các hệ quả nếu không áp dụng XP:

  • Chúng ta có thể sẽ viết hàng nghìn dòng code mà không test dẫn đến các vấn đề có thể xuất hiện vào giai đoạn cuối của dự án. Như chúng ta đã biết các lỗi kiểu này sẽ mất rất nhiều effort để xử lý.
  • Việc tích hợp có thể chỉ có thể thực hiện vào giai đoạn cuối của dự án vì vậy không biết dự án thực sự bắt đầu từ khi nào?

Có một câu trong bài trình bày của Kiro giải nghĩa về Extreme mà mình thấy khá hay đó là: “Đừng ngăn cản bạn thành công bởi việc giữ bạn lại. Làm theo cách tốt nhất của bạn và giải quyết hậu quả của nó sau. Đó chính là Extreme. Hãy để cho bạn được thể hiện.”

Nói chung bài trình bày của Kiro giúp người nghe hiểu được những nguyên lý cơ bản của XP cũng như các giá trị mà XP mang lại. Bài trình bày trong khoảng 1h tương đối phù hợp mở đầu cho XP day.

Phần hai Fight Legacy Code Write Unit Test

Sang phần 2 các chuyên đề được tổ chức tại các phòng khác nhau, mình chọn phòng chuyên đề Workshop Fight Legacy Code Write Unit Test được trình bài của bởi Stanly Lau – Một Agile Coach đến từ công ty Odd-e Singapore. Công ty chuyên đào tạo và tư vấn về Agile/Scrum. Bài trình bày của Stanly tập trung vào việc giải quyết vấn đề Legacy code (có thể hiểu là các code đã có của lập trình viên khác trong dự án) bằng Unit Test.

Legacy Code là Code không có Unit Test, thế nhưng không phải code nào cũng phù hợp để viết Unit Test

Khi các Legacy Code chứa bad code thì nó sẽ thúc đẩy các developer bổ sung các hacks hay workaround để giải quyết vấn đề dẫn đến lại sinh ra nhiều lỗi hơn và vòng lặp này cứ tiếp diễn như vậy không ngừng. Đó chính là vấn đề của Legacy Code.

Fight Legacy Code Write Unit Test

Vậy giải quyết vấn đề đó như thế nào Stanly đưa ra giải pháp dựa trên Unit Test được tóm lược bằng 5 bước dưới đây:

  • Xác định các điểm cần thay đổi của Legacy Code
  • Tìm các điểm cần test
  • Loại bỏ các phụ thuộc (dependency)
  • Viết Unit Test
  • Thay đổi code rồi refactor

Tiếp đó đến phần Workshop Stanly vừa trình bày và vừa demo trực tiếp sử dụng Eclipse để giải quyết vấn đề Legacy code bằng Unit Test. Qua đây có thể thấy sự chuyên nghiệp trong việc sử dụng IDE Eclipse cũng như quản lý thời gian buổi Workshop của Stanly. Các thành viên tham gia đều học hỏi được rất nhiều về cách thức giải quyết vấn đề Legacy code dựa trên Unit Test từ Stanly.

Fight Legacy Code Write Unit Test

Hội thảo buổi sáng kết thúc, sau đó mình có ăn trưa và coffee với Stanly, Kiro, Alex 3 speaker của hội thảo XP lần này. Sau buổi nói chuyện mình thấy học hỏi được khá nhiều. Một trong những điều mình ấn tượng nhất đó chính là tầm quan trọng của TDD (Test Driven Development). Lâu nay thực sự TDD rất khó áp dụng vì tâm lý và thói quen của developer là code chứ không phải test, chúng ta luôn nghĩ việc test là dành cho QC, thế nhưng qua buổi nói chuyện này từ phản bác của Kiro và Alex là “Làm sao bạn có thể khẳng định code của bạn viết tốt, đúng đủ yêu cầu” rồi họ chỉ ra chỉ có Whitebox bằng Unit Test theo phương pháp TDD mới chứng minh là bạn – developer đã hoàn thành công việc, chứ không phải là Blackbox Test như QC.

Phần ba Workshop DDD Whirlpool with XP

Buổi chiều mình tham gia workshop về DDD (Domain Driven Design) with XP của Kiro. Ấn tượng về phần trình bày này không nhiều, mình thấy đọng lại ở mấy điều như sau:

  • Mình thấy DDD không khác phương pháp thiết kế hướng đối tượng là mấy
  • DDD đưa ra các khái niệm thống nhất cho đội ngũ thiết kế và khách hàng như: User Story, Core Domain…
  • DDD với XP áp dụng TDD ngay khi design 

DDD with XP

Phần workshop mình cùng team Stanly và công việc là phân tích và áp dụng TDD, DDD cho một bài toán trong một khoảng thời gian ngắn. Team work cùng với Stanly giúp mình học hỏi được tính chuyên nghiệp, hiệu quả trong việc áp dụng TDD cho một bài toán cụ thể. Thường khi gặp một bài toán developer chúng ta thường phân tích chán chê mê mỏi mới bắt tay code vì lúc nào cùng muốn giải pháp phải thật tối ưu. Thế nhưng Stanly một lập trình viên quốc tế lại khác sau khi phân tích thời gian chỉ có 15p anh đưa ra giải pháp và bắt tay vào code Unit Test luôn, test được thiết kế cũng rất đơn giản (Simple Design) làm sao để hoàn thành công việc chỉ trong vòng 15p. Qua đó mình thấy được sự hiệu quả trong từng chi tiết nhỏ của lập trình viên nước bạn: phải tùy thuộc vào yêu cầu và giới hạn của đầu bài để đưa ra giải pháp, có thể giải pháp không phải là tối ưu nhất nhưng miễn là chạy được rồi chúng ta sẽ cải tiến sau.

Buổi hội thảo kết thúc với phần tổng kết và các game nho nhỏ của 2 quản trò là Alex và Kiro. Phải nói là mình rất ấn tượng với cách tổ chức các trò chơi của 2 speaker này. Cách họ làm thực sự thú vị và làm cho bầu không khí cuối buổi hội thảo rất sôi động, khác hẳn với các hội thảo đơn điệu mà mình đã từng tham gia.
Extreme Programming

Extreme Programming

Extreme Programming

Buổi hội thảo đã thành công tốt đẹp. Hy vọng trong thời gian tới sẽ có nhiều buổi hội thảo như này hơn nữa.

XP Day HaNoi 2015

P/s: Slide của buổi hội thảo các bạn có thể download theo các link ở trên.

Happy sharing. stay tuned.

Leave a Reply

Your email address will not be published. Required fields are marked *

Website này sử dụng Akismet để hạn chế spam. Tìm hiểu bình luận của bạn được duyệt như thế nào.