Mã Nguồn Ngược Dòng Chương 201 / 209

Áp lực từ hai đầu

Tin đầu tiên đến lúc văn phòng còn mùi cà phê mới pha.

Hoàng đang đứng trước bảng trắng trong phòng họp nhỏ, tay cầm bút lông đen, nhìn ba dòng việc của ngày mà anh vừa viết xong. Không có cuộc họp lớn. Không có cuộc gọi gấp. Một buổi sáng đủ yên để người ta tưởng tháng cuối năm có thể trôi qua bằng những việc đã lên lịch: đọc báo cáo retention miền Tây, duyệt ngân sách máy chủ tháng sau, gặp Phương Anh mười lăm phút về quỹ dự phòng.

Ở cụm bàn kỹ thuật bên ngoài, Minh ngồi lệch vai trước màn hình, tai nghe chỉ đeo một bên. Đạt và Bình nói chuyện nhỏ với nhau về một đoạn log mới. Phía góc chăm sóc khách hàng, Trâm đang dán giấy nhớ lên mép laptop. Mọi âm thanh đều vừa đủ: tiếng gõ phím, tiếng máy lạnh cũ thổi vào rèm cửa, tiếng xe ngoài đường Tô Hiến Thành bị kính chặn lại thành một lớp ồn mỏng.

Hoàng viết thêm chữ “Board Q4” lên bảng rồi dừng.

Slack nội bộ bật thông báo.

Kênh: #decision-log-tech.

Tên người gửi: Trịnh Nguyễn Minh.

Hoàng quay bút trong tay. Anh không mở ngay. Từ sau ngày bổ nhiệm CTO, decision log kỹ thuật không còn là nơi anh chờ để “duyệt”. Nó là nơi Minh ghi lại quyết định đã cân nhắc theo quy trình, nơi Phương Anh có thể đọc để hiểu tác động tài chính, nơi Khoa biết khi nào khách hàng cần được báo trước.

Anh chỉ là một người đọc trong luồng đó.

Thông báo thứ hai bật lên.

Rồi thứ ba.

Hoàng đặt bút xuống bàn, mở laptop.

Tiêu đề log của Minh nằm ngay đầu kênh:

Migration NỢ SỔ Core — phát hiện dữ liệu legacy không nhất quán. Đề xuất dời deadline làm sạch schema thêm 14 ngày.

Bên dưới là một tài liệu dài, không nhiều chữ thừa.

Minh viết rõ phạm vi: NỢ SỔ Core, 150.000 người dùng đã tách khỏi gói Pro trong kế hoạch kiến trúc Q4. Database cũ từ thời monolith PHP chứa nhiều nhóm dữ liệu lịch sử chưa từng được chuẩn hóa đúng: timestamp lệch múi giờ do bản ghi từ các thiết bị Android cũ; một số khoản nợ đã được đánh dấu “đã trả” nhưng vẫn còn dòng đối soát rời; vài bảng phụ do Hoàng viết vội nhiều năm trước dùng customer_name làm khóa mềm trước khi có customer_id ổn định.

Không phải lỗi mới.

Là thứ cũ nằm yên đủ lâu để trông giống nền móng.

Minh đính kèm ba ảnh chụp query, một biểu đồ rủi ro và một đoạn kết luận:

Migration vẫn khả thi. Không khuyến nghị deploy theo deadline đã duyệt. Cần 14 ngày để chạy audit pipeline và clean dữ liệu legacy trước khi migrate production. Nếu ép deadline, rủi ro corrupt dữ liệu đồng bộ ước tính 2,7% trên nhóm Core cũ — không chấp nhận được.

Hoàng đọc lại con số 2,7%.

Với một sản phẩm mười nghìn người dùng, 2,7% đã là sự cố. Với một trăm năm mươi nghìn người dùng, đó là hàng nghìn chủ tiệm có thể mở app buổi sáng và thấy sổ nợ hiển thị sai.

Anh kéo xuống phần “tác động”. Minh đã tự ghi:

