Last month, engineering leads at Duolingo held our first “engineerication.” (I got the idea from Stripe.) Basically, we took a week off from our regular jobs to sit together and code in order to see what our engineers do daily, get back into the tech stack to see what can be improved. 👩💻
Turns out, a lot has changed in the years since I last wrote a line of code 😅Some things have gotten much easier. Codespaces, for example, allows engineers to easily create a coding environment in the cloud instead of on their local machines. And GitHub Copilot auto-suggests chunks of code.
But there were 3 big takeaways I had for how we can improve our engineers’ experiences:
1. On the first day, I set out to do a few small code changes. But as a new engineer, you can’t just sit down and make a change immediately, even a tiny one. You have to set up your environment and figure out where the code needs to go. Then you have to build the code, test it, get it reviewed, and push it live to production. All of this takes time—sometimes, too much time.
I want to make it easy for new software engineers to be productive right away without having to set up their development environment or having to learn a lot of arcane tools, processes, and magical incantations.
2. When I started at Duolingo nine years ago, we had a few GitHub repositories. Now we have dozens of microservices.
This means that even a small code change may require updates to several repositories. If you’re not regularly working in a given repo, this is much harder, especially if it’s one that your team doesn't own.
More standardization is needed to make it easier to code across our various microservices and client repos (we’re starting to do this, but more can be done!)
3. Code review turnaround time slowed us down. We averaged about a 24-hour turnaround, but when making atomic (easily revertable) pull requests, lots of PRs stack up and eventually lead to merge conflicts, etc. In practice, I could see engineers cutting their turnaround time by making PRs that are less atomic, which leads to messier reverts and a harder time diagnosing bugs.
Whenever software engineers are tempted to take shortcuts because the current process is too slow or painful, that’s an opportunity for improvement.
Overall, taking a week to go hands-on with the code is a great way to build better processes and teams. It was an incredibly valuable week that helped us visualize the steps we can take to remove pain points and speed up some unnecessarily slow processes. 🐢
(One more learning: Next time, I’m going to invite one of our software engineers to pair program with me 😅)
Help us develop new products and processes! We're hiring: https://lnkd.in/eSJYjYPG
#engineering #processimprovement #leadershipidea
question 4:❓how do i take over the world