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 47 — Anti-pattern dev-to-BA

Đã đọc 0/13 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

Có một sự thật mà ít ai nói thẳng với bạn khi chuyển từ Developer sang BA: chính những kỹ năng đã giúp bạn thành công với vai trò Developer lại có thể trở thành cái bẫy lớn nhất trong vai trò BA. Bộ não đã được "huấn luyện" suốt nhiều năm để nghĩ theo kiểu giải pháp, viết code, tối ưu hệ thống — và bây giờ nó liên tục "chạy ngầm" những thói quen ấy ngay cả khi công việc mới đòi hỏi một cách tư duy hoàn toàn khác.

Đây không phải vấn đề về năng lực. Bạn thông minh, bạn hiểu hệ thống, bạn viết tài liệu rõ ràng hơn nhiều BA không có nền kỹ thuật. Vấn đề nằm ở chỗ: bạn mang theo những "anti-pattern" — những mẫu hành vi tưởng đúng nhưng lại phản tác dụng — mà không hề nhận ra. Giống như khi bạn refactor một đoạn code legacy: đôi khi cái khó nhất không phải viết code mới, mà là gỡ bỏ những giả định cũ đã ăn sâu.

Bài học này là tấm gương soi. Tôi sẽ chỉ ra 10 anti-pattern phổ biến nhất mà tôi quan sát được ở các bạn dev chuyển sang BA — bao gồm cả những lỗi tôi từng mắc và những lỗi tôi từng chứng kiến đồng nghiệp gặp phải tại các công ty Việt Nam. Quan trọng hơn, với mỗi anti-pattern, bạn sẽ có cách nhận diện và cách "fix" cụ thể. Mục tiêu không phải để bạn cảm thấy tệ về bản thân, mà để bạn rút ngắn được 6–12 tháng "trầy trật" đầu tiên mà hầu hết dev-turned-BA đều phải trải qua.

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

Anti-pattern, theo định nghĩa trong kỹ thuật phần mềm, là một giải pháp phổ biến cho một vấn đề lặp đi lặp lại, nhưng giải pháp đó lại tạo ra hậu quả tiêu cực nhiều hơn lợi ích. Trong bối cảnh chuyển đổi nghề nghiệp, anti-pattern là những hành vi mà bạn áp dụng theo bản năng — vì nó từng đúng trong vai trò cũ — nhưng nay gây hại trong vai trò mới.

Mười anti-pattern dưới đây được nhóm thành ba cụm. Hiểu được cụm nào bạn hay rơi vào sẽ giúp bạn ưu tiên sửa.

Cụm 1 — Lỗi về tư duy (mindset)

1. Solution-first thinking (Nhảy thẳng vào giải pháp). Đây là anti-pattern "quốc dân" của dev chuyển BA. Stakeholder mới mô tả vấn đề được một phút, đầu bạn đã chạy ngay tới "à, cái này dùng Redis cache là xong" hoặc "thêm một bảng trong DB là giải quyết được". Bạn đã đóng khung bài toán bằng giải pháp trước khi thực sự hiểu vấn đề. Hệ quả: bạn thu thập requirement theo hướng xác nhận giải pháp có sẵn trong đầu, bỏ sót nhu cầu thật của business. Cách fix kinh điển là kỹ thuật 5 Whys — hỏi "tại sao" liên tiếp 5 lần để đào xuống gốc rễ, thay vì dừng ở triệu chứng bề mặt.

2. Premature scoping (Khoá phạm vi quá sớm). Vì quen với deadline sprint, bạn vội chốt "cái này làm được, cái kia không làm được" dựa trên độ khó kỹ thuật, chứ không dựa trên giá trị business. BA giỏi giữ vùng "chưa rõ" mở đủ lâu để khám phá, rồi mới thu hẹp.

3. Perfectionism in documentation (Cầu toàn tài liệu). Dev quen với "code phải chạy đúng 100%". Chuyển sang BA, bạn cố viết một bản đặc tả hoàn hảo, kín mọi edge case, trước khi dám đưa cho ai xem — và mất 3 tuần cho việc đáng lẽ 3 ngày. BA làm việc với sự mơ hồ; tài liệu là công cụ giao tiếp, không phải sản phẩm cuối cần "compile sạch".

