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

Chương 60 — Quán cà phê không phỏng vấn

Quán cà phê nằm trong một con đường nhỏ cắt ngang khu Bách Khoa, bảng hiệu đã bạc màu nắng. Bên ngoài, xe máy dựng chen nhau đến sát mép vỉa hè. Một nhóm sinh viên mặc áo khoác đồng phục khoa Công nghệ thông tin đứng dưới gốc cây, vừa uống trà đá vừa tranh luận về đồ án, trên tay còn cầm bo mạch gói trong túi nilon.

Hoàng đến sớm mười phút.

Minh đã ngồi ở bàn trong góc.

Điều đó làm Hoàng dừng lại nửa nhịp trước cửa.

Minh không chọn bàn sát ổ cắm đẹp nhất, cũng không chọn chỗ nhìn ra đường. Anh ngồi ở góc có thể thấy cả cửa ra vào lẫn quầy pha chế, lưng không quay hẳn về ai. Laptop mở sẵn. Bên cạnh là ly cà phê đen đá đã vơi một phần ba, không ống hút. Trên bàn còn có một quyển sổ gáy lò xo, bút bi Thiên Long đặt ngang mép giấy.

Người này đến để làm việc, không phải để gây ấn tượng.

Hoàng đi tới.

Minh ngẩng lên. Ngoài đời, anh gầy hơn ảnh CV, tóc cắt ngắn, cằm hơi lởm chởm râu vì chắc chưa kịp cạo kỹ. Áo sơ mi xám xắn tay, túi laptop cũ đặt dưới ghế. Mắt anh quét qua Hoàng trong một giây, dừng lại ở balô học sinh trên vai, rồi quay về mặt.

“Hoàng?”

“Dạ. Em là Hoàng.”

Minh đứng dậy, bắt tay. Lực vừa đủ. Không siết để thử, không buông hờ.

“Minh.”

“Cảm ơn anh đã tới.”

“Tôi ở gần đây.” Minh ngồi xuống. “Với lại tôi muốn biết email của mình có bị đọc lướt không.”

Hoàng kéo ghế. Ghế gỗ cạ xuống nền gạch, âm thanh khô. Anh đặt balô cạnh chân, gọi một ly cà phê sữa đá. Người phục vụ ghi vội lên tờ giấy nhỏ rồi đi.

Minh xoay laptop sang một chút, màn hình hiện file PDF quen thuộc. Không lời mở đầu dài, không hỏi công ty có bao nhiêu người, không hỏi mức lương.

“Trước khi nói chuyện vị trí,” Minh nói, “tôi muốn hỏi một câu. Những điểm tôi ghi trong audit, bên anh đã xác nhận lại phần nào chưa?”

“Đồng bộ khi mạng yếu, xác nhận một phần. Lỗi nhân đôi giao dịch chưa chứng minh xảy ra trong production, nhưng khe hở có.”

Minh gật. “Tốt.”

“Backup có cron mỗi ngày. Chưa có point-in-time recovery.”

“Không tốt, nhưng ít nhất anh biết.”

“Log hiện đủ cho em tra server, không đủ cho người khác hỗ trợ khách hàng.”

Minh nhìn anh thêm một lần. “Anh dùng chữ ‘em’ với tôi vì tuổi, hay vì vai trò?”

Câu hỏi đến sớm hơn Hoàng dự tính.

Ly cà phê sữa được đặt xuống bàn. Nước đá va nhẹ vào thành ly. Hoàng cảm ơn người phục vụ, chờ cô rời đi rồi mới đáp.

“Vì tuổi. Em nhỏ hơn anh.”

“Nhỏ hơn bao nhiêu?”

“Em mười tám.”

Lần này đến lượt Minh dừng.

Không dài. Chỉ đủ để tiếng máy xay cà phê ở quầy lấp vào giữa hai người.

Minh không cười. Không nhướng mày kiểu người bắt được chuyện lạ. Anh chỉ nhìn lại Hoàng, ánh mắt thay đổi rất rõ: trước đó là nhìn một kỹ sư đứng sau sản phẩm; sau câu trả lời, anh thêm một lớp tính toán khác — người đang ra quyết định này có đủ ổn định để người khác đặt thời gian vào không.

“Mười tám,” Minh lặp lại.

“Ừm.”

“Vậy người viết phần lớn NỢ SỔ là anh?”

