Duolingo est l'application d'apprentissage des langues la plus populaire au monde, car elle a réussi à rendre facile et amusant quelque chose qui, par le passé, était considéré comme intimidant. Cette expérience linguistique décontractée nécessite un flux constant de nouvelles fonctionnalités et de nouveaux tests, ainsi qu'une application fluide capable de les proposer. Pour Duolingo, une application qui ne répond pas sur un appareil n'importe où dans le monde peut signifier un apprenant potentiellement découragé. Cela les engage à atteindre l'excellence de l'application, en particulier sur les appareils Android utilisés par 60 % de leurs élèves, y compris leur PDG, qui suit l'application depuis un téléphone d'entrée de gamme. C'est pourquoi, lorsque l'équipe de développement Android de Duolingo a constaté une augmentation des erreurs "L'application ne répond pas", des pertes d'images et même reçu des réclamations manuscrites, elle a immédiatement pris des mesures.
Ils ont rapidement découvert la source des problèmes de performances de l'application : l'architecture logicielle existante ne s'adaptait pas bien à la croissance de leur équipe. Les mises à jour nécessaires entraînaient de douloureuses régressions de performances sur l'application. Leurs développeurs consacraient plus de temps à corriger les bugs qu'à déployer de nouvelles fonctionnalités générant des revenus. Leur architecture logicielle obsolète commençait à devenir un frein inacceptable pour eux, pour la vélocité de leur équipe et, surtout, pour l'expérience de leurs utilisateurs. Ils ont dû reconstruire leur code de base à partir de zéro.
Comment ont-ils fait ?
Au début, l'équipe était divisée. Doit-il s'agir de leur seule priorité pour le moment ? Un groupe estimait qu'il était plus important de continuer à lancer de nouvelles fonctionnalités et à générer des revenus, tandis que l'autre pensait qu'il fallait se concentrer sur une refonte d'Android. Ils ont finalement convenu que l'effort croissant de lutte contre les régressions risquait de faire dérailler complètement leur feuille de route. Ils ont dû tout miser.
L'équipe a opté pour une solution de plus en plus populaire. Ils ont décidé de réécrire leur application à l'aide de Model-View-ViewModel, un modèle logiciel compatible avec Google qui permet aux développeurs de simplifier l'architecture d'une application en séparant clairement les préoccupations. Avec MVVM, ils peuvent séparer le développement de l'interface utilisateur graphique (la vue) de celui de la logique métier (le modèle). Ils peuvent établir des modèles clairs et convenus, ce qui facilite l'alignement de leur approche sur les nouvelles fonctionnalités et l'intégration des nouveaux développeurs.
En divisant chaque fonctionnalité en un module distinct, l'équipe a pu rapidement retrouver sa productivité. Elle a pu en effet affecter de petits groupes à chaque fonctionnalité en parallèle, ce qui a permis d'augmenter la vélocité tout en réduisant les erreurs.
Ils ont implémenté cette nouvelle architecture avec des bibliothèques Jetpack d'Android, y compris Dagger et Hilt, pour les aider à écrire du code qui fonctionne de manière cohérente sur toutes les versions d'Android et sur tous les appareils. Ces deux ajouts leur ont permis de créer des fonctionnalités mieux encapsulées et d'utiliser plus efficacement les modules intégrés d'Android.
Résultats
Ces gains de performances ont considérablement amélioré l'expérience des apprenants sur Android, en particulier sur les appareils d'entrée de gamme. Elles ont également permis d'obtenir une application plus réactive avec des animations plus fluides sur les appareils phares. Le taux quotidien d'erreurs "L'application ne répond pas" (ANR) a diminué de 41 %. Le pourcentage de temps pendant lequel l'application est restée en dessous de sa fréquence d'images cible a diminué de 28 %. Plus important encore, leurs utilisateurs ont constaté une augmentation de 40 % de la vitesse de défilement sur les écrans clés.
Mains tenant des notes indiquant 41 % d'ANR en moins, 28 % de fréquence d'images améliorée et 40 % d'expérience plus rapide.
La refonte complète a duré huit semaines et a rendu l'application beaucoup plus attrayante et agréable pour tous les apprenants Duolingo. Au cours des six mois qui ont suivi, l'équipe n'a enregistré aucune nouvelle régression significative des performances, ce qui lui a permis de se concentrer à nouveau sur la publication de fonctionnalités générant des revenus. La décision de concentrer les efforts de l'équipe sur la qualité avait porté ses fruits.
Grâce à son engagement envers sa mission, Duolingo est devenue la première application mondiale dans le domaine de l'apprentissage des langues. C'est leur engagement envers l'excellence des applications (créer des expériences éducatives de pointe sans compromettre l'accessibilité) qui les a maintenus à ce niveau.
Premiers pas
Si vous souhaitez en savoir plus sur la façon dont Duolingo a intégré les bibliothèques Jetpack et sur la façon dont l'architecture Modèle-vue-Vue modèle (MVVM) a amélioré son application, consultez notre étude de cas technique pour les développeurs.