User story là gì? User story mẫu và nguyên tắc ứng dụng trong Agile

User Story là gì?

User Story là một tài liệu sơ giản về yêu cầu sản phẩm với góc nhìn người dùng. Thông thường, User Story do khách hàng, hoặc đại điện của khách hàng viết, tuy nhiên nếu có sự cộng tác của Các Nhà Phát triển thì nhóm và khách hàng sẽ có sự chia sẻ hiểu biết về sản phẩm tốt hơn.

Với những nhóm dùng bảng vật lý thì User Story được viết trên các thẻ nhỏ hoặc trên các miếng giấy dán. Nhóm có thể dán các thẻ này lên bảng như những hạng mục của Product Backlog.

 

User story có định dạng:

Là <người dùng cụ thể/vai trò> 

tôi muốn <làm gì đó>

để <phục vụ mục đích nào đó>

Mô hình của User Story

User story nên theo mô hình 3C:

  • Card (Thẻ): Thông thường, User Story được viết trên một thẻ nhỏ. Điều đó có nghĩa là nó thường ngắn để có thể viết trên một thẻ. Nếu bạn có viết trên một hệ thống khác như Trello, Jira, Assembla hoặc Redmine cũng nên giữ nó ngắn.
  • Conversation (Trao đổi): Story là những câu chuyện giữa khách hàng và Các Nhà  Phát triển. Do đó chi tiết của User Story được làm rõ thông qua các cuộc trao đổi (nên là trực tiếp) với khách hàng. Nội dung của User Story sẽ ngày càng cụ thể tùy thuộc vào độ ưu tiên của nó (nếu ưu tiên cao, cần làm sớm thì sẽ có nội dung chi tiết, nếu ưu tiên thấp thì chỉ chứa nội dung chung).
  • Confirmation (Xác nhận): User Story có tiêu chí chấp nhận (Acceptance Criteria) để khách hàng suy nghĩ cụ thể về yêu cầu và các Nhà Phát triển có thể hiểu yêu cầu rõ hơn và xác nhận được khi nào sản phẩm hoàn thành.

Ai là người làm ra User Story?

Product Owner là người quản lý tất cả các User Story nhưng không phải là người viết toàn bộ User Story. Các Nhà Phát triển đều có thể tham gia vào việc viết User Story. Các Nhà Phát triển đóng vai trò quan trọng trong việc mô tả các tính năng của sản phẩm.

Trong trường hợp lý tưởng nhất, người dùng thực sự của sản phẩm sẽ tham gia viết User Story. 

Trong những trường hợp khác, Product Owner có thể đại diện cho người dùng, nhưng phải luôn viết User Story với vai trò của người dùng, không phải với vai trò của Product Owner.

Các tiêu chí của User Story

Tiêu chí INVEST cụ thể:

  • Independent (Độc lập): Độc lập với các User Story khác. Điều này giúp Product Owner tự do thay đổi thứ tự của nó trong Product BacklogNhóm Phát triển dễ dàng phát triển.
  • Negotiable (Thương lượng được): Tính đàm phán được giúp cho Nhóm Phát triểnProduct Owner cùng nhau xây dựng nội dung chi tiết và phù hợp hơn cho những thay đổi trong tương lai. Nếu không có tính năng này thì việc thích nghi với sự thay đổi gặp khó khăn.
  • Valuable (Có giá trị): User Story phải có giá trị với khách hàng. Những người làm kỹ thuật có thể thấy việc làm khung làm việc, cơ sở dữ liệu hoặc thiết kế là quan trọng. Tuy nhiên với khách hàng thì không. Điều này rất lưu ý với những Product Owner có nền tảng kỹ thuật, có thể họ sẽ biết Agile thành một mô hình phát triển Waterfall trá hình!
  • Estimable (Ước lượng được): Một User Story tốt có thể ước lượng được mặc dù không cần chính xác. Những User Story lớn hoặc không rõ ràng thường khó để ước lượng. Khả năng ước tính được giúp nhóm ước lượng tốt hơn công việc sẽ làm và cả kế hoạch phát hành. Rõ ràng điều này phụ thuộc vào khả năng của nhóm.
  • Sized appropriately (Kích thước phù hợp): Những User Story sắp được đưa vào sản xuất cần có kích thước nhỏ (đồng nghĩa với việc được mô tả rõ ràng hơn), những User Story chưa được đưa vào sản xuất trước mắt có thể có kích thước lớn hơn.
  • Testable (Kiểm thử được): Nếu nhóm phát triển biết như thế nào là User Story đó hoàn thành – có thể kiểm thử được rõ ràng thì họ có thể hiểu rõ hơn công việc của mình, ít gây hiểu nhầm. Các mô hình phát triển BDD hoặc ATDD có giá trị vì yêu cầu có thể kiểm thử được.

Khi nào thì cần viết User Story?

Hoạt động viết User Story diễn ra trong suốt quá trình phát triển dự án, có nghĩa là bất cứ lúc nào các thành viên cũng có thể thêm vào các User Story mới. 

Việc này thường được tiến hành thông qua tổ chức một buổi viết User Story (User Story Writing Workshop). Ở đó, tất cả các thành viên đều tham gia tạo ra các User Story cơ bản, đủ để sản xuất trong một thời gian. Có thể có các User Story lớn, chúng ta sẽ sẽ được làm mịn hơn song song với quá trình phát triển thông qua hoạt động làm mịn Product Backlog.

Ví dụ cụ thể về User Story

Là một người học trực tuyến, tôi muốn thấy danh sách các khóa học ưu thích của mình để dễ dàng truy cập.

Trong ví dụ trên, user story có 3 phần tách biệt:

 Là <một người học trực tuyến>

Tôi muốn < thấy danh sách các khóa học ưu thích của mình>

Để <dễ dàng truy cập>

Người dùng ở đây được chỉ ra rõ ràng là người học trên môi trường học tập trực tuyến, không phải là người quản lý, cũng không phải là người học trực tiếp.

Người dùng này muốn nhìn thấy danh sách các khóa học ưu thích của mình. Danh sách này chỉ bao gồm những khóa học mà học giả quan tâm nhất trong rất nhiều những khóa học mà mình đã từng học. 

Mục đích của việc có danh sách này là để dễ dàng truy cập khi cần đến. 

Từ việc miêu tả nhu cầu của khách hàng, các thành viên phát triển làm rõ tiêu chí chấp nhận với product owner và sau đó sẽ cùng nhau phân tích chi tiết giao diện, mã, thêm bảng dữ liệu, tương tác dữ liệu,…để thực thi một cách hiệu quả.