↓ Chuyển đến nội dung chính
Scope creep trong dự án phần mềm
  1. Bài viết/

Scope creep, chuyện kinh điển và cách sống sót

Đặng Đức Quân
Tác giả
Đặng Đức Quân
Chuyện nghề BA trong lĩnh vực sản xuất. Viết cho mình, và cho cả những ai đang muốn dấn thân vào con đường này.

Cập nhật lần cuối:

Hợp đồng ghi đúng ba chữ “module mua hàng”, nghe thì rõ, nhưng module mua hàng 5 input với module mua hàng 15 input là hai thứ rất khác nhau, mà hợp đồng thì không nói là cái nào.

Đây là chuyện mình gặp thật. Phạm vi không được ghi rõ nên change request cứ tới liên tục, scope cứ thế phình ra, và mình không có cách nào từ chối khách, vì chẳng có tờ giấy nào nói cái gì nằm ngoài phạm vi. Scope creep, cái thuật ngữ nghe rất chuyên nghiệp ấy, thực chất là chuyện những cái “thêm tí nữa” không bao giờ dừng, và nó không chỉ là vấn đề của BA mà của cả team, cả dự án, cả cái deadline.

scope creep có phải lỗi của ai không
#

Phản xạ đầu tiên thường là đổ lỗi, cho khách không biết mình muốn gì, cho PM nhận bừa, cho dev không phản biện sớm. Nhìn lại chuyện “module mua hàng” ở trên thì theo mình gốc nằm ở chỗ khác, phạm vi không được viết ra đủ rõ ngay từ đầu. Khách đòi thêm là chuyện bình thường của một dự án đang sống, cái không bình thường là chẳng có gì để đối chiếu. Vấn đề là mình có thấy nó từ xa không, và có plan để xử lý hay cứ để nó cuốn đi. Bài BA mới vào nghề: 5 cú sốc không ai nói trước cũng có nhắc, requirement thay đổi mỗi ngày là chuyện cơm bữa.

mấy câu nghe là biết scope sắp phình
#

“Cái này nhỏ thôi, một tiếng là xong.” Câu nguy hiểm nhất làng IT, vì chẳng có gì nhỏ một khi nó chạm vào logic nghiệp vụ.

“Làm luôn cái này, đằng nào cũng đang sửa.” Một cái nhỏ ghép với mấy cái nhỏ khác, thành một cục to không ai lường trước.

“Hồi sáng em mới nghĩ ra, hay quá anh ơi.” Ý tưởng mới lúc nào cũng có vẻ hay, câu hỏi là cái hay đó có đáng để trễ deadline không.

“Khách hàng bảo thêm, không làm mất lòng.” Sợ mất lòng khách là cái bẫy lớn nhất của BA mới, mà không có scope rõ thì nỗi sợ này càng to, vì bạn chẳng có căn cứ nào để nói không.

“BA ơi, cái này giống cái kia, copy qua sửa tí thôi.” Nếu đã giống thì sao lúc elicitation không ai nói? Vì nó không giống.

cách xử lý
#

Không có công thức thần kỳ nào, đây là những gì mình làm khi có change request, cộng thêm vài điều theo mình nên làm sớm hơn.

Đầu tiên là chốt scope baseline rõ ràng trước khi build, một thứ mà cả hai bên cùng nhìn vào và gật đầu đây là scope, không cần document 50 trang, có thể là một cái bảng, một file spreadsheet, thậm chí một cái email, nhưng phải có. Bài 3 nguyên tắc sống còn để lấy yêu cầu hiệu quả nói kỹ chuyện này.

Rồi tách must-have với nice-to-have, ai bảo thêm cái này nữa thì câu đầu tiên không phải có làm được không, mà là có cần cho go-live không, không cần thì cho vào v2.

Change request phải đi đúng đường. Cách mình làm là ghi nhận yêu cầu, đánh giá impact, nhờ dev estimate, rồi báo cáo sếp để quyết, không có bước nào tên là gật đầu trong cuộc họp. Câu thần chú là “để em xem tác động rồi trả lời anh”, vừa cho mình thời gian đánh giá, vừa cho họ thấy mình không phải cái máy gật đầu.

