- vừa được xem lúc

Cách đặt Q&A trong dự án phần mềm!

0 0 35

Người đăng: Nguyen Thi Tu Quyen

Theo Viblo Asia

Khi bạn join vào 1 dự án phát triển phần mềm, trong quá trình nghiên cứu và làm theo yêu cầu của khách hàng, chắc chắn bạn sẽ có rất nhiều câu hỏi phát sinh cần được giải đáp lý do vì:

  • thiếu hụt requirement
  • specs mô tả không thực sự rõ ràng, không chi tiết, chưa chính xác
  • bạn cần xác minh ý hiểu của mình là đúng hay sai?
  • các member trong team có những ý hiểu khác nhau.

Chính vì thế nên chúng ta cần phải tạo ra 1 file Q&A để làm tài liệu tham chiếu cho tất cả mọi người trong team cùng nhìn vế 1 hướng. Hơn thế nữa File Q&A còn là evidence trong dự án, giúp ta có thể đối chiếu với khách hàng. Thực sự file Q&A đóng vai trò rất quan trọng đúng không nào?

Vậy hôm nay mình sẽ hướng dẫn các bạn cách đặt Q&A sao cho hiệu quả nhé! 👍

I, Tổng quan về Q&A:

1. Q&A là gì?

Đầu tiên chúng ta sẽ tìm hiểu Q&A là gì nhé!

  • Q & A là viết tắt của 'Question and Answer - câu hỏi và câu trả lời'.
  • Q & A là một tình huống trong đó một người hoặc một nhóm người đặt câu hỏi và một người hoặc một nhóm người khác trả lời các câu hỏi đó. Trong lĩnh vực phần mềm, Q&A có nghĩa là tập hợp những câu hỏi và câu trả lời về requirement chưa rõ ràng hoặc thiếu hụt trong tài liệu đặc tả.

2. Ai là người được đặt Q&A?

  • Tất cả mọi người trong dự án đều tham gia đặt câu hỏi: BRSE, Comtor, Developer, QA, Supporter...

II, Các cách đặt Q&A:

Có 2 loại câu hỏi :

  • Câu hỏi đóng
  • Câu hỏi mở

1. Câu hỏi đóng ( Yes/No questions)

Câu hỏi đóng chủ yếu mang tính chất xác nhận đúng sai từ khách hàng về một vấn đề nào đó trong dự án mà bên mình chưa thực sự chắc chắn.

  • Cấu trúc : bên mình đưa ý kiến, quan điểm, vấn đề cần xác nhận để khách hàng có thể trả lời một cách ngắn gọn.
  • Ví dụ: Cách tính tuổi của user như thế nào thì đúng?
    + Dựa vào ngày tháng năm sinh và ngày tháng năm hiện tại ?
    hay
    + Chỉ dựa vào năm sinh và năm hiện tại?

2. Câu hỏi mở

Câu hỏi mở là những câu hỏi chưa có câu trả lời, đòi hỏi người được hỏi phải đưa ra các quan điểm về vấn đề được đề cập tới

Ví dụ:

  • App/ web cần được check trên môi trường nào?
  • Format file CSV để import thông tin user như thế nào?

3. Khi nào thì dùng câu hỏi mở, khi nào sẽ dùng câu hỏi đóng?

Câu hỏi mở được dùng khi :

  • Người hỏi chưa có bất kỳ thông tin, hiểu biết gì về vấn đề muốn confirm và muốn người trả lời đưa ra các thông tin gợi ý
  • Người hỏi muốn các thông tin đào sâu và chi tiết hơn.

Câu hỏi đóng được dùng khi :

  • Cần xác định lại cách hiểu của người hỏi có đúng hay chưa ?
  • Người hỏi chưa chắc chắn được phương pháp được sử dụng.
  • Trường hợp người hỏi không biết câu trả lời tuy nhiên muốn suggest khách hàng lựa chọn một trong những phương án mà họ đã làm hoặc sẽ làm tốt hơn.

4. Cách thức đặt câu hỏi

a. Về bố cục câu hỏi:

  • Xác định rõ mục đích của câu hỏi
  • Hỏi sao cho trúng và đúng thời điểm
  • Cần hạn chế từ ngữ chuyên môn sâu
  • Trong các cuộc họp, khi hỏi không nên ngắt lời người nói