“Là em.”

“Người quyết định kiến trúc hiện tại?”

“Em.”

“Người có quyền production?”

“Em.”

“Người xử lý lỗi khách hàng cấp hai?”

“Hiện tại, cũng là em.”

Minh tựa lưng vào ghế. Bàn tay đặt lên mép laptop, ngón trỏ gõ hai cái rất nhẹ.

“Vậy ai review quyết định kỹ thuật của anh?”

Câu hỏi Phương Anh đã đặt trước đó một ngày quay lại, nhưng khi nó ra từ miệng Minh, trọng lượng khác hẳn. Phương Anh hỏi từ góc tổ chức. Minh hỏi từ bên trong phòng máy, nơi một quyết định sai có thể biến sổ nợ của người ta thành đống dữ liệu lẫn lộn.

Hoàng không muốn trả lời “không ai”. Nhưng câu đúng chỉ có vậy.

“Chưa có người review độc lập,” anh nói.

Minh gật, không tỏ ra thắng. Anh chỉ ghi một dòng vào sổ.

“Đó là điểm tôi lo nhất.”

“Không phải queue đồng bộ?”

“Queue sửa được. Backup sửa được. Log sửa được. Người ra quyết định không có phản biện thì khó sửa hơn.”

Hoàng nhấp cà phê. Vị ngọt đặc, sữa bám ở cuống họng. Anh đặt ly xuống.

“Anh nói ba việc cần sửa trong ba mươi ngày. Em muốn nghe thứ tự ưu tiên của anh.”

Minh xoay màn hình thẳng hơn. Trên đó không còn là PDF gửi email, mà là một file mới. Tiêu đề: 30 ngày để NỢ SỔ không tự vấp khi tăng trưởng.

Hoàng nhìn tiêu đề, khóe miệng giật nhẹ.

“Anh chuẩn bị cả cái này?”

“Tôi mang laptop mà.”

Minh bấm sang trang đầu. Không có logo, không hình nền. Chỉ ba khối chữ.

“Việc một: queue đồng bộ phải có chiến lược retry rõ. Phân loại lỗi mạng, lỗi server, lỗi conflict. Mỗi operation cần idempotency key. Server phải biết request nào là gửi lại, request nào là thao tác mới.”

Anh nói nhanh nhưng không vội. Giọng đều, câu ngắn. Không giảng bài cho người ngoài ngành, cũng không cố dùng thuật ngữ để đè người nghe.

“Hiện tại NỢ SỔ hay ở chỗ hiểu mạng của tiệm nhỏ rất tệ. Nhưng chính vì offline-first nên phần đồng bộ là lõi. Nếu lõi này sai, khách không mất một cái like hay một comment. Họ mất số nợ.”

Hoàng nhìn sơ đồ Minh vẽ. Client tạo operation, ghi local queue, sync worker đẩy lên server, server trả trạng thái, client reconcile. Bên cạnh mỗi mũi tên là một ghi chú lỗi có thể xảy ra. Minh không biết code, nhưng anh ta nhìn hành vi đủ lâu để đoán đúng hình dạng.

“Anh test bằng gì?” Hoàng hỏi.

“Điện thoại Android cũ, SIM 3G yếu, Chrome devtools throttling, và một app proxy để xem request. Tôi thử trong quán cơm sau Bách Khoa lúc đông người. Mạng ở đó tệ đến mức rất hữu ích.”

“Anh tự tạo nhiều tài khoản?”

“Ba tài khoản. Một tài khoản chủ tiệm, hai tài khoản nhân viên giả. Tôi không đụng dữ liệu người khác.”

Câu sau được nói trước khi Hoàng hỏi. Minh biết ranh giới.

“Việc hai,” Minh chuyển trang, “backup và phục hồi. Không chỉ là có file dump mỗi ngày. Cần biết nếu mười giờ sáng dữ liệu bị ghi sai hàng loạt, anh có thể quay về 9 giờ 57 không. Và quay xong, những giao dịch hợp lệ sau đó xử lý ra sao.”

“Với quy mô hiện tại, PITR có thể hơi nặng.”

“Đúng. Nên tôi không nói phải làm bản hoàn hảo. Ba mươi ngày đầu cần ít nhất: backup tự động kiểm tra được, restore drill mỗi tuần, checksum cơ bản, và tách quyền xoá dữ liệu khỏi tài khoản deploy thường ngày.”

