Learning a language can not only be difficult, but it can be expensive, too. This is a vicious cycle for many people: while learning a new language could open up new opportunities to increase their income and improve their lives, they can’t afford it. In 2011, Duolingo set out to change this by offering its users a free way to learn another language, and since then, it has grown to become the world’s most popular way to do so. But the company’s mission doesn't end there—it also wants to build the best education platform in the world and to make it universally available to anyone who needs it.
At first, Duolingo’s developers focused on building its mobile applications and infrastructure, but the company quickly realized it needed to augment its engineering prowess with experts in topics like second language acquisition and language learning pedagogy. Now, with more than 500 million users, Duolingo has gathered unprecedented data insights into how people learn. Its developers use this data to work alongside teams of language learning scientists, machine learning engineers, and AI experts to constantly improve its platform.
“At Duolingo, we use engineering as a force multiplier for expertise,” says Jonathan Burket, a senior engineering manager at Duolingo.
In order to be force multipliers, Duolingo’s 300 developers need to be as efficient as possible in their jobs and not spend time on unrelated tasks or distractions. Duolingo relies on GitHub Enterprise to keep its developers nimble and focused, heavily leveraging GitHub's APIs and tools like Codespaces and GitHub Copilot.
Duolingo has used GitHub for source code management since 2011, when GitHub offered little more than code hosting and collaboration capabilities. At the time, Duolingo relied on different third-party products like Gerrit and PullApprove for code review and other functionality, and this left the company’s three primary repositories with widely varying cultures and pull request processes. This was a source of inefficiency and prevented developers from easily moving from one repository to another. But as GitHub added new functionality, Duolingo adopted it and moved off of third-party tools, increasingly putting GitHub at the core of its development processes. And when Duolingo’s needs differed from the offered functionality, the company turned to GitHub’s APIs to standardize workflows across its repos and projects using a custom GitHub bot implementations. For example, one Slack integration has dropped the median turnaround time for code review from three hours to one.
“GitHub enables us to enforce consistency and a standardized engineering culture that makes internal mobility easier,” explains Burket. Since building out this integration, Duolingo has moved toward a microservice architecture and has grown from three repositories to 400. The integration has made it simple for teams to contribute to each other's projects, and has even allowed non-technical employees to make small code changes without jeopardizing quality. At the same time, Duolingo has built further customizations using the GitHub API to ensure its developers are properly testing their code before deploying, helping to avoid problems and improve site stability.
“GitHub has one of the more powerful APIs that I've worked with,” says Art Chaidarun, a principal software engineer at Duolingo. “It allows us to build whatever we need ourselves so that we can focus on our actual business needs and business logic, rather than building infrastructure that GitHub can handle.”
The team has also accelerated their workflow with their recent adoption of GitHub Copilot, an AI-powered pair programmer that provides autocomplete-style suggestions to developers while they code. The tool offers two ways for developers to receive suggestions: by starting to write the code they want to use or by writing natural language comments that describe what they want the code to do. Duolingo CTO Severin Hacker says that GitHub Copilot is not only quick and easy to adopt for companies already using GitHub, but it also delivers immediate benefits, especially for enterprises with sprawling codebases.
A tool like GitHub Copilot is so impactful at large companies because suddenly engineers can make impactful changes to other developers’ code with little previous exposure.
"GitHub Copilot works with all of our other code development tools, and enabling it across the entire organization is as simple as checking a box,” says Hacker. “A tool like GitHub Copilot is so impactful at large companies because suddenly engineers can make impactful changes to other developers’ code with little previous exposure."
Burket sees this as enabling developers to do their best work, instead of getting caught up on the little details.
”GitHub Copilot stops you from getting distracted when you’re doing deep work that requires a lot of your brain power. You spend less time on routine work and more time on the hard stuff,” says Burket. “With GitHub Copilot, our developers stay in the flow state and keep momentum instead of clawing through code libraries or documentation.”
With GitHub Copilot, our developers stay in the flow state and keep momentum instead of clawing through code libraries or documentation.
Burket explains that GitHub Copilot has increased developer productivity by limiting context switching, reducing the need to manually produce boilerplate code, and in turn helping developers stay focused on solving complex business challenges. “Boilerplate code is where Copilot is very, very effective. You can practically tab complete the basic class or function using Copilot,” says Burket. For developers who are new to working with a specific repository or framework, for example, Burket estimates at least a 25% increase in developer speed, and a 10% increase for those already familiar with that same codebase, who can more quickly and easily create boilerplate code. Part of this increase in developer velocity comes from the fact that GitHub Copilot’s suggestions can be built with the context of your codebase.
“GitHub Copilot is unique in the sense that it looks at the context of the rest of your work and incorporates that context into its recommendations. Other tools don’t have that contextual awareness,” says Hacker. “I don’t know of anything available today that’s remotely close to what we can get with GitHub Copilot.”
Duolingo has also found efficiency and consistency in Codespaces, GitHub’s cloud-based development environment. When some of its developers had issues running Docker locally on their new Apple M1 machines, Codespaces offered a way to skip the local environment troubleshooting and offer a 1-click environment setup. The power and efficiency of Codespaces motivated teams within Duolingo to move entirely to Codespaces.
“With Codespaces, you don't need to waste a day or a week setting up each individual repository. Instead, you can get started within a few minutes,” says Chaidarun. Now, setting up Duolingo’s largest repo takes just one minute, as opposed to hours or even days before Codespaces. “Codespaces is great for maintenance too. When a developer gets into a weird state, they can just rebuild their Codespace to start fresh and get back to work. Otherwise, they might spend hours trying to fix what went wrong with their environment.”
When first presented with Codespaces, Burket says that he had some initial hesitation around giving up control, as might any developer, but that he was quickly won over.
“I wanted to be in full control of my experience. I thought, 'I don't need this tool to SSH into another machine to handle my problems,’” said Burket. “But I'm a believer now. I thought I’d have to compromise on a lot of things by running remotely, but that hasn’t been the case.” Codespaces has enabled teams to configure a standardized, yet customizable environment, making it easy for Duolingo to onboard developers faster into new projects.
Engineering time is the most valuable resource at Duolingo. Making the best use of that time with the help of GitHub Copilot and Codespaces enables us to reach our goals faster.
Whether GitHub Copilot, Codespaces, or custom integrations built with GitHub’s APIs, GitHub allows Duolingo’s developers to spend more time on improving the product experience and developing new apps and learning content, instead of getting distracted dealing with daily minutiae.
“Engineering time is the most valuable resource at Duolingo,” says Chaidarun. “Making the best use of that time with the help of GitHub Copilot and Codespaces enables us to reach our goals faster.”