Ảnh hưởng deadline Board: Q4 financial report đã giả định Core migration hoàn thành trước ngày 15. Nếu dời 14 ngày, báo cáo tiết kiệm server cost và performance improvement sẽ chuyển sang quý sau. Cần PA đánh dấu rủi ro tài chính.

Ba phút sau, Phương Anh phản hồi ngay dưới log.

Đã đánh dấu rủi ro Board. Ảnh hưởng: ngân sách server tháng này tăng thêm 11,8%; báo cáo Q4 phải điều chỉnh dòng savings. Không phải vấn đề sống còn, nhưng Board cần được thông báo trước khi họ tự thấy discrepancy. Minh gửi tôi ETA audit pipeline trước 18h.

Minh trả lời:

18h có.

Ngắn. Sạch. Đúng người.

Hoàng nhìn hai dòng trao đổi đó.

Không ai tag anh.

Anh biết tại sao. Minh là CTO. Phương Anh nắm tài chính. Nếu tác động tới Board, Phương Anh xử lý luồng thông báo. Nếu cần CEO ký văn bản điều chỉnh kế hoạch, cô sẽ gửi. Trước lúc đó, không có gì cần anh làm.

Nhưng mắt anh vẫn dừng ở đoạn customer_name làm khóa mềm.

Đó là code của anh.

Không cần mở repo, anh vẫn nhớ cái đêm viết đoạn đó. Phòng trọ nóng, quạt quay kêu lạch cạch, Khoa vừa nhắn thêm hai mươi tiệm dùng thử sau hội chợ, còn anh ngồi gõ bảng khách hàng với cái suy nghĩ rất trẻ con của một người đang chạy deadline: tên khách đủ rồi, chủ tiệm nhớ tên, không cần phức tạp hóa.

Nó đã sống qua nhiều năm.

Bây giờ nó trở lại, trong decision log của người khác, dưới dạng “legacy inconsistency”.

Hoàng đưa tay lên bàn phím.

Ngón tay đặt vào ô trả lời.

Minh, đoạn customer_name hồi đó anh viết hơi bẩn. Em cần anh review schema cũ không?

Câu chữ hiện lên rất nhanh. Quá nhanh.

Anh nhìn nó.

Từ “anh viết” nằm ở giữa câu, như một cái móc kéo anh trở lại trung tâm của vấn đề. Đúng, đó là code cũ của anh. Đúng, anh có thể nhớ vài ngách mà Minh chưa chắc biết. Đúng, nếu anh ngồi một buổi với schema cũ, có thể giảm cho Minh vài giờ.

Cũng đúng là Minh đã viết rõ: cần audit pipeline, không cần ký ức của founder.

Hoàng xóa câu đó.

Ô trả lời trống lại.

Anh đóng kênh #decision-log-tech, đứng dậy rót nước. Ly nước lọc trên bàn đã hết lạnh, có một vệt vòng tròn ẩm trên mặt gỗ. Anh lau bằng khăn giấy, động tác kỹ đến mức tự thấy vô lý.

Tin thứ hai đến trước khi anh kịp uống hết nửa ly.

Lần này là email, được chị Linh forward vào group Cổng Việt — Melbourne.

Tiêu đề tiếng Anh dài:

Request for additional country-of-origin and product certification documentation — Trial shipment VN-MEL-01.

Người gửi là một địa chỉ thuộc Australian Border Force.

Chị Linh chỉ thêm một dòng tiếng Việt trước email:

Bên Melbourne vừa nhận thông báo này. Úc yêu cầu khác Nhật. Em đọc rồi, đang tách các mục cần xử lý. Deadline 14 ngày nếu không lô thử bị return.

Hoàng mở email.

