Chương 7 / 8 ◆ ~8 phút đọc

Chương 7: Offline Mode Bắt Đầu Từ Một Pilot Nhỏ

Chế độ ngoại tuyến không bắt đầu ở Hà Giang. Nó bắt đầu trong một phòng họp nhỏ ở Hà Nội, khi một cô giáo nói thẳng với Khải: “App của anh chạy rất ổn khi có mạng. Nhưng trường tôi không có mạng ổn.”

Khải đang giới thiệu LearnFree cho một tổ chức giáo dục địa phương muốn thử nghiệm ở ba trường vùng cao. Đợt thí điểm được giữ ở quy mô nhỏ: ba trường, một số thiết bị sẵn có của trường cộng với một lô máy cũ được tài trợ. Đủ nhỏ để nhóm còn hỗ trợ và quan sát được, và để nếu app hỏng thì không biến hàng nghìn học sinh thành người thử nghiệm bất đắc dĩ.

Cô giáo tên Vàng Thị Mỷ hỏi tiếp: “Nếu mất mạng giữa bài, học sinh có bị mất tiến độ không?”

“Hiện tại một số bài học vẫn cần đồng bộ trực tuyến,” Hà Phương trả lời.

“Vậy là chưa dùng được ở chỗ tôi.”

Khải nhìn lộ trình sản phẩm. Chế độ ngoại tuyến đang nằm ở quý sau. Anh định nói “Bọn em sẽ đẩy lên làm ngay”, thì Phương đá nhẹ vào chân anh dưới gầm bàn. Khải sửa lời: “Bọn em sẽ xác định phạm vi một đợt thí điểm ngoại tuyến trước khi hứa ngày cụ thể.”

Về văn phòng, nhóm không bắt đầu bằng việc “tải toàn bộ app xuống máy tính bảng”. Họ bắt đầu bằng câu hỏi. Nội dung nào cần dùng được khi không có mạng? Thiết bị còn bao nhiêu dung lượng? Học sinh có dùng chung máy không? Tiến độ được đồng bộ thế nào khi có mạng trở lại? Mô hình tài khoản ra sao, quyền riêng tư thế nào khi nhiều em dùng chung một máy? Giáo viên cần xem gì trên bảng theo dõi? Cập nhật nội dung và mô hình bằng cách nào? Chuyện gì xảy ra nếu mất máy?

Khải từng nghĩ ngoại tuyến chỉ là chuyện lưu đệm. Hóa ra không phải. Nó là cả một bài toán khác về sản phẩm, bảo mật và quyền riêng tư.

Một số trường không muốn học sinh phải dùng email cá nhân. Nhóm tạo mã định danh do nhà trường quản lý và hồ sơ cục bộ không gắn tên thật cho đợt thí điểm, cắt bớt các trường thông tin phải thu thập: không lấy ngày sinh đầy đủ nếu không cần, không bắt nhập số điện thoại. Giáo viên giữ danh sách đối chiếu trong hệ thống của trường, với vai trò truy cập rõ ràng. Nhóm LearnFree chỉ nhận những dữ liệu cần thiết để hỗ trợ và đánh giá thí điểm theo thỏa thuận.

Phần phản hồi phát âm còn khó hơn. Mô hình chạy trực tiếp trên máy phải thật nhẹ, trong khi thiết bị thì cũ, micro mỗi máy một kiểu, còn giọng nói và tiếng mẹ đẻ của học sinh khác xa tập dữ liệu huấn luyện chính. Khải muốn dùng thang chấm ba sao như LearnVN ngày trước, nhưng sau lần thử đầu tiên, cô Mỷ phản đối.

“Có em nói được mà máy cứ báo sai. Các em sẽ nghĩ mình kém.”

Nhóm xem lại tỷ lệ máy từ chối nhầm, và cô nói đúng: mô hình kém ổn định trong môi trường ồn và với một số giọng. “Vậy bỏ chấm điểm,” Khải nói. Người phụ trách nội dung đề xuất một cách khác: cho học sinh nghe mẫu, cho ghi âm rồi nghe lại giọng mình, chỉ đưa phản hồi tự động khi độ tin cậy đủ cao và lời phản hồi không mang tính phán xét. Giáo viên vẫn là người hỗ trợ chính.

“App không dạy thay cô đâu,” Khải nói với cô Mỷ.

“Tốt,” cô đáp. “Tôi cũng không muốn máy bảo tôi phát âm sai rồi học sinh hết tin cô giáo.” Cả hai cùng bật cười.

Đợt thử nghiệm ngoại tuyến đầu tiên thất bại ở khâu đồng bộ. Hai thiết bị tạo ra xung đột tiến độ khi dùng chung một tài khoản thử. Không mất dữ liệu lớn, nhưng đủ để nhóm dừng việc mở rộng. Phương thiết kế lại: không áp dụng kiểu “bản ghi sau cùng thắng” cho mọi thứ, mà xác định rõ sự kiện nào gộp được, sự kiện nào cần quy tắc riêng.

