XP Terms – Extreme Programming trong PMI-ACP

Extreme Programming (XP) – phương pháp Agile đậm chất kỹ thuật cho dự án phần mềm, tập trung vào feedback nhanh và thực hành lập trình tốt.
Ngôn ngữ • Language
- VI
- EN
XP Terms – Extreme Programming “dịch” sang ngôn ngữ đời sống
💡 Bài này dành cho ai?
- Bạn xuất thân từ project management / business và thấy XP toàn thuật ngữ kỹ thuật.
- Bạn là developer nhưng muốn hiểu XP dưới góc độ PMI-ACP chứ không chỉ là “coding style”.
- Bạn muốn phân biệt XP với Scrum: giống nhau ở đâu, khác nhau ở đâu, đi thi bị gài kiểu gì.
TL;DR – Extreme Programming (XP) trong 1 phút
- Extreme Programming (XP) = một phương pháp Agile tập trung vào phát triển phần mềm với các thực hành kỹ thuật cụ thể.
- XP có:
- Core values: Communication, Feedback, Simplicity, Respect, Courage (bạn có thể thấy thứ tự khác nhau tuỳ tài liệu, nhưng “đúng bộ 5” là quan trọng nhất).
- Roles: Customer (On-site Customer), Programmer, Tester, XP Coach.
- Practices nổi bật: Small Releases, Simple Design, Pair Programming, Test-Driven Development (TDD), Refactoring, Continuous Integration, Collective Code Ownership, Coding Standards, Sustainable Pace, Customer/Acceptance Tests.
- So với Scrum:
- Scrum thiên về quản lý công việc & feedback ở cấp đội/sản phẩm.
- XP thiên về cách code & cách tổ chức kỹ thuật để giữ chất lượng cao.
- Trong PMI-ACP, XP thường xuất hiện ở:
- Câu hỏi về engineering practices, technical excellence, team collaboration trong phát triển phần mềm.
Gợi ý cách học:
- Đọc mục 1 để hiểu XP dùng khi nào, khác gì Scrum – đặc biệt chú ý phần Scrum + XP combo.
- Nắm vững 5 XP values và các role tương đương Scrum.
- Học thuộc “mặt chữ” các XP practices (pair programming, TDD, CI...) cho phần mini-mock & đề thi.
- XP là gì? Dùng lúc nào?
1.1. Định nghĩa ngắn gọn
- Extreme Programming (XP) là một phương pháp Agile, ban đầu thiết kế cho phát triển phần mềm.
- Mục tiêu chính:
- Nâng chất lượng phần mềm thông qua thực hành kỹ thuật tốt.
- Đáp ứng thay đổi yêu cầu bằng feedback nhanh & liên tục giữa team và khách hàng.
Ví dụ dễ hình dung:
- Nếu Scrum là cách bạn tổ chức việc và họp (Sprint, Daily Scrum, Review, Retro),
- Thì XP là bộ “thói quen code” và “cách làm kỹ thuật”:
- code chung 2 người (pair programming),
- viết test trước khi code (TDD),
- tích hợp thường xuyên (CI),
- refactor liên tục để code luôn sạch.
1.2. XP vs Scrum – giống và khác
Điểm giống (đều là Agile methods):
- Làm việc theo iterative & incremental.
- Đề cao feedback sớm, khách hàng tham gia thường xuyên, team tự tổ chức.
- Nhấn mạnh giảm lãng phí, tập trung vào giá trị khách hàng.
Điểm khác (để nhớ khi đi thi):
- Scrum:
- Dùng được cho nhiều loại sản phẩm, không chỉ phần mềm (dịch vụ, marketing campaign, thiết kế tòa nhà, v.v.).
- Tập trung vào framework quản lý: roles, events, artifacts.
- XP:
- Gần như chỉ dùng trong phát triển phần mềm (programming đã nằm trong tên).
- Tập trung vào thực hành kỹ thuật & coding practices.
Nếu đề hỏi về pair programming, TDD, continuous integration, refactoring... → gần như chắc đang nói về XP / technical practices, không phải “Scrum thuần”.
1.3. Scrum + XP combo trong thực tế
Trong thực tế, rất nhiều team dùng:
- Scrum để:
- Quản lý công việc: Sprint, Product Backlog, Sprint Review, Retrospective.
- Đảm bảo cadence họp & feedback với business.
- XP để:
- Nâng technical excellence: TDD, CI, refactoring, pair programming, coding standards, acceptance tests.
- Giữ codebase sạch, dễ maintain, ít bug.
Pattern hay gặp trong đề:
- Hỏi: “Scrum team muốn nâng chất lượng kỹ thuật, nên làm gì?”
→ Đáp án thường là: bổ sung XP practices (TDD, CI, refactoring, pair programming…),
chứ không phải thêm họp hay tăng giờ OT.
- XP core values – 5 “tính cách” chính của Extreme Programming
XP có 5 giá trị cốt lõi (core values). Nắm 5 giá trị này sẽ giúp bạn đoán được tinh thần của các practice phía sau.
Lưu ý nhỏ: bạn có thể gặp tài liệu ghi thứ tự khác nhau (hoặc tài liệu cũ chỉ nhắc 4 values). Khi đi thi, ưu tiên nhớ đúng bộ 5 và hiểu ý nghĩa.
2.1. Simplicity – Đơn giản
- Tập trung làm “the simplest thing that could possibly work” – thứ đơn giản nhất có thể chạy được và tạo giá trị cho khách hàng.
- Tránh:
- Over-engineering (thiết kế quá phức tạp).
- Extra features mà không ai dùng → lãng phí.
Ví dụ đời thường:
- Làm app nội bộ chỉ cần báo cáo ngày/tuần/tháng:
- Nếu bạn thêm 10 kiểu chart, 7 dashboard nhưng team chỉ dùng 1 kiểu → phần lớn là lãng phí.
- XP khuyến khích:
- Bắt đầu với “phiên bản đủ dùng”, sau đó refactor & mở rộng khi thật sự có nhu cầu.
2.2. Communication – Giao tiếp
- Team cần nói chuyện thường xuyên, rõ ràng, không “mạnh ai nấy làm”.
- XP khuyến khích:
- Daily communication (thường là daily standup tương tự Scrum).
- Pair programming → 2 người cùng nhìn vào một vấn đề, trao đổi liên tục.
Ví dụ:
- Thay vì mỗi dev ôm một module, XP thích:
- 2 người cùng ngồi 1 máy, bàn cùng một đoạn code, cùng hiểu chung hệ thống.
2.3. Feedback – Phản hồi sớm
-
Lấy feedback từ:
- Khách hàng (Customer / On-site Customer).
- Tests (unit test, customer/acceptance test).
- Pair programming / reviews.
-
Mục tiêu:
- “Fail fast, learn fast” – nếu sai thì biết sớm để sửa rẻ & nhẹ.
Ví dụ:
- Thay vì đợi xong nguyên hệ thống rồi mới test,
- XP viết test sớm, chạy test liên tục mỗi lần build → sai là thấy ngay.
2.4. Courage – Can đảm
- Can đảm nhìn thẳng vào vấn đề, sẵn sàng thay đổi thiết kế khi biết mình đang sai.
- Can đảm:
- Refactor code cũ khi nó cồng kềnh.
- Viết test cho phần code “dơ” trước khi đụng tay.
- Thừa nhận “mình chưa hiểu chỗ này” với team.
Hình ảnh dễ nhớ:
- Công khai code cho cả team xem (collective code ownership) → cần nhiều courage:
- code không còn “giấu trong góc”.
- ai cũng có thể chỉnh sửa, comment, improve.
2.5. Respect – Tôn trọng
- Tôn trọng cách làm việc khác nhau của từng người.
- Cùng chia sẻ trách nhiệm về thành công/thất bại của dự án.
- Mọi người trong team đều quan trọng:
- Customer, Programmer, Tester, Coach…
Trong nhiều tài liệu quản lý truyền thống, người ta hay nói “accountability không thể chia sẻ”.
Trong XP, ta muốn ai cũng cảm thấy mình có trách nhiệm – vì cả team là một đơn vị (unit).
- XP roles – map sang Scrum roles cho dễ nhớ
XP có một số vai trò chính. Để dễ học PMI-ACP, ta đặt cạnh Scrum để so sánh.
3.1. XP Coach
- Vai trò:
- Hướng dẫn team áp dụng XP values & practices.
- Làm servant leader: hỗ trợ, gỡ vướng, facilitate hơn là ra lệnh.
- Giữ cho team “đúng XP”: pair programming, TDD, CI, refactoring…
So sánh với Scrum:
- XP Coach ≈ Scrum Master (coach/servant leader):
- Cùng là người đỡ đầu cho Agile mindset, giúp team tự tổ chức, bảo vệ team khỏi “nhiễu bên ngoài”.
3.2. Customer / On-site Customer
- Trong XP thường gọi là Customer hay On-site Customer:
- Người đại diện cho business, mang yêu cầu & ưu tiên (priorities).
- Làm việc sát với team, lý tưởng là ngồi cùng chỗ hoặc luôn sẵn sàng để trao đổi.
- Tham gia viết user stories và customer/acceptance tests.
So sánh với Scrum:
- Customer / On-site Customer ≈ Product Owner:
- Cùng là người định hướng sản phẩm và ưu tiên.