Cụm 2 — Lỗi về giao tiếp (communication)

4. Tech jargon overload (Lạm dụng thuật ngữ kỹ thuật). Bạn viết BRD mà đầy "idempotent API", "eventual consistency", "race condition". Stakeholder business đọc xong gật gù nhưng không hiểu gì, rồi ký duyệt. Đến lúc UAT mới vỡ lẽ hai bên hiểu khác nhau.

5. Implicit assumption (Giả định ngầm). Dev hay nghĩ "cái này hiển nhiên mà, ai chả biết". Bạn bỏ qua việc viết rõ vì cho rằng người đọc cũng có cùng context kỹ thuật như mình. BA phải viết cho người không-kỹ-thuật đọc được.

6. One-way documentation (Tài liệu một chiều). Bạn coi việc viết requirement giống việc viết code: làm xong rồi "ship". Nhưng requirement cần được đối thoại, xác nhận lại, đàm phán. Ném một file Confluence rồi im lặng chờ phản hồi là anti-pattern.

Cụm 3 — Lỗi về vai trò và quan hệ (role & relationship)

7. Coding on the side (Lén đi code). Khi gặp vấn đề, tay bạn ngứa ngáy muốn mở IDE tự fix luôn cho nhanh. Điều này phá vỡ ranh giới vai trò, khiến dev team mất quyền tự chủ và bạn không hoàn thành việc của BA.

8. Overriding the dev team (Lấn quyền team kỹ thuật). Vì từng là dev, bạn áp đặt cách triển khai: "phải dùng microservice", "không được dùng thư viện đó". Bạn đang làm việc của Solution Architect, không phải BA, và làm dev team khó chịu.

9. Skipping stakeholder relationship (Bỏ qua xây dựng quan hệ). Dev quen làm việc với máy tính nhiều hơn con người. Bạn lao vào phân tích mà quên rằng 70% công việc BA là xây dựng lòng tin với stakeholder. Bỏ qua cà phê, bỏ qua small talk, bỏ qua việc lắng nghe nỗi đau thật của họ.

10. Ignoring non-functional & business context (Bỏ qua bối cảnh phi kỹ thuật). Bạn tập trung vào "hệ thống làm gì" mà quên "vì sao business cần điều đó", quên các ràng buộc pháp lý, quy trình nội bộ, văn hoá tổ chức. Một requirement đúng về mặt kỹ thuật vẫn có thể sai hoàn toàn về mặt business.

Tình huống thực tế

Ví dụ 1 — Giải pháp đi trước vấn đề tại một fintech ở TP.HCM

Anh Tuấn, backend developer 6 năm kinh nghiệm, vừa chuyển sang vai trò BA tại một công ty fintech khoảng 120 người ở Quận 1. Trong buổi họp đầu tiên với phòng Vận hành, chị trưởng phòng nói: "Bọn chị mất rất nhiều thời gian mỗi cuối ngày để đối soát giao dịch, có hôm đến 9 giờ tối mới xong."

Tuấn nghe được đúng 90 giây thì đã ghi vào notebook: "Build dashboard đối soát real-time, dùng background job chạy mỗi 5 phút." Anh về viết luôn một bản đặc tả 8 trang cho cái dashboard đó. Hai tuần sau, khi demo wireframe, chị trưởng phòng nhíu mày: "Cái này đẹp đấy, nhưng vấn đề của chị không phải là không thấy số liệu. Vấn đề là dữ liệu từ cổng thanh toán đối tác về trễ và sai định dạng, nên bọn chị phải sửa tay từng dòng."

Hoá ra gốc rễ là chất lượng dữ liệu đầu vào và một thoả thuận SLA với đối tác, hoàn toàn không phải chuyện dashboard. Tuấn đã lãng phí hai tuần vì nhảy thẳng vào giải pháp kỹ thuật.

