Tiền công không sạch
Con số người quen của Long đưa ra lớn hơn tiền công tôi kiếm ở Mùa Gió trong nhiều tuần cộng lại, và chính cái sức nặng trần trụi của những con số ấy đã khiến mọi vết gợn khả nghi trở nên dễ dàng bị khỏa lấp, bị đẩy lùi vào một xó xỉnh nào đó trong tâm trí đang cuống cuồng vì thiếu thốn.
Khi anh ta—một sinh viên năm cuối tên Kiên, vóc người gầy gò, xương xẩu, khoác chiếc áo gió màu xám tro viền cam đã sờn mép mang logo của một công ty gia công phần mềm ở mạn Cầu Giấy—đặt tờ giấy ghi số điện thoại cùng một con số tạm ứng bằng nét mực bút bi xanh đè lên mặt bàn đá lem nhem nước chè của quán chén dưới chân cầu thang nhà B7, ngón tay tôi đã khẽ co giật trong đáy túi quần thủng chỉ. Ba triệu rưỡi cho một phần việc gói gọn trong chưa đầy hai tuần lễ. Người ta chia khoản tiền ấy làm hai đợt rành rọt: một triệu trao tay ngay sau khi tôi nhận bản đặc tả kỹ thuật và dựng xong bộ khung kết nối; hai triệu rưỡi còn lại sẽ thanh toán sòng phẳng khi toàn bộ gói mã nguồn thu thập, bóc tách và phân loại chạy trơn tru, không sinh lỗi trên môi trường máy chủ của họ.
Ba triệu rưỡi. Với một đứa sinh viên năm nhất đang phải chia nhỏ từng đồng bạc lẻ cáu bẩn để đong đếm từng bữa cơm bụi mười hai nghìn đầy ắp rau muống luộc úa vàng và hai miếng đậu phụ rán teo tóp, con số đó là một ảo ảnh choáng ngợp. Đó là số tiền đủ để tôi trả dứt điểm khoản đóng bổ sung quỹ ký túc xá học kỳ một vốn đã bị nhắc nhở trên bảng tin hai lần, đủ để tôi mua thêm một tấm chăn bông mỏng đắp qua những đêm rét buốt thấu xương nơi tầng ba lộng gió, và quan trọng hơn cả, nó giúp tôi không còn phải nơm nớp sợ hãi cái ngày cán bộ phòng đào tạo gọi tên vì khoản học phí diện chính sách bị trục trặc do giấy tờ xác nhận hộ nghèo từ ủy ban nhân dân xã Bản Nà Ban gửi xuống muộn. Ở cái thành phố ngột ngạt này, số tiền ấy không đơn thuần là thu nhập. Nó là một tấm phao cứu sinh nổi phềnh ngay trước mắt một kẻ đang hụt hơi sắp chìm nghỉm giữa dòng nước xoáy.
“Cậu đừng nhìn tôi với cái vẻ dò xét như thể tôi đang rủ cậu đi buôn hàng cấm,” Kiên bật cười, giọng khàn đặc khói thuốc lá Thăng Long, để lộ hàm răng ám khói vàng xỉn. Anh ta gõ gõ mẩu tàn thuốc xuống gạt tàn bằng nắp hộp sữa đặc đã gỉ sét. “Chỉ là một mô-đun gom dữ liệu cho một hệ sinh thái danh bạ trực tuyến kết hợp dịch vụ việc làm sinh viên thôi. Bên tôi đang phải chạy đua tiến độ đến trầy da tróc vảy để kịp tung ra phiên bản thử nghiệm trước kỳ nghỉ Tết Dương lịch. Tụi tôi thiếu người có tay nghề tối ưu hóa bộ nhớ đệm, thiếu người biết cách ép luồng xử lý chuỗi trên nền C hoặc C++ để cào và đồng bộ dữ liệu từ các cổng diễn đàn trường đại học với mấy trang mạng xã hội. Thằng Long nó bảo cậu có cái đầu băm thuật toán rất lì lợm, đợt thi vừa rồi cậu nén cấu trúc cây và mảng phẳng đến mức mấy thằng bên đội tuyển chuyên Tin cũng phải liếc trộm. Cần tiền thì nhận, làm thật ăn thật, công sức bỏ ra bao nhiêu thì hưởng bấy nhiêu, chẳng ai đi xin không của ai cái gì.”
Tôi không vội vàng gật đầu. Bản năng của một đứa trẻ lớn lên bằng đòn roi vô cớ, bằng những bữa cơm chan nước mắt bị tính từng bát ở nhà bác Lương năm nào đã dạy cho tôi một bài học cay đắng: ở đời này, chẳng có miếng mồi nào béo bở mà bên trong không găm sẵn một lưỡi câu sắc nhọn. Tôi nhìn xoáy vào những ngón tay gầy guộc đầy vết chai của Kiên, nhìn vệt ố vàng trên cổ áo khoác của anh ta, cố tìm kiếm một kẽ hở trong câu chuyện.
Nhưng đúng lúc ấy, Đỗ Hải Long bước qua. Cậu ta vừa rời khỏi văn phòng khoa sau khi nộp bản báo cáo tổng kết của ban tổ chức cuộc thi lập trình. Tay Long kẹp chiếc cặp da mỏng màu đen phẳng phiu, trên người là chiếc áo sơ mi trắng thẳng nếp không vương một hạt bụi, phẳng phiu như thể cậu ta vừa bước ra từ một phòng điều hòa mát lạnh chứ không phải vừa trải qua trọn một ngày thi đấu căng thẳng nghẹt thở. Long dừng lại bên mép thềm xi măng lồi lõm của cầu thang nhà B7, khẽ liếc mắt nhìn mẩu giấy nhớ đặt trên bàn đá, rồi nhìn thẳng vào tôi. Ánh mắt cậu ta điềm tĩnh, sáng rõ, sắc sảo và mang một vẻ lạnh lùng thấu suốt đến mức tàn nhẫn.
“Tôi chỉ nói với anh Kiên rằng cậu viết C rất sạch và biết cách vắt kiệt từng chu kỳ của phần cứng,” Long lên tiếng, âm lượng vừa đủ nghe, không hề có vẻ gì là muốn can dự nhưng từng lời thốt ra đều có sức nặng đè nén. “Còn chuyện nhận hay từ chối là quyền của cậu, Nam. Nhưng nếu cậu hỏi ý kiến tôi, thì tôi cho rằng đây là một cơ hội thực tế. Cậu muốn sinh tồn ở cái đất Hà Nội này, muốn có tiền nộp trọ, muốn mua sách chuyên ngành hay muốn nâng cấp máy móc để chuẩn bị cho những cuộc thi lớn hơn sau này, thì cậu buộc phải nhúng tay vào thị trường thật. Ở ngoài xã hội không có ban giám khảo nào ngồi chấm điểm đạo đức hay phát mấy giải Khuyến khích an ủi đâu. Đừng có làm màu, và quan trọng nhất, đừng biến cái nghèo của mình thành thứ trang sức để đứng ngoài cuộc chơi.”
Từng lời của Long như chiếc kim thép chọc thẳng vào chỗ đau nhức nhất trong lòng tự ái của tôi. Cậu ta không cười cợt, không dùng giọng điệu xỉa xói hằn học như cái cách Tùng từng làm ở Nà Ban, nhưng chính sự bình thản đến mức lãnh đạm, cái thái độ xem kiếm tiền như một phương trình thuần túy không chứa biến số cảm xúc của cậu ta lại khiến tôi cảm thấy mình nhỏ bé, thảm hại và vụng về biết bao. Long không đứng ra bảo lãnh cho Kiên, cũng chẳng hứa hẹn bất cứ điều gì có lợi cho tôi; cậu ta chỉ lạnh lùng quẳng ra một sự thật trần trụi: tôi đang đói khát, và ngoài kia có người đang chìa tiền ra để mua thứ kỹ năng mà tôi có.
Long nói xong thì khẽ gật đầu chào rồi rảo bước đi thẳng về phía cổng trường, bóng lưng thẳng tắp khuất dần sau rặng xà cừ cổ thụ. Dưới chân cầu thang, chỉ còn lại tôi với Kiên và làn khói thuốc xanh lét lơ lửng giữa bầu không khí mùa đông ẩm ướt.
Tối hôm đó, sau khi kết thúc ca làm việc ở Mùa Gió, đôi bàn tay tôi đã đỏ ửng và tê dại vì phải ngâm trong ba chậu bọt xà phòng lạnh buốt để cọ rửa hàng trăm chiếc ly thủy tinh cáu bẩn váng sữa. Khi đã lau khô từng chiếc thìa con và xếp chúng ngay ngắn vào khay inox, tôi không về thẳng phòng 314 ký túc xá. Tôi đứng lại hồi lâu dưới bóng cây hoa sữa nồng nặc mùi hăng hắc bên ngõ Trần Đại Nghĩa. Gió mùa đông bắc từng đợt thốc qua con ngõ hẹp, mang theo hơi lạnh buốt giá luồn qua lớp vải mỏng của chiếc áo khoác cũ rách nách. Tôi rút chiếc điện thoại cũ mượn tạm sim rác, bấm từng phím bấm đã mờ hết chữ số, gửi một tin nhắn ngắn ngủn cho Kiên: *“Gửi tài liệu mô tả cho tôi.”*
***
Sáng hôm sau, Kiên hẹn tôi ở một quán cà phê Internet xập xệ nằm sâu trong con ngõ ẩm thấp gần cổng phụ trường Đại học Xây dựng. Quán sực nức mùi mì tôm tôm chua cay, mùi khói thuốc lá đặc quánh và tiếng gõ phím lạch cạch xen lẫn tiếng chửi thề của những tay chơi điện tử thâu đêm suốt sáng.
Kiên ngồi ở một góc tối sát chân tường bong tróc, trước mặt là một cốc cà phê đen đá đã tan hết, bên cạnh đặt một chiếc USB vỏ kim loại bóng loáng và một xấp tài liệu in một mặt dày cộp, mép giấy bấm ghim cẩn thận.
“Tài liệu kỹ thuật đây,” Kiên đẩy xấp giấy về phía tôi, kèm theo chiếc USB. “Cậu cầm lấy mà đọc kỹ. Nhìn qua thì có vẻ phức tạp, nhưng với cái đầu của cậu thì tôi nghĩ chỉ mất vài ngày là thông luồng.”
Bản mô tả yêu cầu kỹ thuật dày đúng mười hai trang. Thoạt nhìn lướt qua các đề mục lớn, nó mang dáng dấp của một đề tài nghiên cứu bài tập lớn môn Lập trình mạng nâng cao hoặc một dự án gia công phần mềm trung gian hết sức bình thường: thiết kế một dịch vụ chạy ngầm trên nền hệ điều hành Linux, sử dụng các hàm giao tiếp socket cấp thấp để thiết lập kết nối đến các máy chủ ứng dụng web, định kỳ gửi đi các gói tin truy vấn được cấu trúc giả lập như một trình duyệt thông thường, sau đó trích xuất thông tin người dùng từ các phản hồi định dạng JSON và HTML trả về.
Các trường dữ liệu cần thu thập được liệt kê rõ ràng trong một bảng biểu kẻ khung ngay ngắn: họ và tên đầy đủ, ngày tháng năm sinh, số chứng minh nhân dân, mã số sinh viên, địa chỉ hòm thư điện tử, số điện thoại cá nhân, lịch sử các lần đăng nhập gần nhất kèm địa chỉ IP, và toàn bộ danh sách liên lạc hoặc tương tác bạn bè nếu có trên hệ thống.
Nhưng càng đọc sâu vào các tiểu mục điều khoản ràng buộc và cấu trúc giao thức truyền tải, da đầu tôi càng tê rần, và một luồng khí lạnh buốt chạy dọc sống lưng.
Toàn bộ tài liệu không hề có lấy một dòng nào nhắc đến việc người dùng sẽ nhận được cảnh báo hay hộp thoại thông báo gì khi phần mềm này bắt đầu kích hoạt trên máy tính của họ. Cơ chế thu thập dữ liệu được thiết kế hoàn toàn theo phương thức “đồng bộ ngầm” (silent background sync). Ứng dụng khách—thực chất là một tiện ích mở rộng gắn lén trên trình duyệt hoặc một công cụ nhỏ hỗ trợ tra cứu lịch học, điểm thi được phát tán miễn phí trên các diễn đàn sinh viên—sẽ âm thầm quét sạch toàn bộ dữ liệu phiên làm việc (session cookies, access tokens) của người dùng ngay khoảnh khắc họ đăng nhập vào cổng thông tin đào tạo của các trường đại học hoặc một số trang mạng xã hội nội địa phổ biến thời bấy giờ.
Từ những phiên đăng nhập hợp lệ bị chiếm đoạt đó, đoạn mã mà tôi được thuê viết sẽ đóng vai trò như một chiếc máy bơm hút công suất lớn: nó lách qua các hàng rào kiểm soát tần suất truy vấn (rate limiting) của máy chủ bằng kỹ thuật xoay vòng danh sách máy chủ ủy quyền (proxy rotation), tự động bóc tách từng gói dữ liệu thô, giải mã, chuẩn hóa rồi đóng gói đẩy thẳng về một cụm máy chủ lưu trữ từ xa đặt ngoài phạm vi kiểm soát của các nhà mạng trong nước.
Đặc biệt, trong phần điều khoản pháp lý và phạm vi trách nhiệm in bằng cỡ chữ nhỏ ở trang cuối cùng, câu chữ được gọt giũa một cách quanh co, lắt léo đến mức xảo quyệt. Người ta dùng những thuật ngữ kỹ thuật đầy vẻ trung tính và học thuật như “tối ưu hóa dữ liệu trải nghiệm người dùng”, “thu thập siêu dữ liệu phục vụ nghiên cứu xu hướng thị trường lao động sinh viên”, và “người dùng mặc định đồng thuận với các chính sách dịch vụ mở rộng khi sử dụng công cụ tiện ích”. Tuyệt nhiên không có một ranh giới rõ ràng nào được xác lập: liệu người dùng có thực sự biết mình đã bấm nút đồng ý để người khác đọc toàn bộ danh bạ, số chứng minh thư và lịch sử duyệt web của mình hay không? Họ có hay biết rằng toàn bộ nhân thân số của họ sẽ bị gom về một kho dữ liệu tập trung mà ngay cả kẻ viết mã thuê như tôi cũng không thể biết ai là ông chủ thực sự đứng sau giật dây?
Tôi đặt xấp tài liệu xuống mặt bàn gỗ dán loang lổ vết tàn thuốc, ngón tay chỉ thẳng vào bảng mô tả lược đồ cơ sở dữ liệu: “Tại sao lại cần cả số chứng minh nhân dân và danh sách liên lạc cá nhân? Một ứng dụng tìm việc làm thêm hay tra cứu lịch học cho sinh viên thì cần quái gì đến danh bạ bạn bè và thông tin thân nhân của người ta?”
Kiên nhẫn nhả một ngụm khói thuốc trắng đục lên trần nhà, ngón tay gõ nhịp đều đặn lên mặt bàn: “Để định danh người dùng thật chứ để làm gì. Cậu học công nghệ mà ngây thơ thế à? Trên mạng bây giờ tài khoản ảo, tài khoản rác nhiều như bèo tấm ngoài ao. Bên đối tác của tôi họ bỏ tiền tươi thóc thật ra mua dịch vụ, họ cần số liệu sạch, định danh chuẩn chỉ để sau này các doanh nghiệp tuyển dụng có thể liên hệ trực tiếp đến từng người. Cậu chỉ việc viết tầng thu thập và đóng gói dữ liệu thôi, đó là phần việc kỹ thuật thuần túy. Còn chính sách người dùng, điều khoản thỏa thuận ra sao thì đã có đội ngũ pháp lý của công ty người ta lo liệu. Cậu việc gì phải lo bò trắng răng cho mệt óc?”
“Nhưng phần bóc tách này... nó cào cả phiên đăng nhập đang mở,” tôi ngập ngừng, cảm giác bất an dâng lên từng đợt như vị đắng ngắt của ngụm nước chè hâm lại nhiều lần. “Nếu người dùng không chủ động cung cấp, mà phần mềm tự ý chui vào bộ nhớ tạm của trình duyệt để lôi cookie ra, thì đây là hành vi chiếm đoạt thông tin trái phép. Nói thẳng ra là lấy trộm.”
Kiên bật cười thành tiếng, nụ cười nửa miệng đầy vẻ mỉa mai quen thuộc giống hệt như hôm ở chân cầu thang ký túc xá: “Này Nam, cậu nói chuyện nghe sách vở và ngây ngô quá đấy. Mấy cái cổng thông tin sinh viên thời buổi này lỗ hổng bảo mật đầy rẫy ra, sinh viên đăng nhập vào mạng Wi-Fi công cộng ở ký túc xá cũng rò rỉ thông tin ầm ầm mỗi ngày. Tụi tôi làm việc này là để chuẩn hóa lại dữ liệu cho họ, đưa vào một hệ thống quản lý tập trung, an toàn hơn. Cậu viết mã, cậu ăn tiền công theo từng dòng lệnh cậu gõ ra. Ai dùng nó vào việc gì, người ta bán lại cho các trung tâm giới thiệu việc làm hay chuyển giao cho các công ty viễn thông để họ nhắn tin thông báo học bổng, khóa học, đó là chuyện của tầng kinh doanh bên trên. Cậu là thợ nề đi xây tường, người ta treo bức tranh đẹp hay treo miếng giẻ rách lên bức tường đó thì liên quan quái gì đến trách nhiệm của cậu?”
Nói đoạn, Kiên thò tay vào túi trong của chiếc áo gió, rút ra một phong bì nhỏ dán kín mép rồi đẩy trượt trên mặt bàn về phía tôi. “Tiền cọc đợt một đấy. Một triệu đồng chẵn. Kèm theo chiếc USB có sẵn khung giao thức và thư viện kết nối mẫu. Đúng một tuần nữa giao cho tôi bản chạy thử đầu tiên. Làm cho tốt, cho mượt mà thì sau này bên tôi còn cả đống mối khác, tha hồ mà nhận, không bao giờ phải còng lưng đi bưng bê từng cốc cà phê kiếm mười hai nghìn một giờ bạc bẽo nữa đâu.”
Tôi nhìn chằm chằm vào chiếc phong bì giấy xi măng. Dưới ánh đèn tuýp nhấp nháy chập chờn của quán net, tôi có thể nhìn thấy lờ mờ hình bóng của năm tờ tiền polymer mệnh giá hai trăm nghìn đồng nằm ngay ngắn bên trong. Những tờ tiền mới cứng, phẳng phiu, không hề có mùi dầu mỡ của quán cơm bụi, không có vết rách mép hay vết bùn đất cáu bẩn như những tờ tiền lẻ mà tôi từng nhận từ bàn tay nứt nẻ của chú Cường thợ mộc hay lão Tính chủ lò gạch ở quê.
Một triệu đồng. Nó nằm đó, im lìm nhưng tỏa ra một thứ ma lực ghê gớm. Tôi nghĩ đến món tiền trọ tháng tới đang treo lơ lửng trên đầu; tôi nghĩ đến khoản tiền ba trăm nghìn cần kíp gửi về phụ bác dâu Sương mua mấy vỉ thuốc giảm đau khớp khi mùa đông khắc nghiệt sắp tràn về thung lũng Nà Ban; tôi nhớ lại lời tuyên bố dứt khoát đến cạn tình của mình trước mặt bác Lương vào cái đêm tôi xách ba lô rời khỏi căn nhà gỗ: rằng tôi sẽ tự sống sót ở đất này bằng chính hai bàn tay mình, tuyệt đối không bao giờ ngửa tay xin nhà bác một đồng bạc cắc.
Bàn tay tôi run lên khe khẽ. Tôi cầm lấy chiếc phong bì, nhét thật sâu vào túi trong của chiếc áo khoác cũ, ngay sát lồng ngực đang đập thình thịch. Những ngón tay tôi chạm vào lớp vỏ kim loại lạnh ngắt của chiếc USB nằm lẻ loi trên mặt bàn.
Suốt cả chặng đường đi bộ hơn hai cây số từ cổng trường Xây dựng men theo con đường Giải Phóng gió bụi mịt mù để trở về ký túc xá B7, tôi liên tục dùng chính những lý lẽ giảo hoạt của Kiên để tự thôi miên, tự trấn an lương tâm mình. Mình chỉ là một người thợ gõ mã thuê. Mình chỉ đang giải quyết một bài toán kỹ thuật hóc búa về phân luồng xử lý, về việc tối ưu hóa bảng băm và quản lý bộ nhớ đệm, về việc làm sao để các gói tin nhị phân truyền đi trên đường truyền yếu mà không bị nghẽn mạng. Một con dao gọt hoa quả sắc lẹm trong bếp có thể dùng để cắt bánh mì nuôi sống con người, nhưng cũng có thể dùng để làm người khác bị thương tích; lỗi lầm thuộc về kẻ cầm dao đâm người, cớ sao lại đổ lên đầu người thợ rèn cặm cụi bên bễ than? Mình đâu có trực tiếp ăn cắp tiền trong tài khoản của ai, đâu có cài virus phá hủy hệ thống của trường. Kiếm đủ tiền trang trải cho học kỳ này, trả xong mấy món nợ lặt vặt, mình sẽ dứt khoát dừng lại. Chỉ một lần này thôi. Duy nhất một lần này để vượt qua cơn bĩ cực.
Về đến phòng 314, tôi khẽ khàng đẩy cánh cửa gỗ ọp ẹp bước vào. Bên trong, Phong đang ngồi vắt chân chữ ngũ trên thành giường tầng dưới. Cậu ta một tay cầm mẩu bánh mì khô khốc gặm dở, một tay liên tục bấm chuột, đôi mắt cận thị dán chặt vào chiếc màn hình máy tính xách tay cũ kỹ đang chạy từng dòng lệnh kiểm thử cho một bài tập cấu trúc dữ liệu.
Nghe tiếng bản lề cửa kêu cót két, Phong lập tức ngẩng đầu lên, quẳng vội mẩu bánh mì xuống mặt bàn học bừa bộn sách vở: “Mày đi đâu từ tờ mờ sáng đến giờ thế hả Nam? Tao với con Hà tìm mày khắp nơi, gọi điện thì thuê bao không liên lạc được. Thầy Hoàng vừa nhắn tin cho đội mình đấy! Thầy bảo bắt đầu từ tuần sau, bộ môn sẽ ưu tiên tạo điều kiện cho nhóm mình mượn hai máy trạm ở phòng thực hành mạng D9 ngoài giờ học để tiếp tục đẽo gọt lại cái lõi dịch vụ chia sẻ phòng trọ sinh viên. Thầy còn nói nếu đợt này nhóm mình tối ưu tốt phần đệm mạng và giảm tải được độ trễ truy vấn, thầy sẽ trực tiếp giới thiệu sản phẩm cho bên Đoàn trường để đưa vào thử nghiệm thực tế ngay trong đợt đón tân sinh viên nhập học bổ sung đấy!”
Nhìn ánh mắt rạng rỡ, bừng sáng sự nhiệt huyết trong trẻo và chân thành của Phong, lồng ngực tôi bỗng thắt lại một nhịp đau nhói. Tôi lén lấy tay ép chặt chiếc USB trong túi quần sâu hơn nữa, vờ cúi gập người xuống tháo đôi giày vải ướt sũng bùn đất để che giấu đi vẻ lúng túng, bối rối đang lộ rõ trên gương mặt.
“Tao... tao có chút việc cá nhân phải giải quyết ngoài phố,” tôi buột miệng nói dối, giọng khẽ khàng và gượng gạo đến mức chính tai tôi nghe còn thấy giả tạo.
Phong nhíu mày, đưa mắt nhìn tôi dò xét từ đầu đến chân: “Việc gì mà bí mật thế? Mày lại nhận thêm ca rửa bát đêm ở Mùa Gió à? Tao đã nói với mày bao nhiêu lần rồi, cái lịch làm thêm bạt mạng của mày đang bóp chết thời gian học hành nghiên cứu đấy. Đợt thi vừa rồi hệ thống của nhóm mình bị sập tràn bộ nhớ đệm, một phần lớn cũng là do mày kiệt sức, đầu óc căng thẳng quá mức nên viết sót điều kiện dừng đệ quy. Đừng có tham bát bỏ mâm, Nam ạ. Cố quá rồi có ngày ngã bệnh ra đấy thì tiền kiếm được cũng chẳng đủ mua thuốc đâu.”
“Không, không phải ở quán cà phê,” tôi ngập ngừng, cổ họng khô khốc như có một nắm cát nghẽn lại bên trong. “Tao nhận làm thêm một cái hợp đồng ngắn hạn... làm bán thời gian cho một nhóm gia công phần mềm bên ngoài. Viết vài cái mô-đun bóc tách giao diện web đơn giản thôi, kiếm chút tiền công để trang trải tiền học phí với tiền nhà tháng này.”
Phong thở dài một hơi sườn sượt, lắc đầu ngao ngán nhưng không gặng hỏi thêm điều gì nữa. Tính tình cậu ta vốn ruột để ngoài da, thẳng thắn và tốt bụng, cứ đinh ninh rằng tôi chỉ nhận mấy việc lặt vặt như gõ lại tài liệu giáo án hay đi cài lại hệ điều hành dạo như cái hồi tôi còn học ở trường huyện. Cậu ta với tay lấy trên nóc tủ một hộp sữa đậu nành Fami còn ấm, ném nhẹ về phía tôi: “Uống đi cho lại sức rồi chợp mắt một lát. Chiều nay đúng ba giờ nhóm mình có lịch trực tiếp dùng phòng máy D9 trong hai tiếng đấy. Hà nó bảo trưa nay đã phác thảo xong toàn bộ bộ khung giao diện người dùng mới trên giấy, nhìn thoáng và logic hơn nhiều. Chiều lên đó mày nhớ xem qua bản thiết kế của nó thật kỹ rồi hẵng đụng tay vào viết lại phần mã nguồn kết nối cơ sở dữ liệu.”
Tôi đón lấy hộp sữa đậu nành ấm áp trong lòng bàn tay mà cõi lòng nặng trĩu như đeo đá. Cảm giác tội lỗi đầu tiên không bắt nguồn từ những dòng mã nguồn mờ ám nằm im lìm trong chiếc USB kim loại kia, mà nó nảy mầm và cào xé tâm can tôi từ chính khoảnh khắc tôi nhìn thẳng vào ánh mắt tin cậy của người bạn cùng phòng thân thiết nhất, rồi thốt ra một lời nói dối trơn tru để che đậy việc làm lén lút của mình.
***
Phòng thực hành máy tính D9 vào đầu giờ chiều mùa đông chìm trong một màn sương ẩm mờ mịt phả vào từ những ô cửa chớp không khép kín. Mùi nhựa thông từ những bảng mạch điện tử cũ kỹ bị nung nóng hòa lẫn với mùi ẩm mốc của thảm trải sàn và mùi mồ hôi của hàng chục sinh viên đang cắm cúi trước những cỗ máy tính để bàn CRT cồng kềnh, tạo nên một thứ không khí ngột ngạt, bức bối đến nghẹt thở. Tiếng gõ phím cơ khí lạch cạch vang lên liên hồi, va đập vào bốn bức tường vôi quét ve vàng đã bong tróc từng mảng lớn, nghe rào rào như một trận mưa đá dội trên mái tôn thủng.
Nhóm chúng tôi ngồi ở dãy bàn thứ ba, ngay sát góc cửa sổ nhìn ra khoảng sân xà cừ đang trút lá vàng xơ xác. Trong khi Phong cắm cúi cài đặt lại môi trường máy chủ cục bộ SQLite trên chiếc máy tính bên cạnh, chốc chốc lại vò đầu bứt tai vì lỗi phân quyền thư mục, tôi lặng lẽ bật cỗ máy của mình lên. Chiếc máy tính Pentium III đời cũ đặt ở góc phòng ký túc xá của tôi vốn không có card mạng kết nối Internet, do đó, để có thể thử nghiệm các luồng kết nối socket thực tế của dự án bên ngoài mà Kiên giao phó, tôi buộc phải tranh thủ tận dụng đường truyền mạng nội bộ tốc độ cao của trường đại học trong khung giờ thực hành này.
Tôi liếc nhìn xung quanh, thấy không ai để ý, liền nhanh tay cắm chiếc USB của Kiên vào cổng sau thùng máy. Tôi mở tập tin tài liệu đặc tả kỹ thuật và một tệp mã nguồn khung có tên `sync_agent.c`.
Trên màn hình CRT xanh đen lấp loáng của trình soạn thảo dòng lệnh, những cấu trúc dữ liệu bằng ngôn ngữ C hiện lên với vẻ đẹp sắc lạnh, gọn gàng nhưng chứa đầy nọc độc:
```c struct UserProfile { char student_id[16]; char id_card_number[20]; char full_name[64]; char email[64]; char phone_number[16]; char last_ip_address[32]; char session_cookie[512]; struct FriendNode *friends_list; }; ```
Nhiệm vụ cụ thể của tôi là phải hiện thực hóa trọn vẹn hai hàm cốt lõi: `harvest_session_data()` và `serialize_to_buffer()`. Tôi phải thiết kế một vòng lặp quét liên tục qua các vùng nhớ tạm thời của trình duyệt, chặn bắt các tiêu đề HTTP (HTTP Headers) có chứa chuỗi mã hóa phiên làm việc của người dùng, sau đó đóng gói toàn bộ các thông tin định danh cá nhân nhạy cảm này vào một mảng nhị phân phẳng duy nhất, nén chặt lại bằng thuật toán zlib để giảm thiểu tối đa kích thước gói tin trước khi âm thầm đẩy ngược về một địa chỉ IP tĩnh đặt tại Hồng Kông.
Những ngón tay tôi bắt đầu lướt thoăn thoắt trên bàn phím. Tiếng gõ lách cách quen thuộc, logic nhị phân chặt chẽ, các phép toán dịch bit chuẩn xác đến từng chu kỳ máy và kỹ thuật cấp phát vùng nhớ động... Mọi thứ diễn ra một cách thuần thục, mượt mà như một bản năng kỹ thuật mà thầy Dũng đã rèn giũa cho tôi qua hàng trăm đêm thức trắng bên chiếc máy tính phế liệu ở Nà Ban. Khi hoàn toàn chìm đắm vào thế giới của mã nguồn, tôi gần như quên bẵng đi bản chất đạo đức của những gì mình đang trực tiếp thao tác.
Trong đầu tôi lúc ấy chỉ còn lại những con số vô cảm, những khối nhớ `malloc` cần phải được giải phóng đúng lúc bằng `free()` để tránh hiện tượng rò rỉ bộ nhớ, những con trỏ mảng cần được ép kiểu an toàn tuyệt đối để không bao giờ quăng ra lỗi `Segmentation fault` chết người. Trong một thoáng mê muội đầy kiêu hãnh của một kẻ làm chủ kỹ thuật, tôi nhìn chằm chằm vào màn hình điều khiển, tự hào khi thấy đoạn mã do chính tay mình viết ra có thể bóc tách sạch sẽ một gói tin chứa trọn vẹn họ tên, số điện thoại, số chứng minh thư và danh sách bạn bè của năm mươi tài khoản thử nghiệm chỉ trong vòng chưa đầy mười hai mili giây ngắn ngủi.
“Nam, cậu đang viết cái gì trên máy thế này?”
Một giọng nói trong trẻo nhưng đanh gọn và nghiêm nghị bất thần vang lên ngay sát bên tai khiến tôi giật bắn mình, suýt nữa thì làm rơi con chuột quang xuống sàn.
Tôi hoảng hốt đưa tay bấm vội tổ hợp phím tắt để hạ cửa sổ dòng lệnh xuống thanh tác vụ, nhưng mọi thao tác đã quá muộn màng. Bùi Thanh Hà đã đứng sừng sững sau lưng tôi từ lúc nào không hay. Cô vừa từ bàn làm việc của thầy trợ giảng bước về sau khi xin cấp thêm một dải địa chỉ IP nội bộ để thử nghiệm hệ thống, trên tay cô vẫn còn ôm chặt tập giấy kẻ ô vuông vẽ chi tiết từng khung nhìn giao diện người dùng mà cô đã thức trắng đêm qua để phác thảo cho ứng dụng tìm trọ của nhóm.
Đôi mắt sắc sảo, đen lánh của Hà nhìn trừng trừng vào góc màn hình, nơi những dòng chú thích kỹ thuật bằng tiếng Anh và cấu trúc dữ liệu `struct UserProfile` quái dị vẫn còn hiển thị rành rành chưa kịp tắt.
“Đây tuyệt đối không phải là mã nguồn của dự án nhóm mình,” Hà lên tiếng, giọng cô hạ thấp xuống nhưng mang theo một vẻ nghi ngại và căng thẳng tột độ. Cô dứt khoát kéo chiếc ghế gỗ bên cạnh ngồi xuống sát mép bàn tôi, đôi mắt nhìn thẳng vào mặt tôi như muốn xuyên thấu tâm can. “Cấu trúc dữ liệu này là của cái gì đây? Tại sao trong một chương trình mạng lại có các trường `id_card_number`, `session_cookie` rồi cả `friends_list`? Cậu đang làm cái trò gì mờ ám thế này hả Nam?”
Tôi luống cuống rê chuột, cố tình mở một tệp tài liệu văn bản ghi chú bài tập thực hành đè lên cửa sổ soạn thảo mã nguồn: “À... có gì đâu. Mấy bài tập thực hành thêm của môn Lập trình hệ thống thôi mà. Mấy anh khóa trên nhờ tao kiểm tra hộ xem tại sao hàm cấp phát động của họ cứ chạy được một lúc là bị rò rỉ bộ nhớ.”
“Cậu đừng có mở mồm ra là tìm cách lừa tôi!” Hà không hề lay chuyển, ánh mắt của cô gái phố cổ này luôn chứa đựng một sự sắc bén, cương quyết khiến những kẻ có tật giật mình như tôi phải khiếp sợ. Cô nghiêng người tới, giật lấy con chuột từ tay tôi rồi nhanh chóng khôi phục lại cửa sổ dòng lệnh vừa bị ẩn. “Bài tập lớn hệ thống chẳng có môn nào, chẳng có thầy cô nào lại đi bắt sinh viên viết một cái mô-đun chuyên đi bắt trộm session cookie của trình duyệt rồi đóng gói số chứng minh nhân dân gửi ra máy chủ nước ngoài cả! Đây là một con bọ cào dữ liệu chạy ngầm (scraper agent). Nam, cậu thành thật trả lời tôi xem: cậu đang viết phần mềm gián điệp để theo dõi người khác có đúng không?”
“Theo dõi cái nỗi gì chứ!” Tôi gắt khẽ, hai má nóng bừng bừng vì cảm giác nhục nhã khi bị dồn vào chân tường, giọng nói bắt đầu mất kiểm soát và chuyển sang tông giọng phòng thủ gay gắt. “Cậu đừng có ngồi đấy mà nghiêm trọng hóa vấn đề, đừng có nâng cao quan điểm một cách vô lý như thế! Đây là phần mềm dịch vụ chính thống của một công ty chuyên về việc làm sinh viên. Người ta cần thu thập dữ liệu để chuẩn hóa lại toàn bộ hệ thống danh bạ người dùng, phục vụ cho việc kết nối tuyển dụng sau này. Tao chỉ nhận viết thuê phần kỹ thuật, tối ưu hóa luồng bóc tách dữ liệu cho người ta ăn tiền công thôi.”
Hà trừng mắt nhìn tôi, đôi lông mày thanh tú chau lại chặt đến mức tạo thành một vệt hằn sâu giữa trán. Cô không nói thêm lời nào, chỉ lạnh lùng dùng con lăn chuột kéo ngược văn bản lên phần đặc tả giao thức kỹ thuật mà Kiên đã soạn sẵn: “Chuẩn hóa hệ thống danh bạ tuyển dụng mà lại dùng kỹ thuật tiêm mã (code injection) để trích xuất sạch sẽ cookie phiên làm việc mỗi khi người ta đăng nhập vào cổng thông tin đào tạo của trường à? Nam, cậu có thèm dùng não để đọc kỹ cái đoạn văn bản này trước khi đặt bút viết mã không?”
Ngón tay trỏ mảnh dẻ của Hà ấn mạnh vào một đoạn văn bản in nghiêng nằm lọt thỏm ở giữa trang giấy trên màn hình: *“‘Mô-đun phải hoạt động hoàn toàn ở chế độ nền (silent background), không hiển thị thanh tiến trình, không được bật bất kỳ hộp thoại nào yêu cầu người dùng xác nhận cấp quyền truy cập danh bạ cục bộ.’* Cậu tự nhìn lại đi! Cậu mở mắt to ra mà nhìn xem, người dùng bình thường có ai biết được cái thứ quái quỷ này đang chạy ngầm trong máy của họ không?”
“Đó là phần việc thuộc về bên pháp lý và chính sách sản phẩm của công ty người ta!” Tôi giằng phắt con chuột lại từ tay Hà, các khớp ngón tay trắng bệch vì gồng lực, cố gắng bấu víu vào chiếc phao cứu sinh ngụy biện mà Kiên đã nhét vào đầu tôi sáng nay. “Họ có các điều khoản dịch vụ riêng in ở bản thỏa thuận người dùng. Sinh viên một khi đã tự nguyện bấm nút cài đặt tiện ích hay tải phần mềm về máy là coi như họ đã mặc định chấp nhận các điều khoản đó rồi! Tao chỉ là một thằng thợ viết mã thuê làm theo đúng đơn đặt hàng, tao không có quyền hạn và cũng chẳng rỗi hơi đi quyết định xem mớ dữ liệu đó sau này sẽ được người ta sử dụng vào mục đích gì!”
“Cậu thật sự ngây thơ đến mức tin vào cái thứ điều khoản rác rưởi đó, hay là cậu đang cố tình giả mù giả điếc để tự lừa dối chính mình hả Nam?”
Hà nhìn xoáy vào mắt tôi, trong ánh mắt ngập tràn vẻ thất vọng và đau xót tột cùng. Cô ghé sát người lại gần tôi hơn, hạ thấp giọng xuống mức tối thiểu để không làm kinh động đến những sinh viên khác trong phòng máy, nhưng từng âm tiết cô nhả ra đều đanh thép, lạnh lùng như những nhát búa gõ thẳng vào lương tri tôi: “Một cái tiện ích xem lịch học hay tra cứu việc làm bình thường, người ta cài vào máy tính chỉ với một mong muốn hết sức giản dị: mong nó nhắc giờ lên lớp, nhắc lịch thi, hoặc may mắn hơn là tìm được một chân chạy bàn, một chân gia sư kiếm thêm vài đồng trang trải cuộc sống qua ngày. Chẳng có một người bình thường nào—nhất là những đứa sinh viên tỉnh lẻ ngơ ngác vừa chân ướt chân ráo bước chân xuống cái đất Hà Nội bon chen này—lại có thể tỉnh táo để hiểu rằng cái nút ‘Đồng ý’ kia đồng nghĩa với việc họ đang dâng toàn bộ số chứng minh thư, số điện thoại cá nhân, danh bạ gia đình, bạn bè và cả phiên đăng nhập tài khoản riêng tư cho một ứng dụng lạ hoắc!”
Hà hít một hơi thật sâu, lồng ngực cô phập phồng vì phẫn nộ: “Họ không hiểu mình đang bấm vào cái gì đâu, Nam ạ! Họ bấm ‘Đồng ý’ chỉ vì họ nghĩ nó vô hại, vì họ đặt niềm tin vào cái tiêu đề quảng cáo hào nhoáng, sạch sẽ bên ngoài! Người ta hoàn toàn không biết mình đang bị lột sạch những gì. Và cậu, bằng chính cái đầu thuật toán thông minh, xuất sắc mà thầy cô hết lòng bồi dưỡng, cậu lại đang cắm cúi viết ra một công cụ tinh vi để giúp kẻ khác móc túi họ một cách êm thấm nhất, sạch sẽ nhất, trơn tru đến mức nạn nhân thậm chí còn không hề hay biết mình vừa bị cướp sạch thông tin cá nhân! Cậu có từng nghĩ đến hậu quả ghê gớm đằng sau chưa, nếu cái kho dữ liệu khổng lồ này bị bán đứt cho các công ty quảng cáo rác, các đường dây cho vay nặng lãi tín dụng đen, hay những tổ chức lừa đảo chuyên nghiệp trên mạng?”
Từng câu, từng chữ của Hà giáng xuống như những lằn roi quất thẳng vào mặt tôi. Cổ họng tôi đắng ngắt, một vị đắng chát chúa dâng lên tận cuống lưỡi.
Cơn giận dữ bốc hỏa hòa lẫn với nỗi mặc cảm tự ti của một đứa nghèo hèn bị lột trần manh áo rách bỗng chốc bùng lên như một ngọn lửa điên cuồng, thiêu rụi toàn bộ chút bình tĩnh gượng gạo cuối cùng trong tôi.
“Cậu thì biết cái gì mà phán xét tôi?” Tôi hạ giọng rít qua kẽ răng, mắt tôi đỏ ngầu găm chặt vào gương mặt trắng trẻo, thanh tú và nghiêm cẩn của Hà. “Cậu sinh ra và lớn lên ở ngay giữa cái đất thủ đô này, từ nhỏ đến lớn cậu đã bao giờ phải nếm trải cái cảm giác mở hòm gạo ra chỉ thấy đáy hòm trơ trọi, phải đếm từng hạt gạo mốc xem có đủ để nấu một bữa cháo loãng độn ngô qua bữa hay chưa? Cậu có bố mẹ là công chức, có gia đình êm ấm bao bọc chu cấp từng bữa ăn giấc ngủ, cậu đâu phải nơm nớp lo sợ mỗi đầu tháng vì tiền phòng trọ, đâu phải run rẩy sợ hãi một cái tờ giấy xác nhận hộ nghèo gửi muộn từ trên núi xuống sẽ khiến cậu bị đình chỉ thi tốt nghiệp! Một kẻ nghèo kiết xác đến mức không có nổi một nghìn lẻ dắt lưng như tôi không có cái đặc quyền cao sang để ngồi đó mà kén cá chọn canh, không thể từ chối một công việc ra tiền chỉ vì nó không tinh tươm, không sạch sẽ theo cái tiêu chuẩn đạo đức xa xỉ của các cậu!”
Tôi thở dốc, hai bả vai run lên bần bật. Những lời nói độc địa, cay nghiệt vừa thốt ra nghe vừa hèn mọn, vừa thảm hại, chẳng khác nào tiếng gầm gừ giãy giụa trong tuyệt vọng của một con thú hoang bị dồn vào chân tường, quay lại cắn càn cả bàn tay đang cố kéo nó ra khỏi vũng lầy.
Thế nhưng, Hà không hề lùi bước, cũng không hề tỏ ra sợ hãi hay giận dữ trước thái độ hung hăng của tôi. Cô ngồi yên bất động, đôi mắt mở to nhìn thẳng vào tôi, phẳng lặng và sâu thẳm đến mức tàn nhẫn:
“Tôi chưa bao giờ phủ nhận chuyện cậu đang rất khó khăn, Nam ạ. Tôi cũng không dám đứng ở đây để lên mặt dạy đời cậu về những nỗi cơ cực, đói khổ mà cậu đã phải nếm trải suốt những năm tháng qua ở quê nhà. Nhưng trước khi cậu tiếp tục lấy cái nghèo ra làm tấm bình phong vạn năng để biện minh cho mọi hành vi sai trái của mình, cậu hãy tự mở to mắt ra mà đọc hết toàn bộ cái luồng dữ liệu đó đi. Hãy đọc cho thật kỹ từ đầu chí cuối xem rốt cuộc cậu đang bán kỹ năng lao động chân chính của mình, hay là cậu đang đem bán rẻ chính sự lương thiện tối thiểu của một con người.”
Nói dứt lời, Hà dứt khoát đứng bật dậy. Cô cầm lấy tập bản vẽ giao diện trên bàn, quay lưng bước thẳng về phía chiếc máy tính của Phong ở đầu dãy, không thèm ngoái nhìn lại tôi lấy một lần.
Tôi ngồi chết trân trên chiếc ghế gỗ cứng ngắc, xung quanh chỉ còn lại tiếng ù ù đơn điệu của chiếc quạt thông gió gắn trên tường phòng máy D9. Bàn tay tôi đặt trên bàn phím khẽ run lên từng chập.
Từng lời đanh thép của Hà như một mũi dao sắc nhọn chọc thủng lớp màng ngụy biện mỏng manh, giả tạo mà tôi đã cố công đắp điếm suốt hai ngày qua. Lồng ngực tôi nghẹn ứ lại. Tôi hít một hơi thật sâu, cố nén cơn run rẩy nơi lồng ngực, mở lại thiết bị nạp mã và bắt đầu lần mò, rà soát từng dòng lệnh trong các chuỗi truy vấn API cùng kịch bản gửi nhận gói tin mà Kiên đã đính kèm trong các tệp tin cấu hình mẫu.
Trước đó, vì mải mê với số tiền công ba triệu rưỡi quá lớn, tôi chỉ chăm chăm dồn toàn bộ sự chú ý vào việc làm thế nào để giải quyết bài toán kỹ thuật: làm sao để luồng gom dữ liệu chạy thật nhanh, không bị nghẽn mạng, không làm tràn bộ nhớ đệm và vượt qua được tường lửa của hệ thống. Tôi đã cố tình phớt lờ đi bức tranh toàn cảnh đằng sau những dòng lệnh ấy.
Nhưng giờ đây, khi trực tiếp bóc tách sâu vào các tầng giao thức kết nối và phân tích luồng dữ liệu phản hồi trả về từ máy chủ đích, mắt tôi bỗng mờ đi vì kinh hãi.
Bên thuê không hề có ý định dừng lại ở việc thu thập những số liệu thống kê tổng hợp phục vụ cho nhu cầu tìm kiếm việc làm của sinh viên như những lời đường mật mà Kiên đã rót vào tai tôi. Các đoạn mã kịch bản gửi về từ máy chủ từ xa chứa những câu lệnh truy vấn cực kỳ nguy hiểm: nó yêu cầu trích xuất toàn bộ lịch sử các cuộc trò chuyện nội bộ được lưu trong bộ nhớ đệm của trình duyệt, cào sạch danh sách các số điện thoại liên lạc khẩn cấp của gia đình, người thân mà sinh viên đã khai báo trong hồ sơ nhập học. Tệ hại hơn cả, trong một nhánh xử lý ngầm, đoạn mã còn tìm cách thu thập dấu vân tay thiết bị (device fingerprint) và các mã thông báo ủy quyền thanh toán (auth tokens) được liên kết với một ví điện tử sinh viên đang trong giai đoạn thử nghiệm của một ngân hàng nội địa.
Toàn bộ khối dữ liệu nhạy cảm khổng lồ đó hoàn toàn không được mã hóa đầu cuối. Chúng được chuyển thẳng dưới dạng văn bản thô (clear text) về một cụm máy chủ trung gian không rõ danh tính, không có bất kỳ chứng chỉ an toàn nào, đặt tại một địa chỉ IP thuộc khu vực cảng Hồng Kông.
Đây không phải là một công cụ tối ưu hóa dữ liệu. Đây là một con bọ gián điệp độc hại, một cái bẫy kỹ thuật số được giăng ra một cách bài bản, xảo quyệt nhằm bòn rút tận cùng thông tin nhân thân, biến những sinh viên nhẹ dạ cả tin thành những món hàng béo bở để phục vụ cho các mạng lưới quảng cáo rác ngầm, hoặc nguy hiểm hơn, cung cấp danh bạ con nợ cho các tổ chức tín dụng đen và các đường dây lừa đảo công nghệ cao xuyên biên giới.
Hai bên thái dương tôi giật lên từng cơn buốt nhói. Giữa căn phòng máy nồng nặc mùi ẩm mốc, bên tai tôi bỗng vang vọng lại giọng nói trầm ấm, nghiêm cẩn của thầy Dũng bên chiếc bàn gỗ mộc ở trường huyện năm nào, cái đêm thầy cặm cụi chỉ cho tôi cách hàn lại từng đường mạch gãy trên bo mạch chủ: *“Một người thợ viết mã giỏi trước hết phải là một người biết kính sợ sức mạnh của những gì mình tạo ra. Đừng bao giờ chạm tay vào hệ thống, đừng bao giờ thay đổi cấu trúc dữ liệu của người khác khi con chưa hiểu rõ hậu quả cuối cùng của nó sẽ dẫn về đâu.”*
Tôi đang làm cái gì thế này? Tôi đang dùng chính những kiến thức quý giá mà thầy truyền dạy, dùng chính sự nhọc nhằn của những đêm thức trắng để đan một tấm lưới vô hình, biến mình thành kẻ tòng phạm gián tiếp cướp đi sự an toàn, sự bình yên của những đứa trẻ cũng nghèo khổ, cũng ngơ ngác và cùng quẫn như chính bản thân tôi trong cái ngày đầu tiên đặt chân xuống bến xe Mỹ Đình đầy cạm bẫy này ư?
Ruột gan tôi cồn cào như bị xát muối. Không thể chần chừ thêm một giây phút nào nữa, tôi lập tức rút chiếc điện thoại cục gạch trong túi ra, rảo bước thật nhanh ra khỏi phòng máy D9, đứng ở góc chiếu nghỉ cầu thang gió lùa hun hút rồi bấm số gọi thẳng cho Kiên.
Tiếng chuông điện thoại reo lên từng hồi dài lê thê, khô khốc. Phải đến hồi chuông thứ năm, đầu dây bên kia mới có người uể oải nhấc máy: “Alo, Nam đấy à? Sao thế, có vướng mắc gì về phần thư viện socket à?”
“Anh Kiên,” tôi nói dồn dập, cố hết sức ghìm lại cơn run rẩy đang nghẹn ứ nơi đáy họng. “Tôi vừa rà soát lại toàn bộ luồng dữ liệu trong tệp kịch bản gửi nhận. Tôi không thể viết hàm bóc tách cookie phiên làm việc và cào danh bạ ngầm như bản mô tả được. Việc đó hoàn toàn vi phạm pháp luật. Tôi đề nghị thu hẹp phạm vi thu thập lại: chỉ bóc tách các thông tin cơ bản gồm họ tên và chuyên ngành đào tạo mà sinh viên chủ động chọn chế độ công khai trên hệ thống. Ngoài ra, trong mô-đun bắt buộc phải bổ sung thêm một cửa sổ thông báo (popup dialog) hiện lên rõ ràng, yêu cầu người dùng phải tự tay bấm nút xác nhận đồng ý thì tiến trình đồng bộ mới được phép khởi chạy.”
Đầu dây bên kia đột ngột rơi vào một khoảng im lặng chết chóc kéo dài vài giây. Rồi một tiếng cười khẩy vang lên, lạnh tanh và đầy vẻ coi thường:
“Cậu đang đùa với tôi đấy à Nam? Bổ sung cửa sổ thông báo để người dùng người ta giật mình bấm tắt ứng dụng đi à? Cậu nghĩ bên đối tác của tôi là trại từ thiện hay sao mà bỏ ra tiền triệu để đi thu thập mấy cái họ tên với chuyên ngành công khai vô thưởng vô phạt ấy? Tôi nói cho cậu biết, cậu chỉ là một đứa sinh viên làm thuê ăn tiền công theo đơn đặt hàng, đừng có ảo tưởng sức mạnh mà nhảy vào can thiệp vào mô hình kinh doanh và nghiệp vụ của người khác!”
Giọng Kiên đanh lại, từng từ thốt ra đều mang theo sự đe dọa trắng trợn: “Bên tôi cần đúng cái mô-đun bóc tách ngầm y như trong bản đặc tả kỹ thuật đã giao, không thừa không thiếu một tính năng nào. Tôi nhắc nhở cho cậu nhớ: cậu đã cầm một triệu tiền cọc đợt một và cầm cả thiết bị USB chuyên dụng của công ty người ta rồi. Hạn chót là cuối tuần này, nếu cậu không nộp ra bản chạy thử hoàn chỉnh theo đúng yêu cầu, thì đừng có trách tôi đến gặp thẳng thằng Long và báo cáo lên khoa về tư cách đạo đức làm việc vô trách nhiệm của cậu!”
*Cụp.*
Kiên dập máy một cách tàn nhẫn. Tiếng tút dài vô hồn rền rĩ vang lên trong ống nghe như một bản án đè nặng lên màng nhĩ tôi. Gió đông bắc thốc mạnh qua khe cửa sổ hành lang, buốt buốt lạnh thấu vào tận xương tủy.
Chiều hôm ấy, theo đúng kế hoạch đã định từ trước, cả Nhóm 07 sẽ có một buổi làm việc chung kéo dài ba tiếng đồng hồ tại phòng đọc thư viện lớn để ráp nối phần giao diện người dùng mới toanh của Hà với tầng xử lý cơ sở dữ liệu mà Phong vừa hoàn thiện.
Nhưng tôi đã không đến.
Tôi không còn mặt mũi nào để bước vào căn phòng đó, không thể đối diện với ánh mắt trong veo của Hà hay nụ cười xởi lởi, vô tư của Phong. Tôi ngồi lì một mình ở một góc khuất tối tăm trên chiếu nghỉ tầng hai của dãy nhà ký túc xá B7, hai tay ôm chặt lấy đầu, đưa mắt nhìn vô định vào màn hình điện thoại cứ chốc chốc lại sáng lên rồi tắt ngấm.
Đến tối mịt, khi gió lạnh ngoài trời bắt đầu rít lên từng hồi qua những chấn song sắt han gỉ, cánh cửa phòng 314 mới bật mở. Phong bước vào phòng, cả người ướt đẫm hơi sương đêm, gương mặt cậu ta lộ rõ vẻ mệt mỏi rã rời sau hàng giờ liền phải vừa tự tay gõ mã nguồn, vừa phải kiêm luôn việc gỡ lỗi logic cho cả nhóm.
Phong đặt chiếc ba lô nặng trịch xuống mặt bàn, nhìn tôi bằng một ánh mắt chất chứa nỗi thất vọng sâu sắc mà tôi chưa từng thấy ở cậu bạn này bao giờ:
“Chiều nay rốt cuộc mày đã biến đi đâu thế hả Nam? Con Hà nó ngồi ở thư viện ôm tập tài liệu đợi mày suốt cả buổi chiều để chốt lại mấy cái hàm hiển thị danh sách phòng trọ. Cả nhóm đang phải vắt chân lên cổ chạy đua từng ngày từng giờ để kịp tiến độ cho thầy Hoàng duyệt đề tài gửi lên Đoàn trường, thế mà mày lại vô trách nhiệm bỏ ngang xương như thế à?”
Tôi cúi gầm mặt xuống sàn nhà lát gạch hoa đã sứt mẻ, hai bàn tay giấu dưới gầm bàn sắt siết chặt vào nhau đến mức móng tay bấm sâu vào da thịt:
“Tao xin lỗi... Tao thực sự xin lỗi mày và Hà. Chiều nay bên phía hợp đồng ngoài giờ họ thúc ép tiến độ gấp quá, tao buộc phải xử lý cho xong để kịp lấy tiền công trang trải học phí... Tao không cố ý bỏ rơi nhóm đâu.”
Phong nhìn tôi hồi lâu, lồng ngực cậu ta khẽ phập phồng như muốn thốt lên những lời trách móc nặng nề nhất. Nhưng rồi, nhìn thấy bộ dạng tiều tụy, xơ xác và thảm hại của tôi, cậu ta chỉ thở dài một hơi thật dài, ném tập giáo trình dở dang lên mặt giường tầng rồi quay lưng bước ra phía ban công, không nói thêm với tôi một lời nào nữa.
Sự im lặng lạnh lùng của người bạn cùng phòng trung hậu ấy còn đau đớn và tàn nhẫn hơn bất kỳ lời mắng nhiếc, chửi bới nào trên đời. Nó như một bức tường vô hình vừa được dựng lên, ngăn cách tôi với thế giới trong sạch, ngay thẳng mà tôi từng thuộc về.
Đêm hôm đó, cái rét của đợt gió mùa đông bắc tràn về đỉnh điểm. Gió luồn qua những khe cửa sổ gỗ hở hoác, thổi rít từng cơn lạnh buốt vào căn phòng 314. Khoảng hơn một giờ sáng, khi cả ba người bạn cùng phòng đều đã chìm sâu vào giấc ngủ mệt mỏi, phát ra những tiếng ngáy đều đặn trong chăn ấm, tôi lặng lẽ trở mình ngồi dậy.
Tôi không bật đèn tuýp. Tôi lần mò trong bóng tối, bước nhẹ chân đến bên góc bàn học của mình, với tay bật công tắc chiếc máy tính Pentium III đời cũ. Chiếc quạt nguồn kêu rền rĩ từng hồi như một cỗ máy xay lúa cũ kỹ trước khi màn hình CRT lóe lên một đốm sáng trắng rồi chuyển sang màu xanh lục quen thuộc.
Tôi cắm chiếc USB của Kiên vào máy, mở thư mục chứa toàn bộ dự án gián điệp mà tôi đã dành trọn mấy ngày qua để nghiền ngẫm. Những tệp mã nguồn `sync_agent.c`, các hàm bóc tách dữ liệu tinh vi, các thuật toán nén và phân luồng mượt mà do chính đầu óc tôi thai nghén ra hiện lên mồn một trước mắt.
Ngón tay trỏ của tôi đặt hờ trên phím bấm, lơ lửng giữa không trung suốt một thời gian rất dài.
Tôi nghĩ đến khoản tiền hai triệu rưỡi còn lại đang nằm trong tầm tay. Nếu tôi tặc lưỡi, nhắm mắt xuôi tay làm ngơ, chỉ cần hai ngày nữa thôi, khi toàn bộ gói phần mềm này được bàn giao trơn tru cho Kiên, tôi sẽ cầm trong tay một món tiền khổng lồ đối với một đứa sinh viên nghèo. Tôi sẽ có đủ tiền để mua một chiếc áo khoác phao dày dặn, ấm áp thay cho manh áo rách tả tơi này; tôi sẽ có đủ tiền để mua thêm tài liệu học tập, trả sạch các khoản nợ tiền ăn cơm bụi; và tôi sẽ có thể đàng hoàng gửi về cho bác dâu Sương một khoản tiền phụ giúp mua thuốc men trong những ngày mùa đông cắt da cắt thịt ở vùng cao.
Nhưng rồi, ngay trong khoảnh khắc ấy, bóng tối của căn phòng bỗng chập chờn hiện lên hình ảnh của cô Hạnh năm nào ở Bản Nà Ban. Tôi nhớ như in cái đêm mùa đông năm ấy, dưới ánh sáng leo lét của ngọn đèn dầu hỏa hun khói đen nhẻm, cô Hạnh đã ngồi còng lưng nắn nót chép tay từng tờ danh sách học sinh nghèo vượt khó, cẩn thận dùng chút tiền lương giáo viên còi cọc của mình để bù vào tiền mua sách vở cho tôi. Tôi nhớ lại ánh mắt kiên định, sáng ngời và chất chứa đầy nỗi đau của Hà lúc chiều ở phòng máy D9 khi cô nói: *“Cậu đang bán kỹ năng, hay đang bán rẻ chính sự lương thiện của một con người?”*
Tôi không thể. Tôi tuyệt đối không thể tiếp tục sống sót, không thể ngẩng cao đầu bước đi trên cõi đời này bằng cách giẫm đạp lên sự an toàn và quyền riêng tư của những con người khốn khó khác chỉ để cứu vãn cái túi tiền rỗng tuếch của bản thân. Nghèo đói có thể là một nghịch cảnh nghiệt ngã sinh ra để thử thách con người ta, nhưng nó vĩnh viễn không bao giờ là một tấm giấy phép, một cái cớ hợp lý để tôi tự cho phép mình biến chất, trở thành một kẻ trộm giấu mặt nấp sau những dòng lệnh vô tri.
Hơi thở tôi run rẩy, lồng ngực thắt lại trong một cơn đau đớn giải thoát.
Tôi rê chuột, chọn toàn bộ thư mục dự án, rồi dùng hai ngón tay dứt khoát nhấn mạnh tổ hợp phím: `Shift + Delete`.
Một hộp thoại cảnh báo nhỏ hiện lên giữa màn hình CRT: *“Are you sure you want to permanently delete these files?”* (Bạn có chắc chắn muốn xóa vĩnh viễn những tệp tin này không?)
Tôi không hề do dự. Tôi ấn mạnh phím `Enter`.
Toàn bộ các tệp mã nguồn thu thập dữ liệu ngầm, toàn bộ những thuật toán bóc tách cookie và danh bạ mà tôi đã dày công xây dựng biến mất hoàn toàn khỏi ổ đĩa trong nháy mắt, không để lại bất kỳ một dấu vết nào.
Làm xong việc đó, tôi rút chiếc USB kim loại ra khỏi thùng máy. Tôi lấy chiếc phong bì giấy xi măng trong túi áo khoác ra, kiểm tra lại cẩn thận năm tờ tiền polymer hai trăm nghìn mới cứng vẫn còn nguyên vẹn bên trong. Tôi nhét chiếc USB cùng chiếc phong bì vào một chiếc túi nilon nhỏ màu đen, rút chiếc bút bi cạn mực trên giá sách, xé một mảnh giấy vở học trò rồi nắn nót viết một mẩu giấy ngắn:
*“Tôi dừng dự án tại đây. Hoàn trả lại toàn bộ thiết bị và một triệu đồng tiền đặt cọc đợt một. Đừng tìm tôi nữa.”*
Tôi chấp nhận mất trắng khoản tiền công ba triệu rưỡi mà mình từng khao khát đến cháy bỏng. Tôi chấp nhận đối mặt với những ngày tháng đói ăn sắp tới, chấp nhận những buổi tối còng lưng rửa bát trong nước lạnh đến tê cóng ở quán Mùa Gió để kiếm từng nghìn lẻ mưu sinh. Nhưng tôi biết, tôi sẽ không bao giờ dám hé răng kể lại ngọn ngành câu chuyện nhục nhã này cho Phong hay cho Hà nghe. Tôi xấu hổ đến thắt nghẽn ruột gan vì nhận ra rằng, chỉ mới bước chân ra chốn phồn hoa đô hội này chưa đầy nửa năm, chính bản thân tôi đã từng dao động dữ dội, đã từng vì manh áo miếng cơm mà suýt chút nữa đem bán rẻ danh dự và phẩm giá của một người viết mã.
Tôi vươn cánh tay mỏi nhừ bấm nút tắt nguồn cỗ máy tính cũ. Tiếng quạt gió lịm dần, lịm dần rồi tắt hẳn. Màn hình CRT chớp lên một tia sáng xanh yếu ớt rồi hoàn toàn chìm vào bóng tối đặc quánh của căn phòng 314.
Nhưng đúng ngay vào khoảnh khắc bóng đêm vừa bao trùm lấy không gian, chiếc điện thoại cục gạch đặt trơ trọi trên mặt bàn bỗng rung lên bần bật.
*Bzz... Bzz... Bzz...*
Tiếng rung kim loại ma sát với mặt bàn gỗ vang lên khô khốc, sắc nhọn giữa đêm thanh vắng. Ánh sáng đèn nền màu xanh lè hắt ngược lên mảng tường vôi tróc lở, làm hiện rõ mồn một một dòng tin nhắn ngắn ngủi vừa được gửi đến từ số máy của Kiên:
*“Cậu tưởng trả cọc là xong à Nam? Dữ liệu và hợp đồng này không phải thứ cậu muốn rút là rút được đâu.”*