b. Về nội dung câu hỏi:

  • Với câu hỏi đóng, nội dung cần rõ ràng, chính xác
  • Với câu hỏi mở nên chú ý tính liên tục, chặt chẽ của các câu hỏi
  • Trong thời gian ngắn, bạn phải xác định được câu hỏi nào là trọng tâm và câu hỏi nào là câu hỏi phụ.
  • Trong khi hỏi có thể đưa ra quan điểm riêng của mình và lắng nghe ý kiến riêng của người được hỏi.

III, Khi nào thì dùng Q&A:

Sẽ có vô vàn câu hỏi rằng:

  • Khi nào thì đặt Q&A?
  • Khi nào thì đặt Q&A nội bộ?
  • Khi nào thì đặt Q&A với khách hàng ?
  • Khi bắt đầu dự án thì nên đặt Q&A như thế nào?
  • Khi dự án đang chạy thì nên đặt Q&A như thế nào?

Chúng ta sẽ đi từng phần nhé!

1. Khi nào thì đặt Q&A?

  • Bắt đầu 1 dự án: Đây là giai đoạn phân tích tài liệu đặc tả, cần đưa ra nhiều câu hỏi với khách hàng để clear spec.

  • Khi dự án đang chạy: trong quá trình phát triển dự án
    + Change requests
    + New functions
    + Trong quá trình test phát hiện ra có issue và chưa clear/confuse

  • Khi kết thúc phrase/ kết thúc dự án: có đối ứng CR ( Change request) hay không?
    + Có: cần Q&A để clear nội dung CR, xác định mức độ rủi ro, phạm vi ảnh hưởng và tổng hợp gửi khách hàng sớm nhất có thể.

2. Khi nào thì đặt Q&A nội bộ?

  • Khi requirement chưa rõ ràng và trong nội bộ có thể giải đáp được thì sử dụng Q&A nội bộ.

4. Khi nào đặt Q&A với khách hàng?

  • Khi requirement chưa rõ ràng và trong nội bộ không thể giải đáp được thì cần confirm lại với khách hàng.
    + Tránh tình trạng những câu trong nội bộ có thể giải đáp mà lại đặt Q&A với khách hàng

5. Khi bắt đầu dự án thì nên đặt Q&A như thế nào?

  • Q&A chung cho cả dự án:
    + Thứ tự ưu tiên của các chức năng là như thế nào?
    + Môi trường test là gì (app, web, web-app), support version bao nhiêu?
    + Test trên devices nào (Android/ Ios), Browser nào (Chrome, Firefox, IE, Safari,..)?

  • Q&A riêng cho function cụ thể:
    + Khi nào thì có spec chi tiết cho function X?
    + Có Mockup/ WF/ Design cụ thể cho function X này hay không?
    + Q&A 5W1H

WHAT? WHO? WHERE?
- Chức năng này bao gồm những gì?
- Thông tin đầu vào input là gì?
- Thông tin đầu ra output là gì?
- Ai là người sử dụng tính năng này?
- Ai được quyền truy cập chức năng này?
- Functions sẽ implement ở màn hình nào?
WHY? WHEN? HOW?
- Tại sao lại cần có function này? ý nghĩa business của function là gì?
- Tại sao function X lại ảnh hưởng đến màn hình A ?
- Khi nào thì sử dụng function này? - Function X hoạt động như thế nào?

6. Khi dự án đang chạy thì nên đặt loại Q&A như thế nào?

  • Dùng Q&A mở (5W1H): khi spec của function X đã có, nhưng chưa thực sự rõ ràng.

  • Dùng Q&A mở (5W1H): khi spec của function X đã có, QA chưa nắm được, khách hàng đang băn khoăn các phương án và cần tìm hiểu technical skill.

  • Dùng Q&A đóng (Y/N question): khi spec của function X đã có, QA nắm được, nhưng khách hàng đang băn khoăn các phương án, cách thức xử lý: Cần đưa ra suggestion cho khách hàng.

  • Dùng Q&A đóng (Y/N question): khi spec của function X đã có, QA nắm được nhưng chưa chắc chắn, cần confirm lại.

Cụ thể hơn như thế nào thì chúng ta cùng xem Ví Dụ bên dưới nha.

IV, Ví dụ và Template Q&A

Download file template: https://link.sun-asterisk.vn/SAExNi

VD1. Nếu spec của chức năng đó đã có nhưng chưa thực sự rõ ràng thì ta nên đặt câu hỏi dạng mở.

(Vì nên đưa ra ý kiến cá nhân, chứng minh tôi đã đọc và hiểu hệ thống của bạn như này, nhưng có một số vấn đề chưa rõ ràng, tôi muốn hỏi lại thêm để clear và tất cả mọi người cùng nắm bắt được)

 Question: [Màn Preview CSV]: Số lượng records muốn xem trước là bao nhiêu? Có xem được hết tất cả bản ghi trong file csv đã upload không? Answer: Hiển thị: title + 10 records 

