Scrum và Extreme Programming (XP) chắc chắn là dễ đặt cạnh nhau để so sánh vì khá giống nhau. Trên thực tế nếu bạn dẫn dắt đội dự án theo một trong hai qui trình này thì có thể khó nhận ra đang đi theo Scrum hay Extreme Programming. Sự sai khác giữa hai phương pháp này khá tinh vi nhưng rất quan trọng. Tôi nghĩ rằng có 4 điểm khác biệt chính giữa hai phương pháp Scrum và Extreme Programming:
- Scrum team làm việc theo từng Sprint độ dài cố định từ 2 đến 4 tuần. Còn XP team căn bản sử dụng iteration độ dài 1 tuần đến 2 tuần.
- Scrum team không cho phép thay đổi trong khi sprint đang thực hiện chưa xong. Sau khi làm xong sprint planning và team đã chốt cam kết hoàn thành một nhóm product backlog items thì nhóm product backlog items đã chọn sẽ không thay đổi trong suốt sprint. XP team thì mềm dẻo hơn nhiều cho phép thay đổi backlog items giữa chừng trong iteration: chừng nào XP team còn chưa bắt tay vào một feature nhất định thì một feature có khối lượng công việc tương đương có thể được hoán đổi thay cho feature còn chưa bắt đầu đó.
- Bên trong một iteration XP team làm việc theo một trình tự ưu tiên rất nghiêm ngặt: Các feature được phát triển cần được đặt thứ tự ưu tiên bởi Customer (tương đương vai Product Owner trong Scrum) và team được yêu cầu làm theo đúng thứ tự đã lựa chọn. Trái lại Scrum team được tự quyết định trình tự thực hiện các items trong một sprint backlog đã được chốt sau khi làm sprint planning với Product Owner. Mặc dù thực tế tôi chưa gặp một Scrum team nào lại không bắt đầu làm từ item có thứ tự ưu tiên cao nhất, nhưng tại một số thời điểm một item có độ ưu tiên cao nhưng lại không thích hợp để hoàn thành trong sprint như đã định, chẳng hạn do nhân sự cần thiết đang bị sa lầy vào một item khác có độ ưu tiên cao hơn. Hoặc team nhận thấy nên làm item #10 trước thì lại hợp lý hơn là item #8 vì item #7 vừa hoàn thành có mối liên hệ chặt với item #10.
- Điểm khác biệt cuối cùng là Scrum không chỉ dẫn về các công việc kỹ thuật (engineering practices) trong khi đó XP thì chính là về các công việc kỹ thuật (engineering practices) phát triển phần mềm: chẳng hạn như test-driven development, automated testing, pair programming, simple design, refactoring v.v…
Đây là những khác biệt nhỏ và không dễ nhận ra giữa Scrum và XP. Nhưng có thể chúng ảnh hưởng lớn đến hoạt động của team. Tôi thường khuyên một team rằng “Hãy bắt đầu bằng Scrum và các bạn hãy tự phát minh ra một version của XP cho riêng mình”. Áp dụng theo XP practices rất tuyệt vời nhưng chỉ hiệu quả nếu như team có thể tự khám phá ra khả năng của họ chứ không phải là bị ép buộc thực hành theo phương pháp đó.
XP practices có thể ví như một điểm hồng tâm khó nhằm trúng. Còn Scrum practices ví như những vòng tròn trong một tấm bia to hơn giúp đem lại các cải tiến lớn chỉ đơn giản nhờ việc áp dụng liên tục các sprint có độ dài cố định.
Theo Mike Cohn