Tiếng Anh hành chính của Úc lạnh và khô hơn email của Nhật. Không vòng vo. Lô thử nghiệm Melbourne gồm tài liệu giáo dục, một số sản phẩm thực phẩm đóng gói khô, trà miền Trung và bộ quà văn hóa nhỏ cho nhóm Việt kiều ở Footscray. Hàng đã đến cảng kiểm tra nhưng bị giữ lại ở bước chứng từ bổ sung. Australian Border Force yêu cầu chứng nhận nguồn gốc theo mẫu của Úc, thông tin nhà sản xuất, mô tả thành phần sản phẩm thực phẩm, bằng chứng hàng không thuộc nhóm cấm nhập, và bản xác nhận nhãn tiếng Anh phù hợp tiêu chuẩn sở tại.

Không giống Nhật.

Ở Nhật, phiếu nguồn gốc song ngữ và chuỗi giấy tờ từ anh Tuệ, Hiếu, Nam Hải đã đủ mở cánh cửa đầu tiên. Úc đòi một thứ khác: không chỉ biết hàng từ đâu đến, mà còn biết ai chịu trách nhiệm khi sản phẩm đi vào thị trường Úc, nhãn nào đứng trước người tiêu dùng, thành phần nào phải khai báo bằng tiêu chuẩn của họ.

Chị Linh tiếp tục gửi thêm ba tin nhắn trong group:

1. Đang hỏi nhóm Melbourne có ai quen broker hải quan Úc không.

2. Sẽ liên hệ anh Tuệ xem từng gặp yêu cầu tương tự với hàng đi Úc chưa, nhưng khả năng Nhật không giúp được nhiều.

3. Cần map lại từng mặt hàng theo chuẩn Úc. Em sẽ lập sheet trong chiều nay.

Khoa thả một tin nhắn từ Cần Thơ:

Nếu cần thông tin nhà cung cấp miền Trung, ping tao. Hùng/Lan lấy được số nhanh.

Phương Anh trả lời:

Linh lập sheet. Tôi check phần trách nhiệm pháp lý và nhãn tiếng Anh. Không trả lời ABF trước khi tôi đọc bản draft.

Chị Linh gửi:

Oke.

Một luồng công việc hình thành trong chưa đầy năm phút.

Hoàng đọc lại email của Australian Border Force.

Anh từng làm phiếu nguồn gốc đầu tiên. Tờ A5 song ngữ Việt-Nhật. Nước mắm ủ bao lâu, bánh tráng phơi thế nào, trà hái ở đâu. Anh nhớ từng lựa chọn câu chữ, nhớ chị Linh đã sửa bản dịch ra sao, nhớ anh Tuệ cầm phiếu và nói lần đầu dám bán giá đúng.

Vậy nên khi thấy chữ “country-of-origin documentation” trên email Úc, tay anh tự tìm tới bàn phím.

Anh mở khung trả lời riêng cho chị Linh.

Chị gửi toàn bộ tài liệu Úc cho em, em đọc cùng. Phần certificate of origin mình có thể mapping từ phiếu nguồn gốc Nhật, nhưng phải thêm…

Anh dừng.

Phần “nhưng phải thêm” lơ lửng cuối câu.

Phải thêm gì?

Nhãn tiếng Anh theo chuẩn Úc. Tư cách importer. Mô tả thành phần. Có thể cần broker. Có thể cần giấy của nhà sản xuất. Có thể cần nhiều thứ anh chưa biết.

Chị Linh đang tách mục. Phương Anh đang đọc pháp lý. Khoa đang mở đường nhà cung cấp. Nhóm Melbourne có mạng lưới người Úc gốc Việt. Anh không có dữ liệu hơn họ, chỉ có trí nhớ về lần làm Nhật và thói quen tin rằng nếu mình đọc thì mọi thứ sẽ rõ nhanh hơn.

Hoàng xóa tin nhắn.

Anh đặt điện thoại úp xuống bàn.

Năm giây sau, lại lật lên.

Không có thông báo mới.

Anh mở decision log của Minh. Rồi mở email của chị Linh. Hai cửa sổ nằm cạnh nhau trên màn hình.

Một bên là database schema với legacy_customer_alias, paid_status_mismatch, timezone_offset.

