caltalys.dev
Một câu, năm người, năm việc khác nhau bắt đầu ngay sáng thứ Hai
Năm người rời cùng một cuộc họp và làm ra năm sản phẩm khác nhau. Thứ quyết định thiệt hại là quãng đường trước khi có ai đặt chúng cạnh nhau.
Câu ấy được nói ra lúc bốn giờ chiều thứ Sáu, trong hai mươi giây.
“Đợt này mình làm luôn phần liên thông với hệ thống thuế nhé.”
Thảo có ngập ngừng. Nó hỏi: “Liên thông là mình đẩy sang, hay hai bên trao đổi qua lại ạ?” Anh quản lý dự án nói: “Cái đó lát nữa bàn kỹ.” Rồi cuộc họp chuyển sang mục kinh phí, và không ai quay lại.
Thảo ghi vào biên bản: thống nhất bổ sung liên thông với hệ thống thuế trong đợt này.
Năm người rời phòng. Sáng thứ Hai, năm việc bắt đầu.
Thảo mở tài liệu đặc tả, thêm mục 4.7. Nó viết ra danh sách trường dữ liệu cần đẩy sang, mười một trường, lấy từ mẫu tờ khai. Nó viết luôn phần xử lý lỗi: nếu bên thuế không nhận được, hệ thống lưu lại và thử lại sau mười lăm phút.
Anh kiến trúc sư mở bảng ước lượng. Anh thêm một dòng: tích hợp thuế - 12 ngày công. Con số ấy anh tính từ lần tích hợp gần nhất với một hệ thống khác, cũng một chiều, cũng chừng ấy trường.
Chị Nga bên đơn vị soạn báo cáo tuần gửi lãnh đạo. Chị viết: đã thống nhất tích hợp với cơ quan thuế, cán bộ sẽ tra cứu được tình trạng nghĩa vụ thuế của người nộp hồ sơ ngay trên phần mềm. Chuyện tra cứu được nghĩa vụ thuế của người nộp hồ sơ là thứ lãnh đạo đơn vị đã hỏi ba lần trong sáu tháng qua.
Bạn kiểm thử thêm vào kế hoạch kiểm thử một dòng: kiểm tra dữ liệu đẩy sang thuế khớp với hồ sơ gốc. Bạn ấy chưa viết kịch bản chi tiết, chỉ đặt chỗ.
Anh quản lý dự án cập nhật kế hoạch, dời mốc bàn giao đợt hai lùi một tuần rưỡi, và nhắn cho bên đối tác thuế một câu hỏi: bên anh cho em xin tài liệu API với ạ.
Cả năm người đều làm nhanh, làm ngay. Và cả năm đều làm cùng một việc, dù không ai gọi tên nó: mỗi người biến một câu chưa chốt thành một đầu vào đủ cụ thể để phần việc của mình chạy tiếp. Không thế thì sáng thứ Hai chẳng ai làm được gì.
Tuần thứ hai, tài liệu API từ bên thuế gửi về. Trong đó có phần đẩy dữ liệu sang, và có cả phần tra cứu ngược lại - nhưng phần tra cứu yêu cầu ký số theo chuẩn của ngành thuế, và mỗi lượt tra cứu phải có mã định danh của cán bộ tra cứu, tức là phải đăng ký danh sách cán bộ với bên thuế trước.
Anh kiến trúc sư đọc xong, nói phần đẩy dữ liệu thì đúng như ước lượng, còn phần tra cứu thì gấp ba số ngày công, chưa kể thủ tục đăng ký.
Anh quản lý dự án bảo: mình có làm phần tra cứu đâu.
Chị Nga: báo cáo gửi lãnh đạo em viết là có tra cứu rồi anh.
Thảo mở đặc tả ra: mục 4.7 của em chỉ có phần đẩy sang.
Bạn kiểm thử: dòng của em ghi là kiểm tra dữ liệu đẩy sang, cũng chỉ một chiều.
Đặt năm thứ ấy cạnh nhau thì thấy: ba sản phẩm đã đóng phạm vi theo một chiều - đặc tả, ước lượng, kế hoạch kiểm thử. Một sản phẩm đã hứa một khả năng hai chiều, và nó là sản phẩm duy nhất đã rời khỏi tổ chức. Còn kế hoạch dự án thì đã bắt đầu hấp thụ chi phí của một thứ chưa ai chốt.
Cái báo cáo của chị Nga đã lên tới lãnh đạo đơn vị từ tuần trước, và lãnh đạo đã nhắc lại chuyện đó trong một cuộc họp khác mà bên mình không dự.
Nhìn lại toàn bộ chuyện này thì không tìm ra ai làm sai.
Câu nói hôm thứ Sáu đúng - liên thông là một chữ có nghĩa rộng, và trong ngành người ta vẫn dùng nó cho cả hai chiều. Biên bản của Thảo ghi đúng nguyên văn. Đặc tả của Thảo không sai, nó chỉ viết phần mà nó hiểu. Ước lượng của anh kiến trúc sư đúng với cái anh ước lượng. Báo cáo của chị Nga đúng với cái chị hiểu, và cái chị hiểu thì có cơ sở - lãnh đạo đơn vị đã hỏi về việc tra cứu ba lần. Dòng của bạn kiểm thử đúng với đặc tả mà bạn ấy đọc.
Năm người, năm việc, mỗi việc đều đúng với đầu vào của nó.
Và đây là chỗ đáng dừng lại lâu hơn một chút, vì nó là thứ mình mất khá lâu mới nhìn ra.
Từ bốn giờ chiều thứ Sáu tới tuần thứ hai, năm việc ấy không đi qua một chỗ chung nào cả.
Đặc tả của Thảo có anh kiến trúc sư đọc - nhưng anh đọc để lấy phạm vi kỹ thuật, không đọc để đối chiếu với con số anh đã điền vào bảng ước lượng từ hôm thứ Hai. Bảng ước lượng thì chỉ có anh quản lý dự án xem. Báo cáo của chị Nga gửi ra ngoài, không ai bên mình đọc. Kế hoạch kiểm thử nằm trong thư mục của bộ phận kiểm thử. Cái câu hỏi xin tài liệu API thì nằm trong tin nhắn riêng giữa hai người.
Năm dòng chạy song song trong mười hai ngày, mỗi dòng sinh ra một sản phẩm, và không có sản phẩm nào của dòng này được đặt cạnh sản phẩm của dòng kia.
Cuộc họp hôm thứ Sáu là chỗ duy nhất năm người ở cùng một phòng. Ở đó, thứ được kiểm là sự đồng ý - không ai phản đối thì đi tiếp. Cái không được kiểm là nội dung, vì kiểm nội dung thì phải có ai đó diễn đạt lại nó bằng lời của mình, mà hai mươi giây thì không đủ cho việc đó.
Cái ép năm dòng ấy gặp nhau ở tuần thứ hai là tài liệu API - một thứ đến từ bên ngoài, đúng lúc, và hoàn toàn tình cờ. Nếu bên thuế gửi chậm một tháng như mấy lần trước đó, thì điểm gặp tiếp theo đã được lên lịch là buổi nghiệm thu đợt hai, cách hôm thứ Sáu bảy tuần.
Nên chuyện đáng nói không phải mười hai ngày ấy. Là chuyện trong lịch của cả nhóm, không có chỗ nào cho năm sản phẩm ấy gặp nhau trước tuần thứ bảy. Mười hai ngày là con số may mắn, không phải con số do ai thiết kế.
Và mười hai ngày đã đủ để có một bảng ước lượng, một kế hoạch đã dời mốc, một kế hoạch kiểm thử, và một lời hứa đã ra khỏi tổ chức. Nếu điểm gặp là thứ Tư tuần sau, năm cách hiểu ấy lệch nhau chừng ba ngày công - sửa trong một buổi chiều, và cái báo cáo kia còn chưa kịp gửi.
Trong năm bài vừa rồi của tập này, mỗi bài chỉ ra một chỗ hỏng khác nhau. Nhưng cả năm chỗ ấy có chung một điều kiện để gây ra thiệt hại: thời gian. Một câu mơ hồ mà ngay hôm sau có người phải diễn đạt lại nó thì nó chỉ mơ hồ trong một ngày. Một định nghĩa đổi mà tuần sau có người đặt hai bản cạnh nhau thì nó chỉ lệch trong một tuần.
Cho nên cái mình đổi sau vụ này không phải cách viết đặc tả, cũng không phải thêm một vòng rà soát. Là kéo điểm gặp tiếp theo lại gần.
Cụ thể thì tầm thường đến mức hơi ngại kể: sau mỗi cuộc họp có chốt một việc mới, bọn mình đặt một buổi ba mươi phút cách đó bốn tới năm ngày làm việc. Không phải để duyệt gì. Chỉ để mỗi người mang tới cái mình đã làm ra từ câu chốt đó - một mục đặc tả, một dòng ước lượng, một dòng trong kế hoạch, một câu trong báo cáo - và đặt lên bàn cạnh nhau.
Buổi ấy không cần ai chuẩn bị gì thêm, vì mọi người mang tới thứ họ đã làm rồi. Và nó bắt được loại lệch mà một cuộc họp duyệt hay bỏ sót, bởi vì lần này cái được đặt cạnh nhau không phải các ý kiến mà là các sản phẩm - và đặt sản phẩm cạnh nhau thì có thứ cụ thể để kiểm xem chúng có đang dựa trên cùng một phạm vi hay không.
Toàn bộ chuyện điểm gặp này mình không lấy từ phương pháp nào cả. Nó là thứ bọn mình tự nghĩ ra sau vụ trên, và mình biết có nhiều nơi làm chuyện tương tự dưới những cái tên khác. Cái mình không biết là nó có chạy được ở chỗ bạn hay không.
Bốn ngày là con số bọn mình mò ra chứ không có căn cứ nào. Ngắn hơn thì nhiều người chưa kịp làm gì để mang tới. Dài hơn thì bắt đầu có thứ đã gửi ra ngoài.
Nói thật với bạn một chuyện, để bạn đừng tưởng cái buổi ba mươi phút ấy giải quyết được mọi thứ: nó chỉ bắt được những lệch đã hiện ra thành sản phẩm. Nếu tuần đó có ai chưa làm gì với câu chốt kia, thì họ không mang tới bàn được thứ gì để đặt cạnh, và cách họ hiểu câu ấy vẫn chưa va vào cách ai hiểu. Bọn mình đã có một lần như vậy: người chưa làm gì lại chính là người sau đó lệch xa nhất.
Và cũng đừng làm chuyện này với mọi cuộc họp. Phần lớn kết luận trong một tuần là những thứ chỉ một người mang đi làm, và có lệch thì lệch trong phạm vi của người đó rồi tự lộ ra trong hai ngày.
Thang đo vẫn là thang cũ, chỉ đổi cách hỏi: câu vừa chốt này sắp có bao nhiêu người mang đi làm ra một thứ gì đó, và cái họ làm ra sắp đi tới đâu. Một câu mà bốn bộ phận cùng dựa vào, trong đó có một sản phẩm sắp gửi ra ngoài tổ chức - thì đó là câu cần một điểm gặp sớm. Câu hỏi cũ vẫn dùng được: tới lúc phát hiện lệch, gỡ có dễ không. Mà cái gì đã gửi ra khỏi tổ chức thì gần như luôn khó gỡ hơn cái còn nằm trong.
Và cái nguyên lý đằng sau chẳng dính gì tới phần mềm. Khi một câu được nói ra cho nhiều người cùng nghe, mỗi người mang nó về và bắt đầu làm ra một thứ khác nhau từ nó. Một mức lệch nào đó giữa các cách hiểu là chuyện khó tránh, nhất là với một câu còn để mở như câu hôm thứ Sáu. Cái quyết định thiệt hại không phải độ lệch ban đầu. Là quãng đường mỗi bản chạy được trước khi có ai đó đặt chúng cạnh nhau.
Một việc bạn thử được ngay tuần này, và nó không cần xin phép ai. Lấy một câu vừa được chốt trong cuộc họp gần nhất. Với mỗi người có mặt hôm đó, viết ra một dòng: từ câu này, tuần tới người ấy sẽ làm ra cái gì cụ thể - một tài liệu, một con số, một dòng kế hoạch, một tin nhắn gửi ra ngoài. Rồi nhìn xem các thứ ấy có chỗ nào gặp nhau trước ngày nào không.
Nếu bạn không tìm ra điểm gặp nào trước một mốc xa, điều đó chưa chứng minh năm người đang hiểu khác nhau. Rất có thể họ hiểu giống hệt nhau, và bảy tuần nữa mọi thứ khớp trơn tru - phần lớn thời gian là vậy, nếu không thì chẳng dự án nào chạy được. Nó cũng chưa chứng minh cuộc họp đó tệ. Cái duy nhất bạn vừa nhìn thấy là khoảng thời gian mà những đầu ra khác nhau từ cùng một câu sẽ được làm ra, mà chưa có chỗ nào đặt chúng cạnh nhau - và cái khoảng ấy thì bạn rút ngắn được, còn mức lệch ban đầu thì không.
Thảo, hôm ngồi lại sau buổi tuần thứ hai, nói với mình một câu:
Mình bảo: ghi thêm một dòng vào biên bản thì tốt - chưa rõ liên thông là một chiều hay hai chiều, sẽ xác nhận lại - ít nhất nó không biến mất khỏi bản ghi chung của cuộc họp.
Nhưng đừng tin cái dòng ấy sẽ tự cứu mình. Nó vẫn có thể nằm yên trong biên bản suốt bảy tuần trong khi năm người đi làm năm thứ khác nhau. Thứ đáng làm hơn là ngay lúc gõ cái dòng đó, đặt luôn một cái hẹn: ngày mà năm thứ đang được làm ra phải quay về nằm trên cùng một bàn.