Product Management
Đăng nhập
ESC

Nhập từ khóa để tìm kiếm

↑↓ Di chuyển
Enter Mở
ESC Đóng

D-Bài 32 — Avoiding solution-jumping pitfall

Đã đọc 0/14 mục · còn khoảng 14 phút
Cách chúng tôi ghi nhận

Một mục được tính là đã đọc khi nó nằm giữa màn hình đủ lâu so với độ dài của nó (bảng và sơ đồ tính một nửa), bạn vẫn đang cuộn hoặc bấm phím, và bạn đã thấy tới cuối mục. Lướt nhanh hoặc để tab mở không được tính. Chúng tôi chỉ lưu thời gian đọc từng mục — không lưu gì khác.

Mở đầu — vì sao bài này quan trọng

Hãy thành thật với nhau một chút. Bạn đang ngồi trong một buổi họp, một anh trưởng phòng vận hành mới mô tả vấn đề được đúng hai phút: "Bên anh đang khổ vì mỗi lần cuối tháng phải đối soát công nợ thủ công, mất cả ngày trời." Và trong đầu bạn — một cựu developer — chuyện gì đang xảy ra? Bạn đã thấy ngay một cái màn hình, một cái bảng reconciliation, một cron job chạy lúc nửa đêm, một API kéo dữ liệu từ cổng thanh toán. Bạn còn chưa kịp hỏi câu thứ hai thì kiến trúc giải pháp đã hiện ra lồ lộ trong đầu.

Cảm giác đó rất sướng. Nó là phản xạ đã được rèn luyện qua nhiều năm code. Nhưng với vai trò BA, đó chính là cái bẫy nguy hiểm nhất, cái bẫy khiến nhiều developer giỏi chuyển sang BA bị thất bại trong sáu tháng đầu: solution-jumping — nhảy thẳng vào giải pháp trước khi thực sự hiểu vấn đề.

Vì sao bài này quan trọng đến vậy? Vì đây không phải một lỗi kỹ thuật nhỏ có thể fix bằng một dòng code. Đây là lỗi tư duy gốc rễ. Một BA nhảy vào giải pháp quá sớm sẽ giải sai bài toán một cách rất "chuyên nghiệp": tài liệu đẹp, sơ đồ chỉn chu, nhưng giải quyết một vấn đề mà khách hàng không thực sự có. Trong các báo cáo của Project Management Institute (PMI) và Standish Group qua nhiều năm, "requirements không chính xác / không đầy đủ" liên tục đứng trong top nguyên nhân khiến dự án phần mềm thất bại. Solution-jumping là một trong những thủ phạm âm thầm đứng sau con số đó. Đây cũng là lý do bài học này tách riêng anti-pattern số một của dev chuyển BA, để bạn nhận diện và chữa nó tận gốc.

Khái niệm cốt lõi

Solution-jumping là gì

Solution-jumping là hiện tượng bạn chuyển từ "lắng nghe vấn đề" sang "thiết kế giải pháp" gần như ngay lập tức, bỏ qua bước hiểu sâu vấn đề thật sự nằm ở đâu. Stakeholder mới mở miệng kể được một phần triệu chứng, thì BA đã đóng khung lại thành một feature cụ thể.

Điều nguy hiểm là solution-jumping không trông giống như một lỗi. Nó trông giống như sự nhanh nhẹn, thông minh, chủ động. Người ngồi cạnh thậm chí còn ấn tượng: "Ồ anh này hiểu vấn đề nhanh ghê." Nhưng "nhanh" ở đây thường là "chốt sớm dựa trên giả định chưa kiểm chứng".

Vì sao developer đặc biệt dễ mắc

Có ba lý do mang tính nghề nghiệp khiến dân code dễ rơi vào bẫy này hơn người khác:

Thứ nhất, bộ não đã được tối ưu hóa cho việc giải. Suốt sự nghiệp dev, công việc của bạn là nhận một mô tả và biến nó thành giải pháp chạy được. Input là requirement, output là code. Não bạn đã quen với việc "nhận đề — giải đề" với tốc độ cao. Khi chuyển sang BA, cái input không còn là một đề bài rõ ràng nữa, nó là một mớ triệu chứng mơ hồ — nhưng phản xạ "giải ngay" vẫn còn nguyên.