Bài học: Nếu Tuấn dùng 5 Whys — "Tại sao mất nhiều thời gian? Vì phải sửa tay. Tại sao phải sửa tay? Vì dữ liệu sai. Tại sao dữ liệu sai? Vì đối tác trả về sai định dạng…" — anh đã chạm tới vấn đề thật ngay trong buổi họp đầu tiên. Quy tắc thực hành: trong 15 phút đầu của mọi buổi elicitation, không cho phép bản thân nghĩ tới bất kỳ giải pháp công nghệ nào. Chỉ hỏi và lắng nghe.

Ví dụ 2 — Bản BRD "đậm chất code" tại một dự án logistics

Một bạn BA tên Linh, xuất thân full-stack developer, được giao viết BRD cho module quản lý kho của một công ty logistics có cả khách hàng nội địa lẫn đối tác Nhật. Linh viết rất "chuẩn dev": phần mô tả nghiệp vụ nhập kho có những câu như "Hệ thống thực hiện optimistic locking trên bản ghi inventory để tránh race condition khi hai thủ kho cùng cập nhật, áp dụng retry với exponential backoff 3 lần."

Khi tài liệu được gửi cho phía nghiệp vụ và phía khách hàng Nhật ký duyệt, không ai hỏi lại câu nào — họ ký vì ngại tỏ ra không hiểu. Đến giai đoạn UAT, bộ phận kho phản ánh: "Khi hai người cùng cập nhật, hệ thống báo lỗi và bắt làm lại từ đầu, chúng tôi mất hết dữ liệu vừa nhập." Cái mà Linh mô tả là cơ chế kỹ thuật, nhưng cô không hề mô tả trải nghiệm nghiệp vụ mong muốn: khi xung đột xảy ra, người dùng cần được thông báo bằng tiếng Việt rõ ràng và giữ lại dữ liệu đã nhập.

Bài học: Một BRD tốt phải tách hai tầng. Tầng business: "Khi hai thủ kho cùng sửa một lô hàng, hệ thống phải cảnh báo và không để mất dữ liệu của người vào sau." Tầng kỹ thuật (nếu cần, đưa vào phụ lục cho dev): cơ chế locking. Linh đã trộn hai tầng và viết bằng ngôn ngữ chỉ dev hiểu, khiến stakeholder không thể thực sự review. Mẹo: viết xong BRD, đưa cho một người không làm IT trong nhà đọc thử một đoạn — nếu họ không hiểu, viết lại.

Ví dụ 3 — "Lén đi code" tại một startup edtech

Ở một startup edtech khoảng 30 người tại Hà Nội, anh Nam chuyển từ trưởng nhóm dev sang BA kiêm quản lý sản phẩm cho tính năng lớp học trực tuyến. Vì còn quyền truy cập repo, mỗi khi thấy bug nhỏ hoặc thấy dev làm "chưa tối ưu", Nam tự mở branch sửa luôn rồi tạo pull request. Ban đầu CTO thấy tiện, nhưng sau hai tháng nảy sinh ba vấn đề: dev team mất động lực vì cảm giác bị giám sát và "việc gì khó cũng đẩy cho Nam"; Nam không có thời gian làm việc BA cốt lõi nên backlog requirement ùn ứ; và khi Nam đi công tác một tuần, vài thay đổi anh tự làm không ai nắm được, gây lỗi production.

CTO phải ngồi nói chuyện thẳng: "Em chọn một vai. Nếu là BA, em buông code ra." Nam gỡ quyền write trên repo của chính mình — một quyết định nhỏ nhưng mang tính biểu tượng — và chuyển toàn bộ năng lượng kỹ thuật sang việc viết acceptance criteria sắc bén và phản biện thiết kế. Ba tháng sau, velocity của team tăng rõ rệt.

Bài học: Lợi thế kỹ thuật của bạn nên được dùng để đặt câu hỏi tốt hơn và viết requirement chính xác hơn, chứ không phải để tự tay code. Ranh giới vai trò là thứ phải được bảo vệ một cách có kỷ luật, đôi khi bằng hành động mang tính ràng buộc như tự gỡ quyền truy cập.

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

