Duolingo là ứng dụng học ngôn ngữ phổ biến nhất thế giới vì đã biến một việc mà trước đây mọi người thấy khó khăn trở nên dễ dàng và thú vị. Trải nghiệm ngôn ngữ tự nhiên này đòi hỏi phải có một luồng tính năng và thử nghiệm mới liên tục, cũng như một ứng dụng chạy mượt mà có thể cung cấp tất cả những tính năng và thử nghiệm đó. Đối với Duolingo, một ứng dụng không phản hồi trên thiết bị ở bất kỳ nơi nào trên thế giới có thể khiến người học nản lòng. Điều này giúp họ cam kết mang đến trải nghiệm tuyệt vời cho ứng dụng, đặc biệt là trên các thiết bị Android mà 60% học viên của họ sử dụng, kể cả CEO của họ, người theo dõi ứng dụng trên một chiếc điện thoại bình dân. Vì vậy, khi nhóm phát triển Android của Duolingo nhận thấy số lỗi "Ứng dụng không phản hồi" và số khung hình bị rớt tăng lên, thậm chí còn nhận được những lời phàn nàn viết tay, họ đã hành động ngay lập tức.
Họ nhanh chóng phát hiện ra nguồn gốc của các vấn đề về hiệu suất của ứng dụng: cấu trúc phần mềm hiện có không mở rộng tốt khi nhóm của họ phát triển. Các bản cập nhật cần thiết đã gây ra tình trạng giảm hiệu suất đáng kể trên ứng dụng. Các nhà phát triển của họ đã dành nhiều thời gian hơn để sửa lỗi và ít thời gian hơn để phát hành các tính năng mới tạo doanh thu. Cấu trúc phần mềm lỗi thời của họ bắt đầu trở thành một trở ngại không thể chấp nhận được đối với họ, tốc độ của nhóm và trên hết là trải nghiệm của người dùng. Họ cần xây dựng lại cơ sở mã từ đầu.
Cách họ làm
Lúc đầu, nhóm bị chia rẽ. Đây có phải là ưu tiên duy nhất của họ hiện tại không? Một nhóm cho rằng việc tiếp tục phát hành các tính năng mới và tăng doanh thu quan trọng hơn, trong khi nhóm còn lại tin rằng việc tập trung toàn bộ sự chú ý vào việc khởi động lại Android là hướng đi đúng đắn. Cuối cùng, họ đã đạt được thoả thuận rằng việc tăng cường nỗ lực chống lại các lỗi hồi quy có nguy cơ làm hỏng hoàn toàn lộ trình của họ. Họ phải dốc hết sức.
Nhóm đã quyết định chọn một giải pháp ngày càng phổ biến. Họ quyết định viết lại ứng dụng của mình bằng Model-View-ViewModel (Mô hình-Khung hiển thị-Mô hình khung hiển thị), một mẫu phần mềm do Google hỗ trợ, cho phép nhà phát triển đơn giản hoá cấu trúc của ứng dụng bằng cách tạo sự tách biệt rõ ràng về các mối quan tâm. Với MVVM, họ có thể tách biệt quá trình phát triển giao diện người dùng đồ hoạ (khung hiển thị) với quá trình phát triển logic nghiệp vụ (mô hình). Họ có thể thiết lập các mẫu rõ ràng và được thống nhất, giúp cả hai bên dễ dàng điều chỉnh phương pháp tiếp cận đối với các tính năng mới và giới thiệu cho các nhà phát triển mới.
Việc chia mỗi tính năng thành một phần mô-đun riêng giúp nhóm nhanh chóng lấy lại năng suất, vì họ có thể chỉ định các nhóm nhỏ làm việc song song trên từng tính năng, tăng tốc độ trong khi giảm lỗi.
Họ đã triển khai cấu trúc mới này bằng các thư viện trong Jetpack của Android, bao gồm Dagger và Hilt, để giúp họ viết mã hoạt động nhất quán trên các phiên bản và thiết bị Android. Hai điểm bổ sung này giúp họ tạo ra các tính năng được đóng gói tốt hơn và sử dụng các mô-đun tích hợp của Android một cách hiệu quả hơn.
Kết quả
Những cải thiện về hiệu suất này đã giúp người học có trải nghiệm tốt hơn đáng kể trên Android, đặc biệt là trên các thiết bị cấp thấp. Những thay đổi này cũng giúp ứng dụng phản hồi nhanh hơn và có ảnh động mượt mà hơn trên các thiết bị hàng đầu. Tỷ lệ lỗi "Ứng dụng không phản hồi" (ANR) hằng ngày giảm 41%. Tỷ lệ phần trăm thời gian ứng dụng có tốc độ khung hình thấp hơn mục tiêu đã giảm 28%. Quan trọng nhất là người dùng của họ đã tăng tốc độ lên 40% khi di chuyển qua các màn hình chính.
Bàn tay cầm ghi chú đọc ít hơn 41% lỗi ANR, tốc độ khung hình cải thiện 28% và trải nghiệm nhanh hơn 40%.
Quá trình khởi động lại toàn bộ kéo dài 8 tuần và giúp ứng dụng trở nên hấp dẫn và thú vị hơn đáng kể đối với tất cả người học trên Duolingo. Trong 6 tháng kể từ đó, nhóm không ghi nhận bất kỳ sự sụt giảm hiệu suất đáng kể nào, cho phép họ tập trung trở lại vào việc phát hành các tính năng tạo doanh thu. Quyết định tập trung nỗ lực của nhóm vào chất lượng đã mang lại kết quả tốt.
Nhờ sự tận tâm với sứ mệnh của mình, Duolingo đã trở thành ứng dụng hàng đầu thế giới trong lĩnh vực học ngôn ngữ. Cam kết của họ đối với chất lượng ứng dụng (tạo ra trải nghiệm giáo dục tiên tiến mà không ảnh hưởng đến khả năng tiếp cận) là yếu tố giúp họ gắn bó với Google.
Bắt đầu
Nếu bạn muốn tìm hiểu chi tiết về cách Duolingo tích hợp các thư viện của Jetpack và cách Model-View-ViewModel cải thiện ứng dụng của họ, hãy đọc nghiên cứu điển hình kỹ thuật của chúng tôi dành cho nhà phát triển.