Thứ hai, bạn biết quá nhiều về cái khả thi. Một BA không có nền kỹ thuật khi nghe vấn đề sẽ tò mò hỏi tiếp. Còn bạn, vừa nghe đã biết "cái này làm webhook là xong", nên bạn dừng việc tìm hiểu lại sớm hơn. Chính kiến thức kỹ thuật — vốn là lợi thế lớn của bạn — lại trở thành cái phanh khiến bạn ngừng đặt câu hỏi.

Thứ ba, sự khó chịu với mơ hồ. Code thì rõ ràng: chạy hoặc không chạy. Còn requirements thì mơ hồ, mâu thuẫn, đầy cảm xúc con người. Nhảy vào giải pháp là cách bộ não thoát khỏi sự khó chịu đó — biến cái mơ hồ thành cái cụ thể càng nhanh càng tốt.

Vấn đề (problem) khác giải pháp (solution) như thế nào

Đây là điểm cốt lõi cần khắc sâu. Một stakeholder hiếm khi nói cho bạn nghe vấn đề thật. Họ nói cho bạn nghe giải pháp họ đã tự nghĩ ra, hoặc triệu chứng họ đang chịu đựng.

  • "Tôi cần thêm một nút Export Excel" — đây là giải pháp. Vấn đề thật có thể là: sếp của họ đòi một báo cáo định kỳ mà hệ thống không tự gửi được.
  • "Hệ thống chậm quá" — đây là triệu chứng. Vấn đề thật có thể là một màn hình cụ thể tải 200 dòng dữ liệu mỗi lần, trong khi người dùng chỉ cần 10 dòng đầu.
Công việc của BA là khoan xuống dưới lớp giải pháp và triệu chứng để chạm tới vấn đề kinh doanh thật. Có một kỹ thuật kinh điển tên là 5 Whys (hỏi "tại sao" năm lần) của Toyota: mỗi lần hỏi "tại sao" bạn lại bóc một lớp vỏ, cho đến khi chạm nguyên nhân gốc. Nhưng dev chuyển BA thường chỉ hỏi "tại sao" được... không lần nào, vì họ đã nhảy sang "làm thế nào" mất rồi.

Cái giá của solution-jumping

Hãy hình dung cụ thể cái giá phải trả:

  • Xây sai thứ. Bạn giao đúng cái khách yêu cầu, nhưng không giải quyết được nỗi đau của họ. Tỷ lệ rework tăng vọt.
  • Đóng khung không gian giải pháp quá sớm. Khi bạn chốt "làm webhook", bạn đã loại bỏ mười cách khác có thể đơn giản và rẻ hơn nhiều — đôi khi giải pháp đúng còn chẳng cần code.
  • Mất uy tín với business. Stakeholder cảm thấy không được lắng nghe, và lần sau họ sẽ vòng qua bạn để làm việc thẳng với dev.

Tình huống thực tế

Tình huống 1 — "Cho tôi cái nút Export" tại một sàn TMĐT ở TP.HCM

Một sàn thương mại điện tử tầm trung ở TP.HCM, tạm gọi là ChợViệt, có đội vận hành kho than phiền: "Tụi em cần một nút Export danh sách đơn hàng ra Excel ngay trên màn hình quản lý đơn." Anh BA — vốn là backend dev chuyển sang — gật đầu cái rụp, viết user story, ước lượng 3 ngày công, đẩy vào sprint. Tính năng lên production đúng hẹn.

Hai tuần sau, đội vận hành vẫn kêu khổ như cũ. Hóa ra điều họ thực sự làm là: export ra Excel, rồi copy thủ công từng đơn của từng nhà vận chuyển (Giao Hàng Nhanh, Giao Hàng Tiết Kiệm, Ahamove) sang ba file mẫu khác nhau, rồi gửi email cho từng bên lúc 5 giờ chiều. Cái nút Export chỉ là bước đầu tiên trong một quy trình thủ công dài 45 phút mỗi ngày.

Diễn giải: Anh BA đã nhận một giải pháp ("nút Export") và giao đúng giải pháp đó, mà không hỏi: "Sau khi export ra rồi anh chị làm gì tiếp?" Chỉ một câu hỏi đó thôi là đủ để lộ ra vấn đề thật — là việc chia tách và bàn giao đơn theo nhà vận chuyển. Giải pháp đúng có lẽ là một tính năng tự động nhóm đơn theo carrier và đẩy thẳng qua API của họ, chứ không phải một cái nút Excel.