Đây là quy trình tự kiểm và sửa anti-pattern, áp dụng trong 4 tuần đầu ở vai trò BA mới.

Bước 1 — Tự audit bản thân. Đọc lại 10 anti-pattern, chấm điểm thật thà từ 1 đến 5 cho mức độ bạn hay mắc mỗi cái. Khoanh tròn 3 cái điểm cao nhất. Đó là "nợ kỹ thuật về hành vi" cần trả trước.

Bước 2 — Cài đặt cơ chế chặn solution-first. Trong mọi buổi elicitation, đặt một quy tắc cá nhân: 15 phút đầu chỉ hỏi "vấn đề là gì, đau ở đâu, ai bị ảnh hưởng", tuyệt đối không nói tên công nghệ. Chuẩn bị sẵn 5 câu "tại sao" để đào sâu.

Bước 3 — Dịch ngược tài liệu sang ngôn ngữ business. Sau khi viết bất kỳ requirement nào, đọc lại và đánh dấu mọi thuật ngữ kỹ thuật. Với mỗi thuật ngữ, tự hỏi: "Stakeholder business có cần biết chi tiết này để ra quyết định không?" Nếu không, chuyển nó xuống phụ lục dành cho dev.

Bước 4 — Biến tài liệu thành đối thoại. Đừng "ship rồi im". Sau khi gửi tài liệu, chủ động đặt lịch 20 phút đi qua từng phần với stakeholder, ghi nhận thắc mắc, cập nhật. Coi mỗi bản tài liệu là một vòng lặp xác nhận, không phải một lần bàn giao.

Bước 5 — Tách rõ "cái gì" và "làm thế nào". Khi đề xuất, luôn mô tả nhu cầu và kết quả mong muốn (cái gì), rồi để dev team đề xuất cách triển khai (làm thế nào). Nếu bạn thấy mình đang chỉ định công nghệ cụ thể, dừng lại và hỏi: "Mình có đang lấn vai Architect không?"

Bước 6 — Đầu tư vào quan hệ. Mỗi tuần dành ít nhất một buổi cà phê hoặc trò chuyện không-agenda với một stakeholder. Lòng tin xây từ những lúc không bàn công việc.

Bước 7 — Nhờ phản hồi định kỳ. Cuối mỗi sprint, hỏi một dev và một stakeholder: "Có lúc nào bạn thấy mình đang hành xử như dev hơn là BA không?" Phản hồi từ bên ngoài phát hiện anti-pattern nhanh hơn tự soi.

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

Lỗi: Nghĩ rằng bỏ tư duy dev là phải "quên" kiến thức kỹ thuật. Hoàn toàn không. Kiến thức kỹ thuật là lợi thế lớn nhất của bạn. Bạn không cần quên nó — bạn cần học cách kìm nó lại đúng lúc và bung nó ra đúng chỗ. Khi elicitation thì kìm; khi trao đổi với dev về tính khả thi thì bung.

Lỗi: Sửa cả 10 anti-pattern cùng lúc. Bạn sẽ quá tải và bỏ cuộc. Hãy chọn 1–2 cái nghiêm trọng nhất, sửa trong 4 tuần, rồi mới sang cái tiếp theo. Đây cũng chính là tư duy ưu tiên (prioritization) mà BA cần.

Lỗi: Tưởng viết nhiều, viết chi tiết kỹ thuật là chuyên nghiệp. Một BA giỏi đo bằng việc tài liệu của mình có dẫn tới quyết định đúng và sản phẩm đúng hay không, không phải bằng độ dày.

Mẹo "câu hỏi vàng". Khi bắt gặp mình đang nghĩ về giải pháp, hãy tự hỏi: "Mình đang giải đúng vấn đề chưa, hay đang giải vấn đề mình thích giải?" Dev thường thích những vấn đề kỹ thuật thú vị, trong khi vấn đề business thật sự đôi khi nhàm chán nhưng giá trị hơn nhiều.

