Memfaktorkan ulang Duolingo di Android dengan library Jetpack dan MVVM

Duolingo adalah aplikasi belajar bahasa paling populer di dunia karena dapat membuat sesuatu yang sulit dan menyenangkan bagi banyak orang di masa lalu. Pengalaman bahasa yang singkat ini memerlukan aliran terus fitur dan eksperimen baru — serta aplikasi yang berjalan lancar yang dapat menghadirkan semuanya. Bagi Duolingo, aplikasi yang tidak responsif pada perangkat di mana pun di dunia dapat berarti peserta didik yang tidak responsif. Hal ini membuat mereka berkomitmen pada keunggulan aplikasi, khususnya pada perangkat Android yang digunakan oleh 60 persen pelajar, termasuk CEO mereka, yang memantau aplikasi dari ponsel entry-level. Sehingga, ketika tim pengembangan Android Duolingo melihat adanya peningkatan error “Aplikasi tidak Merespons”, penurunan frame — dan bahkan menerima keluhan yang ditulis tangan — mereka langsung mengambil tindakan.

Mereka segera menemukan sumber masalah performa aplikasi: arsitektur software yang ada tidak dapat diskalakan dengan baik seiring dengan pertumbuhan tim mereka. Update yang diperlukan menyebabkan regresi performa yang menyakitkan pada aplikasi. Developer mereka mencurahkan lebih banyak waktu untuk memperbaiki bug, dan lebih sedikit untuk mengirimkan fitur baru yang menghasilkan pendapatan. Arsitektur software mereka yang sudah usang mulai menjadi hambatan yang tidak dapat diterima — terhadap mereka, kecepatan tim mereka, dan, yang terutama, pada pengalaman pengguna mereka. Mereka perlu membangun kembali codebase mereka dari awal.

Bagaimana mereka melakukannya

Pada awalnya, tim terbelah. Haruskah ini menjadi satu-satunya prioritas mereka sekarang? Satu kelompok merasa bahwa makin penting untuk terus mengirimkan fitur baru dan meningkatkan pendapatan, sementara kelompok lainnya percaya bahwa memfokuskan seluruh perhatian pada reboot Android adalah jalan ke depan. Pada akhirnya, mereka mencapai konsensus bahwa upaya yang semakin besar dalam melawan regresi berisiko menggagalkan rencana mereka sepenuhnya. Mereka harus melakukan semuanya.

Tim memilih solusi yang semakin populer. Mereka memutuskan untuk menulis ulang aplikasi mereka menggunakan Model-View-ViewModel, sebuah pola software yang didukung oleh Google yang memungkinkan developer menyederhanakan arsitektur aplikasi dengan memisahkan fokus yang jelas. Dengan MVVM, mereka dapat memisahkan pengembangan antarmuka pengguna grafis (tampilan) dari pengembangan logika bisnis (model). Mereka dapat menetapkan pola yang jelas dan disetujui, sehingga lebih mudah untuk menyelaraskan pendekatan mereka dengan fitur baru dan mengorientasikan developer yang baru.

Memecah setiap fitur menjadi bagian modular sendiri memungkinkan tim untuk segera mendapatkan kembali produktivitas, karena mereka dapat menugaskan kelompok kecil untuk mengerjakan setiap fitur secara paralel, sehingga meningkatkan kecepatan sekaligus mengurangi kesalahan.

Mereka menerapkan arsitektur baru ini dengan library dari Jetpack Android, termasuk Dagger dan Hilt, untuk membantu mereka menulis kode yang berfungsi secara konsisten di seluruh versi dan perangkat Android. Kedua tambahan ini memungkinkan LLM membuat fitur yang dienkapsulasi dengan lebih baik dan memanfaatkan modul bawaan Android dengan lebih efisien.

Hasil

Performa ini meningkatkan pengalaman siswa secara signifikan di Android dan khususnya di perangkat level pemula. Mereka juga menghasilkan aplikasi yang lebih responsif dengan animasi yang lebih halus di perangkat unggulan. Rasio "Aplikasi Tidak Merespons" atau ANR harian turun 41%. Persentase waktu aplikasi turun di bawah kecepatan frame targetnya turun sebesar 28%. Yang terpenting, pengguna mereka mengalami peningkatan kecepatan sebesar 40% saat men-scroll layar utama.

Hand memegang catatan yang membaca ANR 41% lebih sedikit, kecepatan frame 28% lebih baik, dan pengalaman 40% lebih cepat.


Proses mulai ulang ini memerlukan waktu delapan minggu dan membuat aplikasi ini menjadi jauh lebih menarik dan menyenangkan bagi semua pelajar Duolingo. Dalam enam bulan sejak saat itu, tim ini tidak mencatat adanya regresi performa baru yang signifikan, sehingga mereka dapat fokus lagi pada fitur pengiriman pendapatan. Keputusan untuk memfokuskan upaya tim pada kualitas telah membuahkan hasil.

Dedikasi Duolingo terhadap misinya menjadikan Duolingo sebagai aplikasi teratas di dunia dalam bidang pembelajaran bahasa. Komitmen mereka terhadap keunggulan aplikasi — menciptakan pengalaman pendidikan yang canggih tanpa mengorbankan aksesibilitas — itulah yang membuat mereka bertahan.

Mulai

Jika Anda ingin mempelajari seluk-beluk cara Duolingo mengintegrasikan library Jetpack, dan cara Model-View-ViewModel meningkatkan aplikasinya, baca studi kasus teknis kami untuk developer.