Khải không tự ngồi code “tới sáng” rồi đẩy thẳng lên hệ thống thật. Mọi thay đổi đều qua pull request có người duyệt, có kiểm thử, phát hành theo từng nấc, chỉ thu thập số liệu vận hành tối thiểu theo đúng sự đồng ý và quyền riêng tư. Đầu tiên là máy của một giáo viên, rồi vài máy, rồi cả lớp.

Ba tuần sau, các bài học ngoại tuyến đã ổn định hơn. Khải lên trường trong chuyến đánh giá thí điểm. Anh không phóng xe máy bốn tiếng qua đèo để “trao tận tay máy tính bảng” như trong phim; tổ chức địa phương lo hậu cần, còn Khải, Phương và người phụ trách nội dung đi cùng cán bộ giáo dục. Lớp học cũng không có ba mươi hai em mỗi em một máy; thiết bị được chia theo nhóm và theo ca.

Một cậu bé lớp năm tên Páo nghe một đoạn hội thoại ngắn rồi nói lại. App không bật lên ba ngôi sao nào. Nó cho em nghe lại bản ghi âm của chính mình, rồi phát mẫu thêm một lần. Páo thử lần nữa. Cô Mỷ đi ngang qua, sửa nhẹ một âm, và em cười toe.

Khải đứng cuối lớp, thấy lòng ấm lên. Nhưng sau giờ học, người phụ trách nội dung kéo anh ra hành lang. “Đừng biến một em nhỏ thành linh vật của dự án.”

“Tôi chỉ thấy vui thôi mà.”

“Vui thì được. Nhưng nếu viết bài về trường hợp này thì phải xin phép, tránh kiểu khai thác cái nghèo để lấy cảm xúc, và đừng nói app ‘thay đổi cuộc đời’ ai đó sau một tiết học.”

Khải gật đầu. Trong đầu anh chợt hiện lại câu chuyện cũ mình từng thích kể: một em bé nói “Hello” lần đầu tiên, và anh hiểu vì sao mình viết code. Một câu đẹp, nhưng quá gọn. Giáo viên ở đây đã dạy trước khi có app, học sinh đã học trước khi có app. Chiếc máy chỉ là một công cụ.

Kết quả đánh giá sau hai tháng không cho phép nói rằng “học sinh tiến bộ tiếng Anh rõ rệt”. Mẫu quá nhỏ, có quá nhiều yếu tố gây nhiễu. Nhóm đo những thứ thực tế hơn: tỷ lệ hoàn thành bài khi không có mạng, tỷ lệ đồng bộ thành công, mức độ dễ dùng do giáo viên đánh giá, số thiết bị hỏng, mức độ tương tác với nội dung, số lần cần hỗ trợ, và một vài kết quả học tập mang tính thăm dò, không đem ra quảng cáo.

Kết quả cho thấy chế độ ngoại tuyến giúp việc học đều đặn hơn ở những trường mạng yếu, và giáo viên thích được tải nội dung về trước. Nhưng một số máy thiếu dung lượng, âm lượng mỗi máy một khác, và phản hồi phát âm vẫn cần cải thiện. Không có tiêu đề nào kiểu “LearnFree thay đổi giáo dục vùng cao”. Báo cáo gửi nhà tài trợ ghi đúng những giới hạn ấy.

Khải thấy bản báo cáo khô khan. Phương nói: “Khô khan nhưng dùng được cho giai đoạn hai.” Giai đoạn hai chỉ mở thêm vài trường, sau khi nhóm đã xử lý xong những lỗi chính của đợt đầu.

Chế độ ngoại tuyến được đưa vào kho mã nguồn mở chính. Một người đóng góp ở nước khác hỏi có thể dùng lại kiến trúc này cho những vùng kết nối kém ở chỗ họ không. Phương trả lời: “Dùng code theo giấy phép thì được. Nhưng việc triển khai, dữ liệu, quyền riêng tư và bản địa hóa nội dung thì bạn phải tự xử lý theo bối cảnh của mình.”

Khải đọc bình luận ấy. Ngày trước, anh sẽ viết một câu hào phóng kiểu “Cứ lấy mà dùng”. Giờ anh viết thêm: “Code được cung cấp theo giấy phép của dự án. Bạn vui lòng xem lại các giả định về triển khai và quyền riêng tư cho người dùng của mình.” Dài hơn, nhưng đúng hơn.

Chế độ ngoại tuyến không ra đời vì Khải gặp một em bé rồi thức trắng đêm viết code. Nó ra đời vì một cô giáo nói thẳng rằng sản phẩm không chạy được trong điều kiện thật, rồi nhiều người cùng nhau gỡ từng lớp vấn đề.

Đó là cách Khải muốn LearnFree lớn lên.

Đã đọc xong

Chương 7 / 8

Câu chuyện vẫn còn phía trước.

Đọc chương tiếp
Home Trước Sau
Đọc tiếp chỗ đang dở? Bạn đã đọc một phần chương này.
Cài đặt Đọc truyện
Cỡ chữ
Giãn dòng
Độ rộng trang đọc
Kiểu Chữ
Phông Nền
💬 Bình luận đoạn
Đang tải bình luận...