VD2. Nếu spec của chức năng đó đã cụ thể, bạn cũng đã hiểu rồi nhưng chưa chắc chắn thì nên đặt câu hỏi dạng đóng.

(Vì nên đưa ra nhận định của mình để khách hàng confirm lại là Yes hay No?)

Q: [Forgot PassWord]: Khi gửi cùng 1 email nhiều lần thì chỉ link mới nhất mới Active có đúng không? A: Đúng 

VD3. Nếu spec của chức năng đó bạn hiểu rõ rồi, nhưng phát hiện ra màn hình đó có liên kết với màn khác mà lại chưa có spec thì mình nên hỏi câu hỏi dạng đóng.

(Vì nên đưa ra nhận định cụ thể của mình để khách hàng confirm lại option nào là đúng)

Q: Ở màn 01 - 01 (Employee list) có 100 nhân viên ( 50 nhân viên/page). Vậy khi Click button Download Employee ở màn 02 -02 (Export Employee), sẽ download cả 100 nhân viên hay là 50 nhân viên thôi? A: Download 100 nhân viên. Download toàn bộ nhân viên hệ thống có. 

VD4. Khi muốn gợi ý cho KH tính năng thực sự khá cần thiết cho user hoặc gợi ý về cách làm thì hỏi dạng đóng.

(Vì nên đưa ra các option cụ thể của mình để khách hàng chọn option nào là tối ưu nhất với user, tránh lan man )

Q: Tôi muốn hỏi về trường hợp xử lý rollback khi upload file csv: 1. Khi gặp 1 dòng lỗi, đưa ra thông báo lỗi cho dòng lỗi đó và thực hiện rollback luôn. 2. Đưa ra toàn bộ thông báo lỗi và thực hiện rollback file 3. Dòng nào gặp lỗi sẽ đưa ra thông báo, dòng nào không lỗi vẫn thực hiện import vào DB, không thực hiện rollback
Với 3 phương án trên bạn sẽ chọn cách nào? A: Các bạn hãy làm theo cách 1

Trên đây là các cách đặt câu hỏi ( Q&A) khi chúng ta tham gia vào dự án phát triển phần mềm. Mình hy vọng bài viết này sẽ giúp ích cho các bạn trong công việc nhé. Chúc các bạn thành công. !!!

Bình luận

Bài viết tương tự

- vừa được xem lúc

Giới thiệu Typescript - Sự khác nhau giữa Typescript và Javascript

Typescript là gì. TypeScript là một ngôn ngữ giúp cung cấp quy mô lớn hơn so với JavaScript.

0 0 528

- vừa được xem lúc

Cài đặt WSL / WSL2 trên Windows 10 để code như trên Ubuntu

Sau vài ba năm mình chuyển qua code trên Ubuntu thì thật không thể phủ nhận rằng mình đã yêu em nó. Cá nhân mình sử dụng Ubuntu để code web thì thật là tuyệt vời.

0 0 428

- vừa được xem lúc

Đặt tên commit message sao cho "tình nghĩa anh em chắc chắn bền lâu"????

. Lời mở đầu. .

1 1 801

- vừa được xem lúc

Tìm hiểu về Resource Controller trong Laravel

Giới thiệu. Trong laravel, việc sử dụng các route post, get, group để gọi đến 1 action của Controller đã là quá quen đối với các bạn sử dụng framework này.

0 0 391

- vừa được xem lúc

Phân quyền đơn giản với package Laravel permission

Như các bạn đã biết, phân quyền trong một ứng dụng là một phần không thể thiếu trong việc phát triển phần mềm, dù đó là ứng dụng web hay là mobile. Vậy nên, hôm nay mình sẽ giới thiệu một package có thể giúp các bạn phân quyền nhanh và đơn giản trong một website được viết bằng PHP với framework là L

0 0 480

- vừa được xem lúc

Bạn đã biết các tips này khi làm việc với chuỗi trong JavaScript chưa ?

Hi xin chào các bạn, tiếp tục chuỗi chủ đề về cái thằng JavaScript này, hôm nay mình sẽ giới thiệu cho các bạn một số thủ thuật hay ho khi làm việc với chuỗi trong JavaScript có thể bạn đã hoặc chưa từng dùng. Cụ thể như nào thì hãy cùng mình tìm hiểu trong bài viết này nhé (go).

0 0 437