Một bên là ABF, country of origin, product certification, 14 days.

NỢ SỔ và Cổng Việt.

Hai trụ cột khác nhau. Hai thứ anh đã từng tự tay đặt viên gạch đầu tiên. Hai nơi bây giờ có người chịu trách nhiệm rõ ràng.

Cả hai cùng căng lên trong một buổi sáng.

Không có tiếng còi báo động. Không có Hệ thống nhấp nháy. Không có thanh rủi ro đỏ.

Chỉ có điện thoại nằm trên bàn và ngón tay anh muốn gõ vào mọi ô trống.


Mười một giờ, Phương Anh bước vào phòng họp nhỏ với một tập giấy mỏng trên tay.

Cô không gõ cửa. Từ lâu giữa họ không còn nghi thức đó khi phòng không khóa. Áo sơ mi trắng của cô xắn tay tới khuỷu, tóc buộc gọn, bút đỏ kẹp ở bìa tập giấy. Trên cổ tay có vệt mực nhỏ, chắc từ lúc cô đánh dấu bản in báo cáo tài chính.

“Anh đọc log của Minh rồi?”

“Rồi.”

“Email Melbourne?”

“Rồi.”

Phương Anh đặt tập giấy xuống bàn. Trên trang đầu là bảng rủi ro ngắn: migration delay, Board disclosure, Melbourne documentation, legal exposure.

“Migration không đe dọa sống còn,” cô nói. “Nhưng nếu không thông báo trước, Tan sẽ hỏi vì sao dòng savings trong Q4 hụt. Tôi xử lý được. Minh cần hai tuần, tôi sẽ bảo vệ hai tuần đó trước Board nếu decision log của cậu ấy đủ chặt.”

Hoàng gật.

“Melbourne?”

“Khó hơn Nhật. Không phải vì họ gây khó. Vì tiêu chuẩn khác. Chị Linh đang làm đúng: tách từng mặt hàng, tìm người rành địa phương, không trả lời vội. Tôi sẽ khóa mọi email chính thức trước khi gửi.”

“Ừ.”

Phương Anh nhìn anh. “Anh chỉ nói được ừ thôi à?”

Hoàng khựng lại. “Em muốn anh nói gì?”

“Tôi đang xem anh muốn nói gì.”

Câu đó đặt xuống bàn rất nhẹ, nhưng Hoàng nghe rõ tiếng kim rơi trong đầu.

Anh kéo ghế ngồi xuống. Phòng họp có mùi bút lông cũ và cà phê. Ngoài cửa kính, Trâm đi ngang, tay cầm xấp giấy in mới, không nhìn vào trong.

“Minh có thể cần người nhớ schema cũ,” Hoàng nói. “Một số bảng là anh viết từ giai đoạn đầu.”

“Minh biết.”

“Nhưng không chắc cậu ấy biết vì sao hồi đó anh làm vậy.”

“Decision log có mục ‘unknown legacy rationale’ rồi. Cậu ấy sẽ hỏi nếu cần.”

Hoàng nhìn tập giấy của Phương Anh. Bút đỏ khoanh dòng “Board disclosure”.

“Còn Melbourne,” anh nói, “phiếu nguồn gốc ban đầu là anh thiết kế. Úc khác Nhật, nhưng một phần logic có thể dùng lại.”

“Chị Linh cũng biết phiếu đó. Chị ấy dịch nó, bán nó, nghe khách đọc nó, và đang mở thị trường mới từ nó.”

Hoàng không phản bác.

Phương Anh kéo ghế đối diện anh. Cô không ngồi hẳn, chỉ tựa nhẹ vào mép bàn, hai tay đặt lên tập giấy.

“Anh đang định nhảy vào đúng không?”

Không có từ nào thừa.

Hoàng nhìn cô. Trong một giây, anh muốn cười cho qua. Muốn nói “đâu có”, hoặc “anh chỉ đọc thôi”, hoặc “CEO phải nắm tình hình”. Tất cả đều là những câu có thể đúng về mặt câu chữ và sai ở phần lõi.

