Duolingo es la app de aprendizaje de idiomas más popular del mundo porque logró que algo que las personas consideraron abrumador en el pasado fuera fácil y divertido. Esta experiencia de lenguaje tranquila requiere un flujo constante de funciones y experimentos nuevos, y una app de ejecución fluida que pueda ofrecerlos a todos. Para Duolingo, una app que no responde en un dispositivo de cualquier parte del mundo podría ser un estudiante potencialmente desanimado. Esto los compromete a alcanzar la excelencia en la app, especialmente en los dispositivos Android que usa el sesenta por ciento de sus alumnos, incluido el director general, que realiza un seguimiento de la app desde un teléfono básico. Por lo tanto, cuando el equipo de desarrollo de Android de Duolingo notó un aumento en los errores del tipo "La app no responde", la disminución de fotogramas y hasta que recibió reclamos escritos a mano, se tomaron medidas de inmediato.
Pronto descubrieron la fuente de los problemas de rendimiento de la app: la arquitectura de software existente no escalaba bien con el crecimiento de su equipo. Las actualizaciones necesarias causaban regresiones dolorosas en el rendimiento de la app. Sus desarrolladores dedicaban más tiempo a corregir errores y menos a implementar nuevas funciones que generaran ingresos. Su arquitectura de software desactualizada estaba empezando a convertirse en una carga inaceptable: para ellos, la velocidad de su equipo y, sobre todo, para la experiencia de sus usuarios. Necesitaban volver a compilar su base de código desde cero.
Cómo lo lograron
Al principio, el equipo quedó destrozado. ¿Debería ser esta su única prioridad ahora? Un grupo sintió que era más importante continuar lanzando nuevas funciones y generando ingresos, mientras que el otro creía que centrar toda su atención en el reinicio de Android era el camino a seguir. Finalmente, llegaron a la consenso de que el creciente esfuerzo de combatir las regresiones arriesgaba a descarrilar por completo su mapa de ruta. Tuvieron que ir a toda marcha.
El equipo se decidió por una solución cada vez más popular. Decidieron reescribir su app con Model-View-ViewModel, un patrón de software compatible con Google que permite a los desarrolladores optimizar la arquitectura de una app creando una separación clara de las inquietudes. Con MVVM, podrían separar el desarrollo de la interfaz gráfica de usuario (la vista) del desarrollo de la lógica empresarial (el modelo). Podrían establecer patrones claros y acordados, lo que facilitaría tanto la alineación de su enfoque con las funciones nuevas como la integración de los desarrolladores entrantes.
Dividir cada función en su propia parte modular permitió al equipo recuperar rápidamente la productividad, ya que podían asignar grupos pequeños para trabajar en cada función en paralelo, lo que aumentó la velocidad y redujo los errores.
Implementaron esta nueva arquitectura con bibliotecas de Jetpack de Android, incluidas Dagger y Hilt, para ayudarlos a escribir código que funcione de manera coherente en los dispositivos y las versiones de Android. Estas dos incorporaciones les permitieron crear mejores funciones encapsuladas y usar los módulos integrados de Android de manera más eficiente.
Resultados
Este rendimiento mejoró significativamente la experiencia de los estudiantes en Android y, en particular, en dispositivos básicos. También dieron lugar a una app más responsiva con animaciones más fluidas en dispositivos insignia. La tasa diaria de “La app no responde” o de ANR disminuyó un 41%. El porcentaje de veces que la app disminuyó por debajo de su velocidad de fotogramas objetivo disminuyó un 28%. Lo más importante es que sus usuarios experimentaron un aumento del 40% en la velocidad cuando se desplazaban por las pantallas clave.
Las manos sostienen notas y leen un 41% menos de ANR, una velocidad de fotogramas un 28% mejorada y una experiencia un 40% más rápida.
El reinicio tomó ocho semanas y permitió que la app fuera mucho más atractiva y encantadora para todos los estudiantes de Duolingo. En los seis meses posteriores, el equipo no registró nuevas regresiones de rendimiento significativas, lo que le permitió enfocarse nuevamente en las funciones que generan ingresos por el envío. La decisión de centrar los esfuerzos del equipo en la calidad había dado sus frutos.
La dedicación de Duolingo a su misión los convirtió en la app de aprendizaje de idiomas más importante del mundo. Su compromiso con la excelencia en apps (crear experiencias educativas de vanguardia sin comprometer la accesibilidad) es lo que los mantuvo a la altura.
Comenzar
Si quieres conocer los detalles de cómo Duolingo integró las bibliotecas de Jetpack y cómo Model-View-ViewModel mejoró su app, lee nuestro caso de éxito técnico para desarrolladores.