Mẹo "hai phiên bản tài liệu". Với những đặc tả phức tạp, duy trì một bản tóm tắt business (1 trang, ngôn ngữ đời thường) đặt lên đầu, và phần chi tiết kỹ thuật ở sau. Stakeholder đọc trang đầu, dev đọc phần sau. Một tài liệu, hai độc giả.

Mẹo nhận diện "lấn vai". Nếu trong câu nói của bạn xuất hiện cụm "phải dùng…", "bắt buộc triển khai bằng…" nhắm vào công nghệ, đó là đèn đỏ. Thay bằng "kết quả mình cần là… còn cách làm thì team đề xuất giúp nhé."

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

Bài 1 — Tự chẩn đoán. Lập bảng 10 anti-pattern, tự chấm điểm 1–5, viết một câu cho mỗi cái mô tả lần gần nhất bạn (hoặc một đồng nghiệp) mắc phải. Chọn ra top 3 để tập trung.

Bài 2 — Chữa solution-first. Lấy tình huống: "Đội chăm sóc khách hàng phàn nàn họ phải mở 4 màn hình khác nhau để trả lời một khách." Viết ra 5 câu hỏi "tại sao" liên tiếp để tìm gốc rễ, rồi viết lại phát biểu vấn đề (problem statement) mà không chứa bất kỳ giải pháp kỹ thuật nào.

Bài 3 — Dịch tài liệu. Lấy đoạn BRD đầy jargon sau và viết lại thành hai tầng (business + phụ lục kỹ thuật): "Hệ thống sẽ expose một REST endpoint nhận webhook từ payment gateway, validate signature HMAC, rồi push message vào queue để worker xử lý bất đồng bộ việc cập nhật trạng thái đơn hàng."

Bài 4 — Vẽ ranh giới vai trò. Liệt kê 5 tình huống cụ thể trong công việc hiện tại/sắp tới mà bạn dễ bị cám dỗ "đi code" hoặc "lấn vai dev". Với mỗi tình huống, viết một câu phản ứng thay thế đúng vai BA.

Bài 5 — Xin phản hồi thật. Trong tuần này, hỏi ít nhất một đồng nghiệp dev và một stakeholder business câu: "Có lúc nào bạn thấy mình hành xử giống dev hơn là BA không, ở điểm nào?" Ghi lại câu trả lời và đối chiếu với bảng tự chẩn đoán ở Bài 1.

Tóm tắt

Chuyển từ Developer sang BA không phải là học thêm kỹ năng mới rồi cộng vào những gì đã có. Phần khó nhất là gỡ bỏ những thói quen cũ đã trở thành phản xạ. Mười anti-pattern trong bài chia thành ba cụm: lỗi tư duy (nhảy vào giải pháp, khoá phạm vi sớm, cầu toàn tài liệu), lỗi giao tiếp (lạm dụng jargon, giả định ngầm, tài liệu một chiều), và lỗi vai trò - quan hệ (lén đi code, lấn quyền dev, bỏ qua xây dựng quan hệ, bỏ qua bối cảnh business).

Ba câu chuyện thực tế — fintech ở TP.HCM nhảy vào dashboard sai vấn đề, dự án logistics với BRD đậm chất code, và startup edtech nơi BA mãi không buông được bàn phím — cho thấy cái giá của những anti-pattern này thường được trả bằng nhiều tuần lãng phí và lòng tin bị bào mòn.

Điều đáng mừng: bạn không cần vứt bỏ nền tảng kỹ thuật. Nó vẫn là vũ khí mạnh nhất của bạn. Bạn chỉ cần học cách điều khiển nó — kìm lại khi cần lắng nghe vấn đề, bung ra khi cần đối thoại với dev. Hãy bắt đầu nhỏ: chọn 1–2 anti-pattern nghiêm trọng nhất, cài cơ chế chặn, xin phản hồi định kỳ, và lặp lại. Đúng tinh thần một người làm BA giỏi — sửa từng vấn đề theo thứ tự ưu tiên, dựa trên giá trị thật, chứ không phải theo cái mình thấy thú vị.

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