Anh để khoảng trống kéo dài thêm một nhịp.

Phương Anh hiểu trước khi anh nói.

“Có,” Hoàng đáp.

“Cả hai việc?”

“Ừ.”

“Muốn nhắn Minh?”

“Anh đã gõ rồi xóa.”

“Muốn nhắn chị Linh?”

“Cũng vậy.”

Phương Anh gật, không tỏ vẻ thắng. Cô kéo tập giấy về phía mình, lật sang trang thứ hai.

“Minh có decision log. Chị Linh có mạng lưới.” Cô ngẩng lên nhìn thẳng vào anh. “Anh có gì mà họ không có — ngoài thói quen không buông được?”

Câu đó không lớn tiếng. Nó còn bình thản đến mức khó chịu.

Hoàng đặt tay lên mặt bàn. Gỗ lạnh dưới lòng bàn tay.

“Anh có ký ức về code cũ,” anh nói, giọng thấp hơn.

“Minh có log, audit pipeline và quyền hỏi anh khi cần.”

“Anh có kinh nghiệm từ Nhật.”

“Chị Linh có anh Tuệ, Hiếu, Melbourne, và bốn năm sống ở nước ngoài. Cô ấy biết cảm giác đứng giữa hai hệ thống hành chính hơn anh.”

Hoàng mím môi.

Phương Anh chậm lại một nhịp, không phải mềm hơn, chỉ để câu tiếp theo không thành nhát dao thừa.

“Anh nghĩ nếu anh không vào thì họ sẽ thất bại à?”

“Không.”

“Vậy anh sợ gì?”

Hoàng không trả lời ngay.

Bên ngoài, tiếng máy in chạy rè rè. Một người nào đó cười nhỏ ở cụm kỹ thuật. Cuộc sống của văn phòng không dừng lại để chờ anh gọi tên nỗi sợ.

Anh nhìn xuống điện thoại nằm úp trên bàn. Mặt lưng đen phản chiếu méo mó đèn trần.

“Sợ họ cần mà anh không ở đó,” anh nói.

Phương Anh không chớp mắt. “Hay sợ họ không cần?”

Câu này tới chậm hơn, nhưng nặng hơn.

Hoàng thở ra bằng mũi. Anh muốn nói “không phải”. Nhưng lần này chữ đó không đứng vững.

Phương Anh ngồi hẳn xuống ghế đối diện.

“Anh vừa trải qua mấy ngày thấy Khoa tuyển người không cần anh, Trâm đào tạo không cần anh. Hôm nay Minh và chị Linh gặp vấn đề thật. Không phải việc nhỏ trong HR module nữa. Việc có thể ảnh hưởng Board, khách hàng, lô Melbourne. Nếu họ xử lý được, câu ‘tổ chức sống không qua tay anh’ sẽ không còn là dòng đẹp trong sổ. Nó thành sự thật vận hành.”

“Và nếu họ xử lý không được?”

“Thì quy trình sẽ kéo anh vào bằng đúng cửa cần kéo. Minh sẽ hỏi schema. Chị Linh sẽ cần tài liệu. Tôi sẽ yêu cầu anh ký disclosure Board. Khoa sẽ cần nguồn lực. Khi đó anh vào bằng vai trò của anh, không phải bằng phản xạ của người thấy chỗ trống là nhét tay vào.”

Hoàng nhìn cô, rồi nhìn bảng trắng sau lưng. Ba dòng việc buổi sáng vẫn còn đó. “Board Q4” nằm ở dòng thứ ba, chữ viết hơi nghiêng.

“Khó thật,” anh nói.

“Ừ.” Phương Anh không an ủi. “Vì trước đây anh không cần phân biệt giữa giúp và chiếm chỗ. Anh giỏi quá nên hai thứ đó trộn vào nhau rất lâu.”

Hoàng bật ra một tiếng cười ngắn, không vui hẳn. “Nghe giống lời khen bị bọc dao.”