Bài học rút ra: Khi stakeholder yêu cầu một tính năng cụ thể, hãy luôn hỏi quy trình bao quanh nó: "Trước bước này anh làm gì? Sau bước này anh làm gì?" Tính năng họ xin gần như luôn chỉ là một mảnh của bức tranh lớn hơn.

Tình huống 2 — "Hệ thống chậm, nâng cấp server đi" ở một fintech

Một công ty fintech cho vay tiêu dùng, đội thẩm định hồ sơ phàn nàn rằng "phần mềm duyệt hồ sơ chậm kinh khủng, mỗi hồ sơ mất 8 phút, chắc do server yếu, đề nghị nâng cấp hạ tầng." Vì người phàn nàn dùng đúng ngôn ngữ kỹ thuật ("server yếu"), anh BA — cũng là dân kỹ thuật — thấy rất hợp tai và lập tức gật gù, chuẩn bị mở ticket xin scale up server.

May là anh kịp dừng lại và đi ngồi quan sát thực tế một buổi (kỹ thuật observation sẽ học kỹ ở các bài về elicitation). Anh phát hiện: hệ thống render màn hình chỉ mất 2 giây. 8 phút kia là thời gian chuyên viên chuyển qua chuyển lại giữa năm tab khác nhau — tab core banking, tab CIC tra cứu tín dụng, tab Google tìm địa chỉ, tab Excel ghi chú, tab phần mềm duyệt — để gom đủ thông tin cho một quyết định. "Server yếu" hoàn toàn không phải vấn đề.

Diễn giải: Stakeholder không chỉ đưa giải pháp, họ còn đưa cả chẩn đoán kỹ thuật sai. Và vì anh BA có nền dev, anh suýt tin theo chẩn đoán đó vì nó nghe "có vẻ đúng chuyên môn". Vấn đề thật là thông tin bị phân mảnh trên nhiều hệ thống, giải pháp đúng là gom dữ liệu về một màn hình tổng hợp, chứ không tốn một xu nâng cấp server nào.

Bài học rút ra: Cảnh giác gấp đôi khi stakeholder nói bằng ngôn ngữ kỹ thuật. Nền dev khiến bạn dễ "đồng lõa" với chẩn đoán của họ. Hãy tách bạch: triệu chứng họ quan sát được là gì (8 phút/hồ sơ), và nguyên nhân họ tự suy ra là gì (server yếu) — và đừng tin nguyên nhân cho đến khi tự bạn kiểm chứng.

Tình huống 3 — Phản ví dụ tích cực: BA "nhịn" giải pháp tại một startup edtech

Để bạn thấy mặt sáng, đây là một ví dụ làm đúng. Một startup edtech ở Hà Nội muốn "thêm tính năng nhắc nhở học viên bằng push notification để giảm tỷ lệ bỏ học giữa chừng." Anh BA hoàn toàn có thể nhảy vào thiết kế hệ thống notification ngay. Nhưng anh nén lại, hỏi: "Mình đang muốn giải quyết điều gì — học viên quên học, hay học viên mất động lực, hay khóa học quá khó ở một điểm cụ thể?"

Anh xin dữ liệu và phát hiện 70% học viên bỏ học rơi đúng vào bài số 4 — một bài có bài tập khó nhất khóa. Vấn đề không phải "quên học" (mà push notification giải quyết), mà là "tắc ở một điểm khó". Giải pháp đúng hóa ra là chèn một bài hướng dẫn đệm trước bài 4, rẻ hơn và hiệu quả hơn nhiều so với xây cả hệ thống thông báo.

Bài học rút ra: Sức mạnh của một câu hỏi "chúng ta đang thực sự giải quyết điều gì?" trước khi viết bất kỳ dòng requirement nào. Vài phút phân tích dữ liệu đã tiết kiệm cả tháng công sức xây sai thứ.

Hướng dẫn từng bước

Đây là quy trình thực dụng để bạn rèn phản xạ chống solution-jumping. Hãy coi nó như một checklist tinh thần cho mọi buổi làm việc với stakeholder.

