Skip to main content

XP Practices

Ngôn ngữ • Language

XP Practices – “thói quen làm việc” của team XP

XP mạnh nhất ở chỗ: nó không chỉ nói “làm theo Agile”, mà nói thẳng team nên làm gì mỗi ngày để giữ chất lượng kỹ thuật cao.

TL;DR – XP Practices trong 1 phút
  • XP practices thường xoay quanh 2 nhóm:
    • Planning & collaboration: Planning Game (Release Planning + Iteration Planning), Small Releases, On-site Customer (Whole Team), Customer/Acceptance Tests.
    • Technical excellence: Continuous Integration (CI), Test-Driven Development (TDD), Pair Programming, Simple Design, Refactoring, Coding Standards, Collective Code Ownership, Sustainable Pace (40-hour week), System Metaphor.
  • PMI-ACP hay gài theo kiểu:
    • “Bỏ test/CI để chạy deadline” → ngược XP.
    • “Chỉ một người được sửa module” → ngược collective ownership.
    • “OT triền miên” → ngược sustainable pace.
Lối tắt:ECO 2025 · 4 domain
Bạn đang học để thi PMI-ACP?

Khi gặp câu hỏi nói về engineering practices / technical excellence, hãy nghĩ ngay đến XP: TDD, CI, refactoring, pair programming, coding standards, collective code ownership, acceptance tests, sustainable pace (40-hour week), on-site customer/whole team.



  1. XP practices là gì?

XP practices là những “việc team XP làm thường xuyên” để:

  • giữ chất lượng phần mềm cao, và
  • nhận feedback sớm (từ customer và từ test),
  • giảm rủi ro “làm xong mới biết sai”.

Nói vui cho dễ nhớ:

  • Scrum giống “lịch sinh hoạt & cách quản việc” của team (Sprint, Daily, Review, Retro).
  • XP giống “bộ thói quen kỹ thuật” để code sạch, ít lỗi, dễ nâng cấp.

  1. Planning Game – XP gọi planning là “game”

Trong XP, “planning activities” đôi khi được gọi là games (Planning Game). Bạn có thể coi nó gồm 2 lớp:

2.1 Release Planning (lập kế hoạch phát hành)

  • Release = thứ “đưa tới tay người dùng” (installable/usable).
  • Release Planning = quyết định:
    • release tới sẽ gồm những tính năng nào,
    • cần bao nhiêu iteration để ra được một bản release đủ dùng.

Điểm hay gặp trong đề (và cần nói “chuẩn PMI” cho an toàn):

  • Kết thúc mỗi iteration nên tạo ra working software / usable increment (demo được, chạy được, có thể đưa lên staging).
  • Business có thể chưa chọn deploy production ngay (ví dụ: timing thị trường, kiểm soát rủi ro, hoặc gom đủ “mảnh” để release có ý nghĩa).
  • Vì vậy, release planning thường bàn: “muốn ship một release có ý nghĩa với user thì cần bao nhiêu iteration/increment.”

Vai trò quyết định “cái gì vào release” là ai?

  • Trong XP: Customer / On-site Customer quyết định ưu tiên theo nhu cầu business.
  • Team dev cung cấp ước lượng và trao đổi về khả năng thực hiện.

Ví dụ đời thường:

  • Làm hệ thống “invoices + payments”:
    • Chỉ có “danh sách khách hàng” → chưa đủ dùng.
    • Có “tạo hoá đơn” → vẫn chưa đủ dùng.
    • Có “thu tiền” → tốt hơn.
    • Nhưng business nói “phải có thanh toán thẻ tín dụng” mới gọi là “release có ý nghĩa”. => Release Planning là lúc customer nói: “Muốn release được, phải đủ các mảnh này.”

2.2 Iteration Planning (lập kế hoạch cho 1 vòng lặp)

  • Trong XP: Iteration thường tương đương ý nghĩa với Sprint trong Scrum.
  • Một iteration thường là timebox ngắn (hay gặp 1–2 tuần; một số team dùng dài hơn, tối đa khoảng vài tuần).

Iteration Planning tương tự Sprint Planning:

  • Customer giải thích “iteration này muốn deliver cái gì”.
  • Developers chia nhỏ thành tasks, ước lượng thời gian/effort.
  • Team dự báo phạm vi dựa trên dữ liệu đã làm được trước đó (velocity/throughput).

