Extreme Programming (XP) là một phát triển phần mềm Agile khung tham chiếu được thiết kế để tạo ra phần mềm chất lượng cao hơn và cải thiện chất lượng cuộc sống của đội nhóm. XP là khung tham chiếu Agile cụ thể nhất khi nói đến các thực hành kỹ thuật đúng đắncác thực hành kỹ thuật.
Scrum là một khung tham chiếu nơi con người có thể giải quyết các vấn đề phức tạp thích nghi được đồng thời cung cấp các sản phẩm có giá trị cao một cách hiệu quả và sáng tạo. Bản thân Scrum là một khung tham chiếu đơn giản giúp thúc đẩy sự hợp tác hiệu quả của đội nhóm trong việc phát triển các sản phẩm phức tạp.
Cả Scrum và XP đều là các phương pháp Agile, chia sẻ những khái niệm chung như phát triển lặp lại, phần mềm hoạt động, phát hành và lập kế hoạch lặp lại,các buổi họp hàng ngày, các buổi tổng kết, và tất cả các yếu tố quy trình Agile khác. Hai phương pháp này rất tương đồng đến mức khó phân biệt giữa một đội đang thực hiện XP và một đội khác đang thực hiện Scrum.

Extreme Programming

Chu kỳ Sprint
Tuy nhiên, vẫn có một số khác biệt, một số trong đó khá tinh tế, đặc biệt là trong bốn khía cạnh sau:
- Thông thường từ hai đến bốn tuần.
- Thông thường từ một đến hai tuần.
- Không cho phép thay đổi các sprint.
- Sau khi lập kế hoạch sprint đã hoàn tất và một tập hợp các danh sách công việc sản phẩmđược cam kết, những mục đó sẽ không thay đổi cho đến khi kết thúc sprint.
- Dễ thay đổi trong suốt quá trình lặp lại.
- Một khi một tính năng cụ thể chưa được bắt đầu, một tính năng mới có kích thước tương tự có thể được thay thế vào vòng lặp của đội XP thay vì tính năng chưa bắt đầu.
- Làm việc theo thứ tự ưu tiên nghiêm ngặt.
- Các tính năng cần phát triển được ưu tiên bởi khách hàng (người sở hữu sản phẩm trong Scrum)người sở hữu sản phẩm), và đội phải xử lý chúng theo thứ tự.
- Người sở hữu sản phẩm Scrum ưu tiên danh sách công việc sản phẩm, nhưng đội sẽ xác định thứ tự thực hiện các mục trong danh sách công việc.
- Mộtđội Scrumcó thể chọn làm việc trên mục quan trọng thứ hai.
- Không quy định bất kỳ thực hành kỹ thuật cụ thể nào.
- Có, XP làm vậy.
- Ví dụ: TDD, lập trình cặp, thiết kế đơn giản, refactoring, v.v.
Chúng ta có thể tóm tắt sự khác biệt giữa XP và Scrum như sau:
| Khía cạnh | Thực hành | XP | Scrum |
| Độ dài vòng lặp | Liệu yêu cầu có thể thay đổi trong suốt vòng lặp hay không | 1–2 tuần | 2–4 tuần |
| Xử lý thay đổi trong suốt vòng lặp | Yêu cầu có được sắp xếp theo thứ tự ưu tiên một cách nghiêm ngặt hay không | Có thể được thay thế bằng một yêu cầu khác có kích thước tương đương nếu chưa được thực hiện. | Scrum không cho phép điều này. Không được phép thay đổi gì sau khi sprint bắt đầu, và Người quản lý Scrum nghiêm ngặt thực hiện điều này. |
| Ưu tiên tính năng | Yêu cầu có được sắp xếp theo thứ tự ưu tiên một cách nghiêm ngặt hay không | Có | Không cần thiết |
| Các thực hành kỹ thuật | Có sử dụng các phương pháp kỹ thuật nghiêm ngặt để đảm bảo tiến độ hoặc chất lượng hay không | Rất nghiêm ngặt | Yêu cầu các nhà phát triển phải có ý thức |
Do đó, chúng tôi cho rằng cách tiếp cận của XP là chấp nhận được, nhưng nó lại tạo ra một mâu thuẫn trong Agile: kết hợp triết lý của XP với các nguyên tắc Agile gửi đi một thông điệp gây nhầm lẫn đến các đội: “Bạn là một tổ chức tự quản hoàn toàn, nhưng bạn phải thực hiện TDD, lập trình cặp, v.v.”
Rõ ràng rằng bốn điểm khác biệt này khá khác biệt:
- Trong Scrum, trọng tâm là tự tổ chức.
- Trong XP, trọng tâm là các ràng buộc về thực hành kỹ thuật mạnh mẽ.
Kết luận
Scrum là một khung phát triển sản phẩm—một container mà các thực hành khác có thể được bổ sung. XP là một trong những thực hành bạn có thể áp dụng trong khung Scrum. Không có lý do gì để một đội phải lựa chọn giữa Scrum và XP. Các quy tắc và thực hành của XP không dễ dàng, và phần lớn là không thể thương lượng. Việc tích hợp XP vào Scrum có thể là một bước tiến tự nhiên đối với một đội bắt đầu từ Scrum và nỗ lực trở thành một đội Scrum chuyên nghiệp.