Hoàng không ngắt nữa.

Tách quyền xoá khỏi tài khoản deploy. Anh đã nghĩ đến. Ghi vào TODO. Để đó.

“Việc ba: log theo giao dịch.” Minh bấm sang trang cuối. “Khoa, hoặc bất cứ ai chăm sóc khách hàng sau này, phải tra được: ai thao tác, trên thiết bị nào, lúc nào, từ phiên nào, server nhận gì, trả gì. Không phải để họ sửa code. Để họ nói với khách một câu có căn cứ.”

Nghe tên Khoa từ miệng Minh, Hoàng hơi ngẩng lên.

“Anh biết Khoa?”

“Không biết mặt. Nhưng tôi đoán có một người đang trả lời khách. Trong mấy email support tôi nhận được lúc đăng ký thử, giọng không giống developer. Thân hơn. Biết nói chuyện với chủ tiệm hơn.”

Minh dừng, rồi thêm:

“Người đó giữ được khách cho anh nhiều hơn log hiện tại giữ được.”

Câu này làm Hoàng yên vài giây.

Ngoài cửa kính, hai sinh viên đèo nhau trên chiếc Wave cũ, người ngồi sau ôm thùng CPU. Xe chao nhẹ khi qua ổ gà, cả hai cùng chửi rồi cười. Sài Gòn chiều thứ Bảy nóng hầm, mặt đường bốc hơi sau cơn mưa ngắn lúc trưa.

Minh uống cà phê đen. Đá đã tan gần hết, màu cà phê nhạt hơn lúc đầu.

“Anh có vẻ đọc khá kỹ sản phẩm,” Hoàng nói.

“Tôi dùng ba tuần. Sản phẩm tốt.”

“Nhưng anh gửi audit dài hơn thư xin việc.”

“Vì nếu chỉ gửi CV, tôi sẽ bị xếp chung với những người muốn một công việc backend. Tôi không tìm một chỗ chỉ để viết API theo ticket.”

“Vậy anh tìm gì?”

Minh nhìn thẳng vào anh.

“Tôi tìm một sản phẩm thật. Có người dùng thật. Vấn đề thật. Và người viết nó đủ giỏi để tôi không phải giải thích từ đầu mọi thứ.”

“Nghe như anh đang phỏng vấn ngược.”

“Tôi tưởng buổi này không phải phỏng vấn.”

Hoàng bật cười nhỏ. Lần này không phải cười nhạt.

“Đúng. Không phải.”

“Vậy tôi hỏi thật.” Minh đặt ly xuống. “NỢ SỔ muốn đi đến đâu?”

Câu hỏi đó không thuộc ba mươi ngày kỹ thuật, nhưng Hoàng đã chuẩn bị. Anh nói về tiệm nhỏ, về sổ nợ, về phần mềm không cần đẹp nhưng phải đáng tin, về việc mở ra ngoài TP.HCM, về nhóm triển khai mà Khoa có thể xây. Anh không nói về Hệ thống. Không nói về mảnh thông tin tương lai. Không nói về ba trụ cột đế chế trong đầu. Chỉ nói đủ phần một kỹ sư có thể đặt tay vào.

Minh nghe, thỉnh thoảng ghi chú. Không bị cuốn bởi khẩu hiệu, cũng không tỏ vẻ chán khi Hoàng nói về chủ tiệm thay vì công nghệ.

“Anh nói ‘đáng tin’ nhiều,” Minh nhận xét.

“Vì sản phẩm này thay quyển sổ giấy của họ. Nếu app sai, người chịu cãi với khách là chủ tiệm, không phải mình.”

“Vậy kiến trúc phải được đối xử như sổ cái, không phải app thử nghiệm.”

“Em đồng ý.”

“Đồng ý trên nguyên tắc dễ hơn đồng ý khi phải viết lại phần đang chạy.”

Hoàng nhìn anh. “Anh nghĩ phải viết lại?”

“Tôi chưa xem code.”

“Dựa trên hành vi?”

“Dựa trên hành vi, tôi nghĩ module đồng bộ cần ít nhất refactor sâu. Có thể rewrite một phần. Nhưng tôi không kết luận khi chưa đọc.”

Đây là chỗ Hoàng muốn nghe, và cũng là chỗ anh không muốn nghe.