Ví dụ dễ hình dung:

  • Hỏi thợ sơn “sơn phòng này mất bao lâu?”
    → họ dựa vào “phòng tương tự trước đây sơn mất bao lâu”.
  • Team Agile cũng vậy: dựa vào dữ liệu iteration trước để biết iteration này “ôm được bao nhiêu”.

  1. Small Releases – release nhỏ, thường xuyên (thậm chí lên test environment)

Small Releases = ra phiên bản nhỏ, đều đặn, để:

  • tăng visibility cho customer,
  • nhận feedback sớm,
  • giảm rủi ro “đợi cuối mới kiểm”.

Lưu ý thực tế/đề thi hay gài:

  • “release nhỏ” không bắt buộc nghĩa là “đẩy thẳng production”.
  • Nhiều team XP đẩy bản nhỏ lên test/staging environment trước để chạy test kỹ, cho customer dùng thử, rồi mới production.

Kết quả:

  • progress rõ ràng hơn,
  • chất lượng được giữ nhờ test chặt,
  • customer “sờ được” sản phẩm sớm.

  1. Customer / Acceptance Tests – “test đúng nghĩa phải do người dùng định nghĩa”

Customer Tests (hiểu như acceptance tests theo góc nhìn business):

  • Customer mô tả một hoặc vài bài test để chứng minh “phần mềm đáp ứng yêu cầu”.
  • Team biến nó thành test có thể chạy được, lý tưởng là tự động hoá.

Để “bắt keyword” chắc hơn cho PMI-ACP, nhớ 2 tầng test hay bị hỏi lẫn:

  • Unit Tests (dev-centric): bảo vệ logic nhỏ, hỗ trợ TDD, giúp refactor không sợ “gãy”.
  • Acceptance/Customer Tests (business-centric): chứng minh “đúng nhu cầu”, thường là end-to-end theo luồng nghiệp vụ.

Vì sao customer phải là người “định nghĩa test quan trọng”?

  • Dev giỏi đến đâu vẫn có thể làm “đúng kỹ thuật” nhưng không đúng nhu cầu.
  • Người dùng/business mới biết “thế nào là dùng được”.

Ví dụ:

  • Customer nói: “Tôi muốn test theo luồng: tạo hoá đơn → gửi hoá đơn → nhận thanh toán thẻ ngay.”
  • Team sẽ tìm cách automate/verify luồng đó.

4.1 On-site Customer / Whole Team – XP “kéo customer lại gần team”

On-site Customer (thường đi kèm tinh thần Whole Team) nghĩa là:

  • đại diện business/customer luôn sẵn sàng trả lời câu hỏi, làm rõ yêu cầu, ưu tiên, tiêu chí chấp nhận.
  • Mục tiêu: giảm “đợi phản hồi 3 ngày”, giảm hiểu sai → giảm rework.

Lưu ý “phiên bản hiện đại” (team phân tán):

  • “On-site” không nhất thiết là ngồi cùng phòng. Có thể là customer proxy/PO luôn available qua chat/call trong giờ làm để team hỏi là có câu trả lời nhanh.

Nói đời thường:

  • Bạn xây nhà mà chủ nhà không bao giờ nghe máy thì thợ phải “đoán ý” → dễ sửa đi sửa lại.
  • On-site customer giúp team hỏi là có câu trả lời nhanh, làm đúng ngay từ đầu.
Mẹo thi PMI-ACP

Nếu câu hỏi nhấn mạnh “đảm bảo đúng nhu cầu người dùng” + “đo bằng điều kiện chấp nhận” → nghĩ đến acceptance/customer testson-site customer/whole team.


  1. Collective Ownership • Coding Standards • Sustainable Pace

5.1 Collective Code Ownership (ai cũng “có quyền” sửa code)

Collective Code Ownership nghĩa là:

  • Bất kỳ cặp dev nào cũng có thể sửa phần code nào đó khi cần.
  • Không có “đây là code của Bob, cấm ai đụng”.

Lợi ích:

  • nhiều người nhìn → ít lỗi hơn,
  • chia sẻ kiến thức → giảm rủi ro khi một dev nghỉ/điều chuyển,
  • tránh “kẹt cổ chai” do một người giữ kiến thức.

5.2 Coding Standards (Agile không có nghĩa là “code bừa”)

