Duolingo is one of the most popular language learning platforms in the world, and one of the most-downloaded free education apps on Google Play, with more than 200 million downloads.
The majority of people learn a new language to gain access to better opportunities, and it's Duolingo's mission to provide free and accessible language education to its 300+ million learners.
What they did
After seeing that their codebase's line count was growing 46% every year, a unanimous decision was made by Duolingo’s Android developers to migrate from Java to Kotlin.
In true Duolingo style, the team gamified the migration process by running a contest with a daily leaderboard and encouraging learning. The team's experienced Kotlin developers became "Kotlin checkers" and shared best practices in code reviews, until all the Android developers became Kotlin experts themselves.
After two years the migration was complete, dramatically improving code maintainability. They found that converting a Java file to Kotlin reduced its line count by an average of 30%, and in certain cases by as much as 90%.
"Overall we're very happy that we migrated to Kotlin when we did, and we're excited to see its usage continue to grow both within our company and throughout the software industry!" - Art Chaidarun, Sr. Staff Software Engineer
Despite having new product features and more than double the number of active contributors, their codebase is nearly the same size as it was before the migration two years ago, proving that the decision was a good investment. What's more, internal surveys show their developer satisfaction has skyrocketed by 129 NPS points, and Kotlin is a major factor cited in responses.
Duolingo is always expanding and evolving, just like languages. Rigorous A/B testing and in-app feedback ensure the team will continue to refine methodology and offer the best language education in the world. Now with their Android app having a 100% Kotlin codebase, they can do so with even more confidence and efficacy.
Learn more about developing an Android app with Kotlin.