Anh mở balô, lấy notebook của mình ra. Không phải laptop. Một quyển vở học trò bìa xanh, mép đã cong. Minh nhìn quyển vở, ánh mắt lướt qua nhưng không bình luận.

Hoàng lật trang đã ghi sẵn câu hỏi.

“Nếu anh vào thử, em muốn bắt đầu bằng module đồng bộ offline. Hai tuần. Môi trường staging, dữ liệu giả lập, không đụng production. Mục tiêu: thiết kế lại queue, idempotency, conflict resolution tối thiểu. Sau hai tuần, anh trình bày phương án và prototype. Nếu hợp, mình bàn tiếp.”

Minh nghe xong, không trả lời ngay. Anh kéo laptop về phía mình, gập màn hình xuống một nửa. Hành động đó làm cuộc nói chuyện rời khỏi slide.

“Anh muốn tôi làm bài test?”

“Em muốn xem cách anh làm việc.”

“Còn tôi muốn xem hệ thống mình sẽ chịu trách nhiệm.”

“Staging đủ cho module đồng bộ.”

“Không đủ để đánh giá kiến trúc.”

Hoàng đặt bút xuống.

Minh nói tiếp, giọng vẫn đều:

“Nếu chỉ cho tôi endpoint giả, schema rút gọn, và một repo tách riêng, tôi có thể viết một module đẹp. Nhưng khi gắn vào hệ thống thật, nó có thể chết vì assumptions cũ. Offline sync không đứng một mình. Nó liên quan auth, schema, cách lưu audit trail, cách xử lý quyền nhân viên, thậm chí cách anh đang deploy.”

“Codebase chứa dữ liệu nhạy cảm và nhiều thứ chưa thể mở cho người ngoài.”

“Tôi không cần data production. Tôi cần code và lịch sử quyết định quanh nó.”

“Lịch sử quyết định không nằm hết trong code.”

“Vậy càng cần nói chuyện.”

Hai người nhìn nhau qua cái bàn nhỏ. Tiếng quán ồn lên rồi hạ xuống. Một sinh viên bàn bên xin ổ cắm, dây sạc kéo ngang lối đi làm chị phục vụ cau mày nhắc coi chừng vấp.

Hoàng thấy rõ ranh giới trước mặt: cho Minh một bài thử an toàn, anh giữ quyền kiểm soát; hoặc mở sâu hơn, chấp nhận người này sẽ nhìn thấy những chỗ anh viết vội, những shortcut, những commit lúc ba giờ sáng, những phần mà từ trước tới nay chỉ có anh được quyền phán xét.

“Anh hiểu yêu cầu đó nguy hiểm với bên em chứ?” Hoàng hỏi.

“Tôi hiểu.”

“Codebase không chỉ là code.”

“Với công ty nhỏ, thường là vậy.”

“Anh chưa phải người trong team.”

“Đúng. Nên tôi không đòi production key, database dump hay tài khoản admin. Tôi đòi quyền đọc code đủ rộng, tài liệu schema, và một buổi walkthrough với anh. Nếu cần ký NDA, tôi ký. Nếu cần máy riêng không copy ra ngoài, tôi dùng máy đó. Nếu cần commit qua branch riêng, tôi theo. Nhưng nếu anh chỉ cho tôi chạm một góc, tôi sẽ chỉ sửa được một góc.”

Hoàng cầm ly cà phê. Đá đã tan, vị ngọt loãng đi.

“Anh thường nói thẳng vậy trong buổi đầu à?”

“Tuỳ sản phẩm.”

“NỢ SỔ thì sao?”

“NỢ SỔ có người dùng thật. Nên nói vòng vo phí thời gian của họ.”

Câu này đáng ghét ở chỗ nó đúng.

Hoàng nhìn xuống vở. Dòng anh viết trước khi đến đây nằm ở giữa trang: Nếu ý kiến kỹ thuật của anh khác tôi, anh muốn quy trình quyết định ra sao?

Anh hỏi.

Minh không ngạc nhiên. Có lẽ chính anh cũng chờ câu đó.

“Ban đầu, anh vẫn là người quyết định cuối. Anh hiểu người dùng hơn tôi, hiểu lịch sử sản phẩm hơn tôi. Nhưng mỗi quyết định kiến trúc lớn phải có RFC ngắn: vấn đề, phương án, trade-off, ai phản đối, vì sao vẫn chọn. Nếu tôi phản đối mà anh vẫn quyết, tôi muốn lý do được ghi lại. Sau này nếu sai, mình học từ quyết định, không học từ trí nhớ của một người.”