Bước 1 — Bắt cái "phản xạ giải pháp" của chính mình. Khoảnh khắc bạn cảm thấy trong đầu hiện lên một cái màn hình, một cái bảng database, một API — đó là tín hiệu báo động. Hãy tự nhủ một câu mantra: "Mình vừa thấy giải pháp. Tức là mình chưa hiểu xong vấn đề." Việc nhận diện được khoảnh khắc này đã là một nửa chiến thắng.

Bước 2 — Ghi giải pháp ra một góc rồi gác lại (parking lot). Bạn không cần vứt bỏ ý tưởng giải pháp — chúng có thể đúng. Hãy viết nó vào một mục riêng tên "Giải pháp tiềm năng" và quay lại sau. Việc viết ra giải pháp giúp não bạn "an tâm buông", thôi nắm chặt nó, để bạn tiếp tục đào sâu vấn đề.

Bước 3 — Hỏi "tại sao" và "để làm gì" trước khi hỏi "làm thế nào". Áp dụng 5 Whys. Với mỗi yêu cầu, hỏi: "Tại sao anh cần điều này?", "Điều này giúp anh đạt được mục tiêu gì?", "Nếu không có nó thì điều tệ nhất xảy ra là gì?". Tuyệt đối chưa bàn "làm thế nào".

Bước 4 — Hỏi về quy trình bao quanh. "Trước bước này anh làm gì? Sau đó thì sao? Ai là người tiếp theo nhận kết quả?" Như tình huống ChợViệt, câu hỏi này phơi bày bức tranh thật.

Bước 5 — Tách triệu chứng, nguyên nhân, giải pháp thành ba cột. Lập một bảng ba cột: Triệu chứng (cái họ thấy) / Nguyên nhân giả định (cái họ/bạn đoán) / Giải pháp đề xuất. Việc tách bạch buộc bạn thừa nhận đâu là sự thật quan sát được, đâu mới chỉ là phỏng đoán.

Bước 6 — Phát biểu lại vấn đề (problem statement) và xác nhận. Trước khi chuyển sang giải pháp, viết một câu problem statement và đọc lại cho stakeholder: "Vậy vấn đề cốt lõi là [X], gây ra bởi [Y], và nó khiến anh chịu thiệt [Z]. Em hiểu đúng chưa ạ?" Chỉ khi họ gật đầu, bạn mới được phép mở ngăn "Giải pháp tiềm năng" ra.

Bước 7 — Khám phá nhiều phương án, đừng chốt cái đầu tiên. Khi đã hiểu vấn đề, hãy ép mình nghĩ ít nhất 2–3 hướng giải quyết khác nhau, trong đó có cả phương án "không cần code" (đổi quy trình, đổi cấu hình, dùng công cụ có sẵn). Giải pháp đầu tiên hiếm khi là tốt nhất.

Lỗi thường gặp & mẹo

Lỗi: Nhầm "nhanh" với "giỏi". Nhiều dev chuyển BA tự hào vì chốt requirement nhanh. Nhưng tốc độ ở giai đoạn elicitation thường là dấu hiệu của chốt non. Mẹo: tự cho mình một "ngân sách câu hỏi" — buộc bản thân hỏi ít nhất 5 câu khám phá trước khi cho phép não nghĩ tới giải pháp.

Lỗi: Hỏi câu hỏi dẫn dắt (leading question). "Anh có muốn em làm cái nút Export không?" — câu này đã ngầm chứa giải pháp, stakeholder chỉ việc gật. Mẹo: dùng câu hỏi mở: "Anh hình dung quy trình lý tưởng sẽ diễn ra thế nào?" thay vì câu hỏi đóng có sẵn đáp án.

Lỗi: Để ngôn ngữ kỹ thuật của stakeholder dẫn dắt. Như tình huống fintech, khi họ nói "server yếu" và bạn là dev, bạn dễ tin. Mẹo: mỗi khi nghe một chẩn đoán kỹ thuật từ business, tự hỏi: "Đây là cái họ quan sát, hay cái họ suy diễn?" Suy diễn thì phải kiểm chứng.

Lỗi: Coi việc đặt câu hỏi là "tỏ ra ngu". Dev quen tự giải, ngại hỏi vì sợ lộ ra mình không biết. Trong BA thì ngược lại hoàn toàn. Mẹo: đóng khung câu hỏi như sự cẩn trọng chuyên nghiệp: "Để em chắc chắn build đúng thứ anh cần, cho em hỏi thêm vài câu."