Và change request nào cũng phải kèm trade-off, kiểu làm cái này thì release trễ X tuần, anh chị chọn thế nào, ai cũng có quyền đổi scope, nhưng phải chịu hậu quả của nó.

không phải lúc nào creep cũng xấu
#

Đôi khi cái “thêm tí nữa” lại làm lộ ra một requirement thật mà elicitation bỏ sót. Giả sử khách đòi thêm một cột kiểm tra hạn thanh toán ở màn hình mua hàng, nghe như thêm việc, nhưng thiếu nó thì kế toán phải dò tay mỗi cuối tháng, cái đó đáng làm. Chỗ khó là phân biệt đâu là khám phá giá trị và đâu là thiếu chuẩn bị, cái thêm giải quyết một pain point thật chưa ai nghĩ tới thì là discovery value, còn nó vốn nằm sẵn trong requirement từ đầu mà không ai đọc thì là thiếu chuẩn bị.

Với mình, lúc nên nói không với khách hay với sếp khá rõ, là khi yêu cầu nằm ngoài scope, nhưng muốn nói được câu đó thì scope phải được viết ra trước, đủ chi tiết để “module mua hàng” không còn hiểu sao cũng được. Thế nên việc đáng làm nhất lại nằm ở đầu dự án, đọc kỹ hợp đồng, hỏi cho ra phạm vi chi tiết, rồi ghi lại. Scope không rõ thì nói không cũng chẳng ai nghe.

Bạn từng bị scope creep hành thế nào, và có mẹo gì hay để đỡ câu “cái này nhỏ thôi” chưa?

Bài viết liên quan

"em ơi, làm giống Excel cũ nhé": cơn ác mộng của BA

Giả sử bạn đang họp với một anh trưởng phòng, anh ấy mở ra cái file Excel đã dùng nhiều năm, ô xanh ô đỏ loạn xạ, VLOOKUP chồng lên VLOOKUP, rồi nhẹ nhàng bảo “em ơi, làm giống cái này nhé, đơn giản thôi”. Bạn cười, trong lòng thì không cười nổi. Chưa nghe câu đó bao giờ thì chắc bạn chưa làm BA cho dự án chuyển đổi số ở Việt Nam, còn nghe rồi thì chắc bạn hiểu cái cảm giác vừa buồn cười vừa bất lực ấy.

BA mới vào nghề: 5 cú sốc không ai nói trước

Khách nói họ cần cả một đống màn hình quản lý ở nhiều module, mình hì hục đào mãi mới vỡ ra là thứ họ thật sự cần chỉ là một cái dashboard. Sốc nhẹ. Đó là một trong những cú sốc đầu tiên của mình với nghề BA, và nó chẳng có trong giáo trình nào mình từng đọc. Bài này gom lại mấy cú sốc mà BA mới vào nghề hay va phải, trong đó hai cú đầu là chuyện thật của mình, còn ba cú sau là quan điểm của mình về những gì người trong nghề hay gặp.

3 nguyên tắc sống còn để lấy yêu cầu hiệu quả

Lấy yêu cầu nghe thì đơn giản, cứ đến ngồi hỏi rồi ghi lại là xong, nhưng làm thật rồi mới thấy nó dễ biến thành ác mộng thế nào, và mấy nguyên tắc dưới đây là những thứ mình đúc ra từ chính các vết sẹo của mình ở dự án ERP/MES. hai trở ngại lớn # Cái bẫy đầu tiên là kinh nghiệm. Thiếu kinh nghiệm thì mình chỉ khai thác được phần nổi của tảng băng, còn phần chìm thì nằm ở mấy chỗ khách hay quên kể như các trường hợp ngoại lệ (business cases), các rủi ro kỹ thuật kiểu tích hợp hệ thống hay chuyển đổi dữ liệu, và phức tạp nhất là yếu tố con người. Cái này không có đường tắt, phải trầy vi tróc vảy qua ít nhất một dự án trọn vẹn mới mong thuần thục. Theo mình, nếu chỉ cầm bảng câu hỏi mẫu đi hỏi thì bạn sẽ chỉ nhận về đúng phần nổi đó, còn nếu người cần hỏi lại né tránh thì xem thêm cách làm khi stakeholder không hợp tác.