Coding Standards giúp:

  • code nhìn như “một người viết”,
  • dễ đọc, dễ review, dễ maintain,
  • phù hợp với collective ownership (ai cũng sửa được vì code thống nhất).

5.3 Sustainable Pace (nhịp độ bền vững) = “40-hour week” trong XP classic

Sustainable Pace nhấn mạnh:

  • đôi khi OT ngắn hạn có thể xảy ra,
  • nhưng OT lặp lại dài hạn là không bền (burnout, bug tăng, chất lượng giảm).

Trong XP “cổ điển”, bạn sẽ gặp từ khoá 40-hour week — ý chính vẫn là:

  • làm việc theo nhịp độ bền vững,
  • không lấy “heroic overtime” làm chiến lược.

PMI-ACP rất thích tinh thần:

  • tối ưu giá trị dài hạn,
  • không đánh đổi chất lượng bằng kiệt sức.

  1. System Metaphor – dùng ẩn dụ để team “nhìn cùng một thứ”

Metaphor trong XP là:

  • một cách mô tả hệ thống bằng hình ảnh/ẩn dụ dễ hiểu
  • để customer và dev cùng “đồng bộ” cách hiểu.

Ví dụ:

  • “Module hoá đơn giống như một nhân viên kế toán công nợ (accounts receivable) – nhiệm vụ là đảm bảo tiền được thu về.”

Vì sao nó hữu ích?

  • Vấn đề khó nhất của dự án thường là: customer tưởng một kiểu, dev hiểu một kiểu.
  • Metaphor giúp giảm “lệch pha”, tạo ngôn ngữ chung.

Ghi chú “PMI-safe”:

  • Đây là practice kiểu classic XP; nhiều team hiện đại dùng domain language / ubiquitous language (ngôn ngữ chung của nghiệp vụ) để đạt mục tiêu tương tự.

  1. CI • TDD • Pair Programming – bộ 3 hay gặp nhất trong đề

7.1 Continuous Integration (CI)

Continuous Integration = tích hợp code thường xuyên vào mainline và kiểm tra liên tục:

  • build + chạy test tự động,
  • lỗi lòi ra sớm trước khi “đắp thêm tầng”.

Lý do:

  • code mới có thể vô tình làm “gãy” code cũ (bug, crash, regression).
  • CI giúp phát hiện sớm, sửa rẻ.

7.2 Test-Driven Development (TDD)

TDD = viết test trước, rồi viết code để pass test. Cách phổ biến: Red → Green → Refactor.

Nghe “lạ” nhưng dễ hiểu bằng ví dụ học thi:

  • Bạn làm đề thử trước để biết “đề hay hỏi gì”.
  • Rồi bạn học vào đúng chỗ để làm được đề.
  • Kết quả: học có mục tiêu, ít lan man.

7.3 Pair Programming (pair code) — 2 người code 1 việc, nhưng không phải “2 người làm 1 việc cho vui”

Pair Programming = 2 dev cùng làm một story/task trên cùng một “luồng suy nghĩ”:

  • Driver: người gõ code, xử lý chi tiết ngay trước mắt.
  • Navigator: người quan sát, soi lỗi, nghĩ hướng tổng thể (logic, edge cases, thiết kế, test, naming).

Nói đời thường: Driver là “tay lái”, Navigator là “người ngồi bên nhắc đường + nhắc coi chừng ổ gà”.

Vì sao XP thích pair code?

  • Review real-time: lỗi nhỏ được bắt ngay, khỏi đợi PR mới thấy.
  • Chia sẻ kiến thức nhanh: codebase không bị “một người một cõi” → hỗ trợ Collective Ownership.
  • Chất lượng ổn định hơn: ít bug, ít rework → về lâu dài thường nhanh hơn dù nhìn bề ngoài “tốn 2 người”.

Làm pair code kiểu “chuẩn XP” (rất hay lên đề)

  • Luân phiên vai trò (driver ↔ navigator) mỗi 15–30 phút, hoặc khi chuyển đoạn việc.
  • Navigator không ngồi im: phải actively review, nghĩ test cases, hỏi “nếu user làm X thì sao?”.
  • Ưu tiên pair khi:
    • code rủi ro cao (payment, security),
    • module khó,
    • onboarding người mới,
    • bug “lặp đi lặp lại” khó trị.