“Không bọc. Dao để ngoài.”

Lần này anh cười thật hơn.

Phương Anh đóng tập giấy lại. “Tôi sẽ gửi Board risk note trước 15h, không cần anh sửa. Minh gửi ETA audit pipeline trước 18h, tôi đọc. Chị Linh lập sheet Melbourne, tôi đọc pháp lý. Anh làm gì?”

Hoàng nhìn danh sách việc của mình.

“Đọc báo cáo retention miền Tây,” anh nói sau một lúc. “Duyệt ngân sách máy chủ.”

“Đúng việc của anh.”

“Ngân sách máy chủ liên quan migration.”

“Liên quan tài chính. Không phải schema.”

“Ừ.”

Phương Anh đứng dậy. Trước khi ra cửa, cô quay lại.

“Hoàng.”

“Sao?”

“Nếu anh muốn tin họ, đừng tin bằng miệng. Tin bằng thời gian không can thiệp.”

Cô đi ra ngoài.

Cửa kính đóng lại sau lưng, tiếng trong văn phòng giảm xuống một lớp.

Hoàng ngồi trong phòng họp thêm một lúc. Trên màn hình laptop, hai tab vẫn mở. Migration. Melbourne.

Hai vấn đề. Hai người chịu trách nhiệm.

Không phải anh.


Đầu giờ chiều, văn phòng nóng hơn dù máy lạnh vẫn chạy. Nắng đập vào kính phía ngoài, rèm kéo nửa chừng tạo thành những vệt sáng dài trên sàn.

Hoàng ngồi ở bàn làm việc đọc báo cáo retention miền Tây. Cần Thơ giữ 92%, Long Xuyên thử nghiệm 88%, nhóm khách mới do Lan sẽ chăm sóc chưa đủ dữ liệu. Anh cố tập trung vào từng bảng số. Cứ vài phút, mắt lại trượt lên góc màn hình nơi Slack có biểu tượng chưa đọc.

Kênh kỹ thuật có cập nhật.

Minh gửi một thread mới:

Audit pipeline draft: 5 bước. 1) detect duplicate soft-key. 2) normalize timezone. 3) reconcile paid_status. 4) dry-run migration. 5) customer-facing validation sample. ETA full scan: 36h. Need Đạt/Bình run scripts tonight.

Đạt phản hồi bằng biểu tượng đã nhận.

Bình hỏi một câu về timezone.

Minh trả lời ngay, không cần Hoàng.

Ở group Melbourne, chị Linh gửi link Google Sheet:

Sheet ABF — version 0.1. Đã tách 23 mặt hàng. Cột còn trống: chuẩn nhãn tiếng Anh, chứng nhận nhà sản xuất, importer responsibility. Nhóm Melbourne đang tìm broker. PA xem giúp phần trách nhiệm pháp lý.

Phương Anh trả lời:

Đang xem. Cột importer responsibility không được để nhóm cộng đồng đứng tên cá nhân. Phải có pháp nhân hoặc đối tác logistics Úc.

Chị Linh:

Hiểu. Em hỏi họ về lựa chọn broker trước.

Mọi thứ đang chạy.

Hoàng đọc từng tin. Không ai tag anh.

Anh quay lại báo cáo retention. Dòng chữ nhảy qua mắt mà không vào đầu. Anh lấy bút ghi vài con số ra sổ tay: Cần Thơ 92, Long Xuyên 88, churn do onboarding. Chữ viết trên giấy giúp anh giữ mình ở hiện tại.

Điện thoại rung.

Tin nhắn riêng từ Minh.

Hoàng cầm lên quá nhanh.

Minh viết:

Anh có nhớ hồi monolith PHP, mình từng import batch từ file Excel của Khoa không? Em thấy một nhóm customer_alias có pattern lạ năm 2015.

Tim Hoàng đập mạnh một nhịp. Đây rồi. Cửa kéo anh vào.

Anh gõ:

Có. Batch đó anh viết. Để anh mở lại schema…

