Ba giờ hai mươi sáu phút, Lâm Dư An đóng cửa sổ chat với đội Product rồi nhìn lại lịch lần nữa. Cuộc họp tiếp theo chỉ có hai người, nội dung đã được đặt từ cuối buổi kick-off sáng.
15:30 — Data scope alignment
Người tổ chức: Tống Hoài Cẩn
Người tham dự: Lâm Dư An
Không có gì đáng để nhìn lâu. Một cuộc họp ba mươi phút giữa hai đầu mối của cùng một dự án, nội dung đã ghi rõ, phòng họp cũng chỉ cách bàn cậu chưa tới hai mươi mét. Dư An khóa màn hình, cầm laptop và cuốn sổ mỏng lên. Cậu không có thói quen đến muộn với những cuộc họp mình đã bấm Accept.
Lúc cậu đẩy cửa phòng họp nhỏ, đồng hồ trên tường vừa chuyển sang ba giờ hai mươi chín. Hoài Cẩn đã ở đó. Trên màn hình là một bảng trắng với ba cột: Day 1, Archive, Defer. Bên cạnh là danh sách các nhóm dữ liệu đã được phía tập đoàn gửi từ trưa: customer master, contract, invoice, payment, vendor, approval history, access role, audit log. Không có slide giới thiệu, không có phần mở đầu dài dòng.
Hoài Cẩn ngẩng lên. “Tôi lấy phòng sớm năm phút. Cậu muốn bắt đầu luôn hay đúng giờ?”
Câu hỏi làm Dư An khựng chưa tới một giây. Hồi mười tám tuổi, Hoài Cẩn gần như luôn mặc định rằng nếu cả hai đều có mặt thì bắt đầu sớm là hợp lý. Bây giờ người trước mặt lại hỏi cậu có muốn dùng ba phút còn lại hay không.
“Bắt đầu luôn đi.” Dư An đặt laptop xuống. “Tôi bốn giờ có họp khác.”
“Biết.”
Dư An mở máy. “Sáng tôi có nói rồi.”
“Ừ.” Hoài Cẩn kéo ghế ngồi đối diện, không giải thích thêm.
Không phải chuyện đáng để suy nghĩ. Một người phụ trách chương trình nhớ lịch của đầu mối chính là chuyện bình thường. Dư An mở file dữ liệu và đi thẳng vào việc.
“Danh sách bên cậu gửi có một vấn đề.”
“Phần nào?”
“Approval history.”
Hoài Cẩn nhìn màn hình Dư An vừa chia sẻ. “Không lấy được nguyên trạng?”
“Lấy được. Nhưng nếu bên cậu đang hiểu nó là một bảng lịch sử phê duyệt hoàn chỉnh thì không đúng.” Dư An mở sơ đồ dữ liệu. “Hệ thống hiện tại lưu trạng thái cuối ở bảng chính. Một phần lịch sử nằm ở event log, một phần lại nằm trong workflow service cũ. Với các quy trình trước lần nâng cấp hai năm trước, actor ID còn phụ thuộc tài khoản nhân sự đã deactivate.”
Hoài Cẩn nhìn vài giây. “Tức là có trạng thái nhưng chưa chắc truy được đầy đủ ai đã làm gì ở từng bước.”
“Đúng.”
“Có ảnh hưởng số dư không?”
“Không trực tiếp. Nhưng ảnh hưởng khả năng giải thích tại sao một giao dịch được phép đi qua.”
Hoài Cẩn gõ một dòng vào bảng. “Vậy không phải Day 1.”
Dư An nhìn sang. “Tôi chưa nói thế.”
“Cậu định giữ?”
“Giữ lineage, không nhất thiết normalize hết trước cutover.” Dư An kéo một ô từ cột Defer sang Archive. “Nếu chỉ migrate trạng thái cuối, sáu tháng sau có dispute về một payment hoặc credit note thì chúng ta không có đường quay lại workflow cũ. Tôi muốn giữ raw event log và mapping actor ID, còn phần clean history có thể làm sau.”
Hoài Cẩn không phản bác ngay. Cậu hỏi: “Chi phí giữ raw?”
“Storage không đáng kể. Vấn đề là quyền truy cập và dữ liệu cá nhân.”
“Có thông tin nhân sự?”
“Tên, email công ty, ID nội bộ, đôi lúc có comment.”
“Vậy Legal với Security phải vào.”
“Ừ.”
Hoài Cẩn sửa cột trên bảng: Archive — restricted. Động tác rất nhỏ, nhưng Dư An nhận ra mình đã chuẩn bị sẵn một đoạn giải thích dài hơn để bảo vệ quan điểm. Cậu đã quen với những dự án mà phía mua lại nhìn hệ thống target như một thứ cần được ép về chuẩn càng nhanh càng tốt. Hoài Cẩn lại không hề hỏi tại sao không “làm cho sạch luôn”, cũng không dùng timeline sáu mươi ngày để đẩy cậu vào một lựa chọn giả giữa nhanh và đúng.
Dư An nói: “Phần vendor cũng tương tự, nhưng vấn đề khác.”
Hoài Cẩn ngước lên. “Nói đi.”
“Vendor master có thể clean. Tôi chỉ không muốn bên cậu quyết định retention period trước khi hiểu các module đang tham chiếu lịch sử theo cách nào.”
“Cậu cần bao lâu để xác nhận?”
“Ít nhất hai ngày.”
“Có làm chậm tuần một không?”
“Không, nếu chưa khóa scope.”
Hoài Cẩn dừng bút. “Vậy chưa khóa.”
Dư An ngẩng lên. Ở những thương vụ cậu từng hỗ trợ khách hàng trước đây, hai chữ “chưa khóa” thường kéo theo một cuộc mặc cả mới về deadline. Người phụ trách chương trình sẽ hỏi có thể rút hai ngày thành một ngày không, hoặc yêu cầu đội hệ thống đưa ra con số tạm để còn báo cáo lên trên. Hoài Cẩn không làm vậy. Trên bảng trắng, mục vendor chỉ được chuyển sang trạng thái mở, bên cạnh có một dòng rất ngắn: dependency validation pending. Không ngày giả định, không con số dùng tạm rồi sau này trở thành cam kết thật.
“Gì?” Hoài Cẩn hỏi.
“Không có gì.”
Hai chữ vừa ra khỏi miệng, Dư An tự thấy buồn cười. Có những câu tưởng đã bỏ lại từ rất lâu, đến lúc gặp đúng người lại quay về nhanh hơn mình muốn. Cậu cúi xuống màn hình. “Tôi chỉ nghĩ bên PMI thường thích chốt càng sớm càng tốt.”
“Thích.”
“Nhưng?”
“Chốt sai thì sửa lâu hơn.” Hoài Cẩn nói. “Nếu cậu là người hiểu dependency này nhất, tôi không có lý do chốt trước khi cậu kiểm tra.”
Một câu hoàn toàn thuộc về công việc. Không có gì trong đó yêu cầu Dư An phải nhìn sang người đối diện lâu hơn bình thường.
Cậu chuyển sang tab tiếp theo. “Contract history.”
Hai mươi phút sau, bảng trắng đã kín hơn. Customer master thuộc Day 1 nhưng phải tách dữ liệu marketing consent. Contract cần giữ toàn bộ bản có hiệu lực và một lớp archive cho hợp đồng hết hạn còn nghĩa vụ hậu mãi. Payment chỉ chuyển các giao dịch mở sang hệ thống vận hành mới, phần lịch sử giữ trong data warehouse có kiểm soát. Approval history bị chia thành clean summary và raw restricted archive.
Họ gần như không phải tranh nhau lượt nói. Hoài Cẩn hỏi về rủi ro ở đúng lúc Dư An vừa chuyển tới phần đó. Dư An nhiều lần mở sẵn file trước khi câu hỏi kết thúc. Có lúc Hoài Cẩn chỉ nhìn một hàng dependency rồi nói “phần này liên quan refund”, Dư An đã kéo ngay sơ đồ credit-note flow lên màn hình.
Đến lần thứ tư, Dư An tựa lưng vào ghế. “Cậu đọc tài liệu này trước rồi à?”
Hoài Cẩn nhìn cậu. “Tài liệu nào?”
“Flow của hệ thống.”
“Bản high-level.”
“Không đủ để biết credit note nằm ở đó.”
“Không.”
“Vậy sao biết?”
Hoài Cẩn nhìn sơ đồ. “Invoice status đổi sau payment adjustment. Nếu không có refund hoặc credit note thì thiết kế như vậy hơi thừa.”
Dư An im một nhịp rồi gật đầu. “Đúng.”
Bảy năm trước, cậu từng ghét cái cách Hoài Cẩn có thể nhìn một bảng kế hoạch rồi lập tức tìm ra lỗ hổng người khác chưa thấy. Sau đó cậu từng thích chính điều đó. Bây giờ, trong một phòng họp kính ở tầng mười hai, Dư An nhận ra năng lực ấy không những không biến mất mà còn được mài sắc hơn rất nhiều.
Nó khiến làm việc cùng người này dễ một cách khó chịu. Ba giờ năm mươi bảy, Hoài Cẩn đóng bút.
“Dừng ở đây.”
Dư An đang mở một file khác. “Còn access role.”
“Cậu bốn giờ có họp.”
Dư An nhìn góc màn hình. 15:57.
“Ba phút đủ nói role matrix.”
“Không đủ để quyết.” Hoài Cẩn đứng dậy, bấm lưu bảng trắng. “Tôi gửi biên bản. Phần role để sau khi Security xác nhận mô hình quyền mới.”
Dư An đóng file. “Được.”
Hoài Cẩn nói tiếp: “Tôi sẽ để các mục chưa xác nhận là open, không ghi target date trước.”
“Cảm ơn.”
“Không cần.”
Câu trả lời quen đến mức Dư An ngước lên theo phản xạ. Hoài Cẩn cũng như nhận ra điều gì đó, nhưng nét mặt không đổi. Giữa hai người chỉ có một khoảng lặng rất ngắn, rồi tiếng thông báo lịch trên laptop Dư An vang lên.
Cậu đứng dậy. “Tôi đi họp.”
“Ừ.”
Dư An cầm laptop ra cửa. Hoài Cẩn gọi lại khi tay cậu vừa chạm nắm cửa.
“Dư An.” Dư An quay lại. “Phần approval history, nếu Legal muốn bỏ raw log vì dữ liệu nhân sự, báo tôi trước khi đồng ý.”
Dư An hơi nhíu mày. “Tại sao?”
“Vì phía chương trình sẽ phải chọn giữa compliance risk và auditability. Đó không phải quyết định của riêng hệ thống.”
“Cậu sợ tôi tự quyết à?” Câu hỏi bật ra trước khi Dư An cân nhắc xem nó có mang nghĩa gì khác ngoài công việc hay không.
Hoài Cẩn không né. “Tôi không muốn bất kỳ đầu mối nào phải tự nhận phần rủi ro không thuộc quyền quyết định của họ.”
Dư An đã nghe nhiều quản lý nói gần giống như thế, nhất là ở đầu dự án khi mọi người còn đủ kiên nhẫn với governance. Khác biệt chỉ nằm ở việc Hoài Cẩn vừa làm đúng điều đó trong suốt nửa giờ: những gì Dư An có quyền xác nhận thì cậu để Dư An xác nhận; những gì cần Legal, Security hoặc chương trình chịu trách nhiệm thì cậu không đẩy xuống cho một người quyết thay. Dư An không biết đó là thói quen nghề nghiệp mới hay chỉ là cách Hoài Cẩn làm việc với tất cả mọi người. Cậu cũng không định hỏi.
Dư An nhìn cậu hai giây. “Biết rồi.” Lần này người kết thúc câu chuyện là cậu.
Bốn giờ mười, cuộc họp Product bị kéo sang chuyện hoàn toàn khác: đội phát triển muốn thay rule xác định account owner trước khi migration để giảm số record phải map lại. Dư An phản đối vì một thay đổi như vậy sát thời điểm tích hợp sẽ khiến dữ liệu lịch sử và dữ liệu vận hành cùng mang hai logic ownership khác nhau. Bốn giờ bốn mươi lăm, cậu thắng được một thỏa hiệp: không đổi rule ở production, chỉ tạo lớp mapping riêng cho dữ liệu chuyển đổi.
Năm giờ mười, cậu trở về bàn với một cốc nước đã nguội và ba mươi bảy tin nhắn chưa đọc. Biên bản cuộc họp 15:30 đã nằm trong workspace chung. Hoài Cẩn ghi rất ngắn, đúng những gì hai người đã thống nhất. Các điểm chưa xác nhận đều để trạng thái OPEN, owner chia theo chức năng, không có dòng nào biến “cần kiểm tra” của Dư An thành một deadline đã hứa. Dư An đọc hết một lượt rồi đóng lại.
Chị Hà từ bàn bên kia đi tới, đặt điện thoại xuống cạnh laptop cậu. “Bên tập đoàn vừa hỏi chị có thể cho em dành khoảng ba mươi phần trăm capacity trong hai tuần đầu không.”
Dư An ngẩng lên. “Ba mươi phần trăm là cách nói lịch sự của bao nhiêu?”
“Khoảng năm mươi.”
“Em biết ngay.”
“Chị chưa đồng ý.” Hà kéo ghế ngồi xuống. “Anh Cẩn ghi rõ nếu quá tải thì ưu tiên production và customer issue trước. Integration không được kéo em khỏi vận hành.”
Dư An không nói gì ngay. Hà nhìn cậu. “Sao?”
“Không sao.”
“Em biết người ta thật à?” Câu hỏi lần này không đến trong phòng họp đông người mà ở ngay bàn làm việc, giọng chị Hà chỉ có tò mò vừa đủ của một người quản lý muốn biết hai đầu mối có lịch sử gì ảnh hưởng dự án hay không.
Dư An xoay cây bút trong tay. “Học cùng trường hồi cấp ba.”
“Thân không?”
“Bảy năm không gặp.”
Hà hiểu đó là câu trả lời dừng ở đâu. Chị gật đầu. “Miễn hai đứa làm việc được với nhau thì chị không cần biết thêm.”
“Làm được.”
“Chị thấy.” Hà đứng dậy. “Sáng nay hai đứa nói chuyện như đã làm chung dự án này ba tháng.”
Dư An nhìn màn hình. “Trùng cách làm việc thôi.”
“Ừ.” Hà cầm điện thoại. “Trùng rất tiện cho chị.”
Dư An bật cười, lần này thật sự. “Chị đi đi.”
Hà đi khỏi. Dư An mở danh sách issue mới để tiếp tục làm việc.
Năm giờ ba mươi hai, một ticket từ đội Data Engineering được đẩy lên mức đỏ: Legacy workflow export — actor mapping incomplete. Dư An mở ngay. Batch thử đầu tiên cho dữ liệu approval history vừa chạy xong. Gần mười tám phần trăm event cũ không map được actor sang employee directory hiện tại. Phần lớn là tài khoản đã nghỉ việc, tài khoản service hoặc ID từ hệ thống trước khi công ty đổi nền tảng xác thực. Nếu bỏ actor, lịch sử phê duyệt mất ý nghĩa. Nếu giữ nguyên raw ID, bên tập đoàn không thể đọc được. Nếu cố map thủ công, khối lượng đủ để phá timeline.
Cậu kéo log mẫu xuống, kiểm tra vài dòng rồi gọi người phụ trách Data. “Em chạy sample theo năm chưa?”
“Rồi anh. Tệ nhất là nhóm trước lần đổi identity provider. Có một số record còn không có email cũ.”
“Đừng sửa production mapping. Giữ nguyên batch.”
“Bên PMI đang cần scope tối nay.”
“Chưa ai được scope hộ log khi chưa hiểu nó.” Dư An mở workspace. “Anh xử lý.”
Cậu định tag Quang, người điều phối planning hằng ngày, nhưng dừng lại khi nhìn lại biên bản 15:30. Vấn đề này ảnh hưởng trực tiếp quyết định Archive restricted vừa thống nhất và có thể thay đổi scope dữ liệu lịch sử. Theo phân công buổi sáng, owner phía chương trình cho những việc như vậy là Hoài Cẩn.
Dư An gõ trong kênh chung, không nhắn riêng:
Dư An: Approval-history sample vừa fail actor mapping ~18%. Tôi đề nghị chưa chốt retention/scope phần này. Data team sẽ giữ nguyên raw batch, không sửa mapping cho tới khi review.
Ba phút sau có phản hồi.
Tống Hoài Cẩn: Đồng ý. Không thay đổi scope tối nay.
Sau đó là một dòng khác.
Tống Hoài Cẩn: Cậu cần ai tham gia review?
Dư An nhìn câu hỏi. Không phải “Tôi sẽ kéo Legal vào”. Không phải “Mai họp với Security”. Chỉ là cậu cần ai. Cậu kiểm tra ticket lần nữa rồi trả lời.
Dư An: Data Engineering + Security trước. Legal chỉ cần sau khi xác định dữ liệu nào thực sự phải giữ.
Tống Hoài Cẩn: Được. Cậu chọn người phía target. Tôi kéo Security phía tập đoàn.
Dư An: 9:00 mai.
Tống Hoài Cẩn: Tôi trống.
Dư An tạo lịch. Lần này người tổ chức là cậu.
09:00 — Legacy approval lineage review
Cậu thêm Data Engineering, Security, Quang và Hoài Cẩn. Trước khi gửi, Dư An đọc lại danh sách một lần, không vì cái tên nào cụ thể mà chỉ để chắc không thiếu owner.
Lời mời được gửi đi lúc năm giờ bốn mươi mốt. Chưa đầy một phút, trạng thái bên cạnh tên Tống Hoài Cẩn chuyển thành Accepted. Dư An nhìn màn hình rồi tiếp tục đọc log.
Thứ khiến cậu khó chịu nhất trong ngày không phải việc phải gặp lại người yêu cũ sau bảy năm. Cũng không phải chuyện hai người vẫn hiểu cách làm việc của nhau quá nhanh.
Mà là đến cuối ngày đầu tiên, Dư An không tìm được một lý do chuyên môn nào để tránh làm việc với Tống Hoài Cẩn.