Quay lại với cơ bản: eXtreme Programming

Giới thiệu sách “Extreme Programming Explained – Embrace Change, 2nd Edition” của Kent Beck

Có vẻ như phong trào Lean Startup đã làm sống lại eXtreme Programming, một “môn võ công” tưởng chừng hay an vị những góc khuất nơi có các tay coder lập dị đầu to mắt cận. Công thức “Lean Startup = Customer Development + Agile Engineering” có thể đã khuyến khích giới khởi nghiệp đi tìm lại những kinh điển và khơi lại giá trị của những lập trình viên chân chính. Bước khởi đầu đó là tìm hiểu và thực hành Lập trình Cực hạn (hay Lập trình Cực đoan – eXtreme Programming, thường gọi là XP). Thật logic khi ta tìm đến “Extreme Programming Explained” của người được coi như là “cha đẻ” của XP: Kent Beck.

Bên cạnh chương đầu tiên với tiêu đề “XP là gì?”, tác giả nhập đề bằng nỗ lực làm mịn lại định nghĩa về XP mà ông đã đề cập trong lần xuất bản trước đó. Ông cũng không quên giới hạn phạm vi của XP để bạn đọc không bị sa đà vào những câu hỏi rắc rối không cần thiết. Theo đó, XP được mô tả là:

  • một phương pháp luận phát triển phần mềm “nhẹ kí” (lightweight),
  • chỉ tập trung vào các ràng buộc của quá trình phát triển phần mềm, không bao gồm các lĩnh vực “râu ria” khác như quản lí danh mục dự án, chi phí, tài chính, marketing hay bán hàng, v.v.
  • phù hợp với các đội nhóm thuộc đủ kích cỡ lớn nhỏ,
  • thích ứng tốt với những thay đổi nhu cầu nhanh chóng. 

So với định nghĩa trong lần xuất bản trước đó, trong lần tái bản này tác giả đã làm rõ giới hạn XP trong phạm vi hoạt động hiệu quả của nó (có lẽ là do nhận được không ít truy vấn và chỉ trích về các vấn đề không liên quan), đồng thời cố gắng mở rộng phạm vi áp dụng cho các nhóm (trước đó chưa có bằng chứng về XP có thể phù hợp với những nhóm lớn). Tác giả dùng hẳn một chương 15 về Scaling (mở rộng) để mô tả cách thức XP có thể phù hợp với một đội lập trình lớn. Thật kì lạ là ngay từ 2004, Kent Beck đã mô tả điều này rất ngắn gọn nhưng thuyết phục. Trong khi đó, cho tới nay người ta vẫn hồn nhiên ngộ nhận về Agile: nó chỉ phù hợp với nhóm nhỏ; nhưng thực tế đã cho thấy Agile nói chung (XP nói riêng) phù hợp với mọi nhóm với kích thước bất kì (tuy nhiên, điều đó không phạm gì vào một thực tế là “nhóm đủ nhỏ thì làm việc hiệu quả hơn, do đó trong thiết kế tổ chức, không nên để nhóm quá lớn”).

Theo tác giả, mục đích cuối cùng của XP không chỉ đảm bảo cho việc phát triển những phần mềm với chất lượng cao nhất, với chi phí thấp nhất, ít lỗi nhất, siêu năng suất và tối đa hóa lợi nhuận đầu tư; mà nó là công cụ để các lập trình viên tạo dựng một cuộc sống tốt đẹp hơn. Nói cách khác, ông đang cố gắng định nghĩa lại từ Lập trình viên với cách thức phát triển phần mềm “kiểu mới” với tên mã (codename) là XP. Tầm nhìn đó được hiện thực hóa thông qua Bốn giá trị định hướng (values), các nguyên tắc (principles) và mười hai  Kĩ thuật thực hành(Practices) đặc thù theo định hướng của triết lí Agile. Sau hơn một thập kỉ, một số nguyên tắc hay kĩ thuật thực hành trong số này đã trở nên phổ biến tới mức người ta có cảm giác nó hiển nhiên như vậy. Tuy vậy, ở Việt Nam thì rất khác, những điều bổ ích này cho đến nay vẫn chưa được đưa vào các chương trình đào tạo lập trình viên chuyên nghiệp, còn doanh nghiệp thì vẫn nhìn những thứ như Pair-programming hay TDD là những “vật thể” rất lạ.

Đọc “Extreme Programming Explained”, bạn đọc không chỉ được “giải thích” cặn kẽ về những giá trị cốt lõi hay kĩ thuật thực hành XP, mà còn được cắt nghĩa triết lí phía sau, những chỉ dẫn để áp dụng XP nhanh chóng và thay đổi cuộc sống của chính mình và những người khác.

Dương Trọng Tấn.