Lỗi: Bỏ qua bước xác nhận lại problem statement. Bạn hiểu trong đầu nhưng không phát biểu ra. Mẹo: luôn đọc to lại vấn đề và chờ cái gật đầu — đây là điểm kiểm soát rẻ nhất để tránh đi sai cả tháng.

Mẹo tổng quát — dùng chính lợi thế kỹ thuật một cách đúng chỗ. Đừng vứt bỏ khả năng nghĩ giải pháp của bạn, nó là vàng. Chỉ cần đặt nó đúng thời điểm: sau khi vấn đề đã sáng tỏ. Khi đó, hiểu biết kỹ thuật giúp bạn đề xuất phương án khả thi, ước lượng độ phức tạp, và nói chuyện với team dev hiệu quả hơn bất kỳ BA thuần business nào.

Bài tập thực hành

Bài tập 1 — Bóc tách giải pháp khỏi vấn đề. Lấy ba câu yêu cầu sau, với mỗi câu hãy viết: (a) đây là giải pháp hay triệu chứng, (b) ba câu hỏi khám phá bạn sẽ hỏi, (c) một giả thuyết về vấn đề thật.

  • "Cho tôi thêm bộ lọc theo ngày trong báo cáo."
  • "App hay bị treo, chắc cần viết lại bằng công nghệ mới."
  • "Tôi muốn một dashboard hiển thị mọi chỉ số."
Bài tập 2 — Tự ghi âm phản xạ. Trong buổi họp tiếp theo với một stakeholder (hoặc một buổi giả lập với bạn học), hãy đếm xem sau bao lâu kể từ khi họ bắt đầu nói thì trong đầu bạn xuất hiện một giải pháp cụ thể. Ghi lại con số đó. Mục tiêu của khóa này là kéo dài khoảng thời gian "nhịn giải pháp" đó ra.

Bài tập 3 — Viết problem statement. Chọn một tính năng bất kỳ bạn từng làm hồi còn là dev. Viết lại nó dưới dạng problem statement đúng cấu trúc: "Vấn đề là [X], xảy ra với [đối tượng nào], trong bối cảnh [khi nào], gây hậu quả [Z]." Đừng nhắc tới bất kỳ giải pháp kỹ thuật nào trong câu này.

Bài tập 4 — Ép nghĩ ba phương án. Với problem statement ở bài tập 3, hãy nghĩ ra ba hướng giải quyết khác nhau, trong đó bắt buộc có một hướng không viết code (đổi quy trình, đào tạo lại, hoặc dùng công cụ sẵn có). So sánh chi phí và hiệu quả của ba hướng.

Tóm tắt

Solution-jumping — nhảy vào giải pháp trước khi hiểu vấn đề — là anti-pattern số một của developer chuyển sang BA, và là một trong những nguyên nhân âm thầm khiến dự án xây sai thứ. Bạn dễ mắc nó vì bộ não đã được tối ưu cho việc "nhận đề — giải đề", vì bạn biết quá nhiều về cái khả thi nên ngừng hỏi sớm, và vì giải pháp giúp bạn thoát khỏi sự khó chịu với mơ hồ.

Chìa khóa nằm ở việc phân biệt rạch ròi giữa giải pháp (cái stakeholder xin), triệu chứng (cái họ chịu đựng), và vấn đề thật (cái nằm bên dưới). Ba tình huống — nút Export tại ChợViệt, "server yếu" ở fintech, và bài số 4 ở startup edtech — đều cho thấy: một vài câu hỏi "tại sao" và "sau đó anh làm gì" đúng lúc có thể tiết kiệm hàng tháng công sức.

Quy trình chống bẫy gồm: bắt phản xạ giải pháp của chính mình, gác giải pháp vào parking lot, hỏi "tại sao/để làm gì" trước "làm thế nào", khám phá quy trình bao quanh, tách ba cột triệu chứng–nguyên nhân–giải pháp, xác nhận lại problem statement, rồi mới mở ra nhiều phương án. Tin tốt là: bạn không phải vứt bỏ tư duy giải pháp của một dev — đó là lợi thế lớn. Bạn chỉ cần dạy nó kiên nhẫn chờ đến đúng thời điểm.

Học xong bài này rồi? Tạo tài khoản miễn phí để lưu lại — lần sau vào là biết ngay đang dở ở đâu, và học hết khóa thì có chứng chỉ. Lưu tiến độ của tôi