Rồi dừng.

Minh chưa hỏi anh mở schema. Minh hỏi anh có nhớ không.

Hoàng xóa vế sau.

Anh trả lời:

Có. Batch đó dùng tên khách + số điện thoại nếu có, không có thì fallback theo thứ tự dòng Excel. Khoa hồi đó nhập từ sổ giấy nên nhiều khách trùng tên. Em cần context phần nào?

Minh trả lời sau một phút:

Đủ rồi. Em sẽ viết detector cho nhóm fallback theo row_order. Nếu cần thêm em hỏi.

Ừ.

Hoàng đặt điện thoại xuống.

Bàn tay anh còn căng.

Một câu trả lời ngắn. Đúng phạm vi. Không mở repo. Không viết script. Không xin tham gia review.

Nó nhỏ đến mức nếu kể ra sẽ buồn cười.

Nhưng với anh, đó là một lần giữ tay khỏi vô lăng.

Mười phút sau, chị Linh nhắn riêng.

Em có nhớ phiếu nguồn gốc bản Nhật mình từng ghi phần nhà sản xuất thế nào không? Chị muốn xem lại tone, không phải nội dung. Úc cần tiếng Anh nhưng chị không muốn nó thành brochure giả tạo.

Hoàng nhìn tin nhắn. Lần này anh không gõ dài.

Bản Nhật mình ghi theo hướng: ai làm, ở đâu, quy trình thật, tránh tính từ lớn. Chị có bản cũ trong folder Cổng Việt/Nhật/phiếu nguồn gốc. Nếu cần em gửi link.

Chị Linh trả lời:

Chị có. Cảm ơn. Chị tự sửa.

Hai chữ “tự sửa” làm Hoàng ngồi yên thêm vài giây.

Không đau như buổi sáng.

Vẫn có một chỗ trong ngực hơi hụt, nhưng không còn sắc.

Anh mở báo cáo retention lại. Lần này đọc được hết trang.


Gần sáu giờ, Minh gửi ETA audit pipeline đúng giờ.

Phương Anh đi ngang qua bàn Hoàng, dừng lại, gõ nhẹ hai đốt tay xuống mặt bàn.

“Anh sống sót qua buổi chiều rồi.”

Hoàng ngẩng lên. “Nghe như cai thuốc.”

“Có khác nhiều không?”

Anh nghĩ một chút. “Cai thuốc còn có miếng dán nicotine. Cái này không có.”

“Có.” Phương Anh chỉ vào sổ tay của anh. “Viết xuống.”

Hoàng nhìn cuốn sổ đang mở. Trên trang giấy có ba dòng số retention và hai câu anh ghi giữa buổi:

Trả lời context, không nhận việc.

Gửi nguyên tắc, không viết thay.

Phương Anh đọc được, khóe miệng hơi nhấc. “Tiến bộ.”

“Đừng khen. Nghe nguy hiểm.”

“Tôi không khen. Tôi ghi nhận.”

Cô đặt lên bàn anh một tờ giấy in. “Risk note gửi Board. Anh đọc để biết, không phải để sửa. Nếu có điểm sai sự thật thì nói.”

Hoàng nhận tờ giấy. Bản ghi rất ngắn: migration Core dời 14 ngày vì dữ liệu legacy; chi phí server tăng tạm thời; CTO chịu trách nhiệm audit pipeline; CFO cập nhật Q4 forecast; CEO nắm tình hình. Không có câu nào xin lỗi trước. Không có câu nào đổ lỗi. Không có chữ “Hoàng sẽ trực tiếp giám sát”.

Anh đọc xong, đặt xuống.

“Không sai.”

“Vậy tôi gửi.”

“Ừ.”

Phương Anh đứng thêm một lúc. “Melbourne tối nay chị Linh họp với nhóm bên đó. Tôi ngồi cùng phần pháp lý. Anh có muốn ngồi nghe không?”

Câu hỏi này có bẫy, nhưng không phải bẫy xấu. Nó cho anh quyền chọn.