Hoàng viết chữ RFC vào vở, rồi gạch dưới.

“Nghe rất công ty lớn.”

“Không. Công ty lớn viết dài để che trách nhiệm. Tôi nói bản ngắn thôi, một trang cũng được. Mục tiêu là buộc người quyết định nói rõ mình đang đánh đổi gì.”

“Và nếu anh đúng, em sai?”

“Thì sửa.”

“Dễ vậy?”

“Không dễ. Nhưng tốt hơn để khách hàng phát hiện.”

Hoàng dựa lưng vào ghế. Lần đầu từ đầu buổi, anh thấy mệt ở vai. Không phải mệt vì thiếu ngủ. Mệt vì một loại cơ bắp khác đang bị kéo căng: cơ bắp chịu nghe người khác đặt tay lên thứ mình xây.

“Anh có vấn đề gì với tuổi của em không?” Hoàng hỏi.

Minh nhìn anh lâu hơn lần trước.

“Có.”

Câu trả lời thẳng đến mức Hoàng gần như bật cười.

Minh tiếp: “Không phải vì tôi nghĩ mười tám tuổi không viết được hệ thống tốt. Anh đã viết rồi. Vấn đề là mười tám tuổi thường chưa có nhiều lần trả giá cho quyết định dài hạn. Tôi cần biết khi bị phản đối, anh chọn nghe hay chọn dùng quyền founder để đè.”

“Người ba mươi tuổi cũng có thể đè.”

“Đúng. Nhưng người ba mươi tuổi thường đã bị đời đè lại vài lần.”

Lần này Hoàng cười thật. Ngắn, nhưng thật.

“Câu đó hơi đau.”

“Tôi không định làm nó êm.”

Minh mở lại laptop, kéo tới một đoạn trong file. “Tôi nói rõ phần của mình. Tôi có thể giúp anh sửa đồng bộ offline. Tôi có thể dựng logging tốt hơn. Tôi có thể thiết kế backup tử tế. Nhưng tôi không muốn vào một nơi mọi quyết định đã nằm sẵn trong đầu một người, còn người khác chỉ được triển khai.”

Hoàng nhìn màn hình. Trong góc phải, đồng hồ máy Minh chỉ 16:12. Họ đã nói hơn một tiếng.

Hệ thống vẫn hiện cảnh báo đỏ ở góc giao diện — không khuyến nghị, cần quyết định tổ chức thực tế. Bây giờ quyết định đó không còn nằm trong màn hình. Nó ngồi đối diện anh, mặc áo sơ mi xám, uống cà phê đen, đòi xem code.

Hoàng hỏi: “Nếu em đồng ý cho anh xem codebase theo điều kiện bảo mật, anh bắt đầu khi nào?”

“Sau khi tôi đọc trong hai ngày và xác nhận mình vẫn muốn làm.”

“Anh cũng có quyền từ chối?”

“Tất nhiên.”

“Vì code xấu?”

“Code xấu không làm tôi sợ. Người không chịu thừa nhận code xấu mới làm tôi sợ.”

Hoàng đặt bút xuống. Đầu ngòi để lại một chấm mực nhỏ trên trang.

Anh nghĩ đến Khoa đứng ngoài cửa phòng server. Nghĩ đến Phương Anh viết chữ Anh vào sổ khi anh trả lời ai quyết định. Nghĩ đến anh Tuấn nói câu chưa viết trên bảng là ai quyết định khi Hoàng không có mặt. Những câu đó không biến mất; chúng chỉ xếp hàng, chờ người đủ chuyên môn nói thành điều kiện cụ thể.

“Em cần nói chuyện với Khoa và Phương Anh trước,” Hoàng nói.

Minh gật. “Hợp lý.”

“Và anh Tuấn về pháp lý.”

“Càng hợp lý.”

“Em có thể cho anh quyền đọc một phần lớn codebase, trên máy kiểm soát, không có dữ liệu production, kèm NDA. Nhưng toàn bộ codebase ngay từ đầu thì…”

Hoàng dừng lại.

Minh không chen. Anh để khoảng trống đó tự làm việc.