Anti-pattern (bẫy PMI-ACP hay gài)

  • “Pair programming = 2 người cùng gõ vào 2 máy” → sai. (đó là 2 người làm 2 việc)
  • “Navigator chỉ ngồi xem TikTok chờ driver code xong” → sai.
  • “Cấm pair vì tốn người, cứ làm nhanh rồi test sau” → thường ngược XP (tăng bug, tăng chi phí sửa).
  • “Pair 8 tiếng/ngày mọi lúc” → cực đoan; XP khuyến khích dùng đúng chỗ, vẫn phải giữ Sustainable Pace.
Mẹo thi PMI-ACP

Thấy bối cảnh “nhiều defect”, “knowledge silo”, “code review quá muộn”, “junior lên dự án” → đáp án thường nghiêng về Pair Programming + Coding Standards + Collective Ownership + CI/TDD (tổ hợp nâng chất lượng).


  1. Simple Design • Refactoring – giữ code “sạch và đủ dùng”

8.1 Simple Design

Simple Design nhấn mạnh:

  • làm cái đơn giản nhất có thể chạy và tạo giá trị,
  • code nên testable, readable, explainable.

Câu thần chú:

  • “Do the simplest thing that could possibly work.”

8.2 Refactoring

Refactoring là “dọn code” một cách có kỷ luật:

  • bỏ trùng lặp,
  • xoá phần không dùng,
  • cải thiện thiết kế,
  • giữ code sạch theo thời gian.

Nói nôm na:

  • càng code lâu càng dễ sinh “rác” (đoạn thừa, comment thừa, logic rối).
  • refactor là lúc mình “lau nhà” để về sau sửa nhanh hơn và ít bug hơn.

9) Practice → Intent → Exam keywords (bảng nhồi nhanh)

Practice (XP)Intent (ý nghĩa)Exam keywords hay gặp
Planning GameAlign scope + estimatesrelease planning, iteration planning, customer prioritization
Small ReleasesFeedback sớm, giảm rủi ro big-bangfrequent release, staging, early feedback
On-site Customer / Whole TeamGiảm lệch pha, hỏi-đáp nhanhon-site customer, collaboration, shared understanding
Customer/Acceptance Tests“Working” theo góc nhìn businessacceptance criteria, E2E, customer tests
CITích hợp + test liên tụcintegrate often, automated build/test
TDDTest trước để dẫn đường codered-green-refactor, unit tests
Pair ProgrammingReview real-time + chia sẻ kiến thứcdriver/navigator, rotate roles, real-time review
RefactoringGiữ code sạch lâu dàiclean code, remove duplication
Coding StandardsCode thống nhất, dễ sửaconsistency, readability
Collective OwnershipKhông độc quyền codeshared codebase, no single owner
Sustainable Pace (40-hour week)Bền vững, tránh burnoutno chronic overtime, burnout
System MetaphorNgôn ngữ chung cho hệ thốngshared story, align understanding

  1. Exam patterns & traps – bẫy XP trong PMI-ACP

Bẫy hay gặp
  • “Bỏ test/CI để chạy deadline” → ngược XP (giảm chất lượng, tăng rủi ro).
  • “Chỉ một người được sửa module để giữ accountability” → ngược collective ownership.
  • “Cấm pair programming vì tốn 2 người” → bỏ mất lợi ích chất lượng & shared knowledge.
  • “OT 60–70h/tuần nhiều tháng” → ngược sustainable pace (40-hour week).
  • “Customer chỉ họp lúc kickoff, còn lại dev tự đoán” → ngược on-site customer/whole team.

11) Checklist học nhanh

Checklist – XP Practices (VI)

Tiến độ: 0/8 (0%)

Mini-mock – XP Practices

Loading questions…
Exam key takeaways – XP Practices (VI)
  • XP = tập hợp thực hành cụ thể để giữ technical excellencefeedback sớm.
  • Thấy Planning Game, Small Releases, On-site Customer/Whole Team, Customer Tests, CI, TDD, Pair Programming, Refactoring, Collective Ownership, Sustainable Pace (40-hour week) → gần như chắc là XP.
  • Đề PMI-ACP hay gài bằng các “anti-pattern”: bỏ test/CI, OT triền miên, độc quyền code, customer “biến mất”.

Liên hệ & cập nhật

Không spam. Bạn có thể huỷ đăng ký bất cứ lúc nào.