Hoàng xoay bút trong tay.

“Không,” anh nói. “Nếu cần chị ấy sẽ gọi.”

Phương Anh nhìn anh một giây, rồi gật.

“Được.”

Cô đi về bàn mình.

Văn phòng bắt đầu chuyển sang nhịp tối. Đạt ra ngoài mua bánh mì. Bình kéo ghế sang bàn Minh. Trâm tắt tai nghe, duỗi cổ tay. Ngoài đường, xe máy dày lên, ánh đèn đỏ nối thành một vệt dài qua kính.

Hoàng mở Slack một lần nữa.

Trong kênh kỹ thuật, Minh đang phân việc cho Đạt và Bình chạy script qua đêm.

Trong group Melbourne, chị Linh ghim sheet ABF lên đầu kênh và viết:

20h họp với Melbourne. Mục tiêu: tìm broker/đối tác đứng importer responsibility. Không hứa timeline cho khách trước khi có xác nhận giấy tờ.

Câu “không hứa timeline trước khi có xác nhận” làm Hoàng nhớ tới nhóm Line Tokyo, nhớ câu chị Linh từng tự gửi: không hứa nhanh, hứa đúng.

Anh không cần nhắc lại.

Chị biết.

Minh cũng biết deadline không đáng đổi lấy dữ liệu bẩn.

Khoa biết tuyển người tuyến đầu không phải chờ CEO nhìn mặt.

Phương Anh biết khi nào dao cần để ngoài.

Hoàng tắt Slack.

Anh cầm điện thoại lên.

Màn hình khóa sáng. Không có thông báo mới.

Ngón tay anh mở khung chat với Minh. Con trỏ nhấp nháy trong ô trống.

Em cần anh review schema không?

Câu này hiện ra lần nữa, ngắn hơn buổi sáng. Lần này không có đoạn giải thích về code cũ, không có “anh viết”. Chỉ một đề nghị nghe có vẻ hữu ích.

Anh nhìn nó.

Nếu Minh cần, Minh sẽ hỏi. Buổi chiều cậu ấy đã hỏi đúng một mảnh context và đi tiếp. Đó là quy trình đang sống.

Hoàng xóa câu đó.

Anh mở khung chat với chị Linh.

Chị gửi tài liệu Úc cho em, em đọc.

Câu này còn khó xóa hơn. Vì nó giống quan tâm. Giống em trai muốn giúp chị. Giống người từng cùng chị xây phiếu nguồn gốc đầu tiên muốn bảo vệ thị trường mới.

Nhưng chị Linh đã lập sheet, đã gọi Melbourne, đã kéo Phương Anh vào đúng chỗ. Nếu cần anh đọc, chị sẽ gửi.

Hoàng xóa.

Điện thoại trở về màn hình chat trống.

Anh đặt nó xuống, màn hình úp xuống mặt bàn.

Hai vấn đề.

Hai người chịu trách nhiệm.

Không phải anh.

Câu đó không làm anh nhẹ đi ngay. Nó nằm trong ngực như một viên đá nhỏ, vừa cấn vừa chắc.

Ngoài kia, Minh đứng trước bảng trắng cùng Đạt và Bình, bút lông trong tay, nói gì đó về timezone. Ở bàn bên kia, Phương Anh đeo tai nghe chuẩn bị họp với chị Linh và Melbourne. Trâm mở hộp bánh mì Đạt vừa mua, bẻ đôi chia cho Hà đang trực CS muộn.

Tổ chức vẫn chạy.

Không phải vì Hoàng đứng giữa.

Và lần đầu tiên trong ngày, anh không cố chen vào tiếng máy đang vận hành ấy.

Anh kéo cuốn sổ tay lại gần, mở trang mới, viết một dòng:

Im lặng hôm nay không phải bỏ mặc. Là để người khác có đủ chỗ làm phần của họ.

Bút dừng trên dấu chấm cuối.

Điện thoại vẫn nằm úp.

Hoàng để nó yên.