Hoàng nhận ra mình đang tìm cách nói “không” sao cho nghe như “cẩn trọng”. Cẩn trọng là cần. Nhưng phía sau nó có một lớp khác: nếu Minh đọc toàn bộ, anh sẽ thấy NỢ SỔ không phải lâu đài. Nó là căn nhà hẻm được cơi nới trong đêm, có chỗ chắc, có chỗ chống bằng cây sắt tạm, có phòng đẹp vì khách hay vào, có góc tối chỉ chủ nhà biết đừng dựa mạnh.

“Anh Minh,” Hoàng nói, chậm hơn, “nếu anh đọc xong và thấy có những phần phải đập đi xây lại, anh sẽ nói thẳng?”

“Tôi đã gửi audit trước khi được mời cà phê.”

“Ừ.”

“Vậy anh biết câu trả lời.”

Hoàng gật. Anh đóng vở.

“Em chưa thể trả lời ngay về mức truy cập. Nhưng em muốn anh làm thử. Không phải bài test. Một dự án thử có trách nhiệm thật. Em sẽ gửi đề xuất quyền truy cập và phạm vi trong tối mai.”

Minh nhìn anh, đánh giá câu đó.

“Được.”

Anh gập laptop lại hoàn toàn. Buổi gặp tưởng như kết thúc, nhưng Minh vẫn chưa đứng dậy.

“Có một câu nữa,” Minh nói.

“Anh hỏi đi.”

“Nếu anh chỉ cho tôi chạm phần anh muốn tôi chạm, tôi không sửa hệ thống được. Tôi chỉ vá theo ý anh thôi.”

Chữ rơi xuống rất nhẹ.

Nhưng với Hoàng, nó như đầu kim chích vào một chỗ đã sưng từ lâu.

Vá.

Anh đã vá server sau bài blog. Vá query cho khách Bình Dương. Vá metadata cho bài hát. Vá pháp lý bằng anh Tuấn khi chưa đủ tuổi. Vá vai trò Khoa bằng những lời mời đến muộn. Vá mọi thứ đủ nhanh để hệ thống chạy tiếp, đủ khéo để người ngoài chưa thấy vết nứt.

Minh không biết hết những thứ đó. Anh ta chỉ nói về code.

Chính vì chỉ nói về code, câu đó mới không có chỗ để phản bác.

Hoàng nhìn ly cà phê sữa đã loãng, rồi nhìn bàn tay mình đặt trên quyển vở bìa xanh.

“Em hiểu,” anh nói.

Minh xách túi laptop đứng dậy. “Tôi chờ mail.”

Hoàng cũng đứng lên. Hai người bắt tay lần nữa. Lực tay Minh vẫn vừa đủ, nhưng lần này Hoàng cảm thấy nó không phải cái bắt tay của ứng viên. Nó giống một lời nhắc: nếu mở cửa, người này sẽ bước vào bằng chân của mình, không đi theo vết chân anh vẽ sẵn.

Minh rời quán trước. Ngoài cửa, anh đội nón bảo hiểm cũ, lên chiếc Future màu đen, hoà vào dòng xe trên đường Lý Thường Kiệt.

Hoàng ngồi lại thêm vài phút.

Anh mở điện thoại. Tin nhắn của Khoa hiện ở đầu màn hình:

Gặp sao rồi? Thằng đó ổn không?

Phương Anh nhắn sau đó một phút:

Đừng chỉ hỏi anh ấy có hợp mình không. Hỏi mình có chịu được người như anh ấy không.

Hoàng đọc cả hai tin, chưa trả lời.

Anh mở vở, dưới dòng RFC, viết thêm một câu:

Chia quyền không bắt đầu bằng việc đưa task. Nó bắt đầu bằng việc để người khác nhìn thấy phần mình từng vá.

Ngòi bút dừng ở chữ cuối. Ngoài quán, tiếng xe máy, tiếng sinh viên gọi nhau, tiếng ly thuỷ tinh chạm vào khay inox vẫn chạy bình thường.

Hoàng đóng vở.

Tối mai anh phải gửi Minh một email.

Và lần đầu, thứ khó nhất trong email đó không phải điều khoản bảo mật, không phải phạm vi kỹ thuật, cũng không phải cách xưng hô.

Là anh có dám mở cánh cửa đủ rộng để người kia thấy căn nhà thật hay không.