Software Engineer II
Role summary
Duolingo is seeking a Software Engineer II to join their Notifications team. This role involves building and maintaining backend services and infrastructure to enhance how learners receive notifications across push, email, and SMS. Key responsibilities include integrating machine learning models for personalization, developing an omnichannel messaging system, and maximizing notification reach. The ideal candidate will have a strong foundation in computer science fundamentals, programming experience in Java, Python, or Kotlin, and database knowledge. Experience with high-traffic APIs, public cloud providers, and various notification channels is preferred. This is a hybrid role with a salary range of $153,000 - $207,000 USD.
Our mission at Duolingo is to develop the best education in the world and make it universally available. It’s a big mission, and that’s where you come in!
At Duolingo, you’ll join a team that cares about finding innovative solutions to complex technical problems, running countless experiments (300+ at a time!) with our massive user base to make data-driven decisions, and educating our users and employees alike. You’ll have limitless learning opportunities, mentorship and collaboration with world-class minds, and a variety of projects with large scopes — while doing work that’s both fun and meaningful.
Join our life-changing mission to develop education for our half a billion (and growing!) learners around the world.
About the role...
As an engineer on the Notifications team, you will build features that empower learners to build long-term habits by improving how we schedule, personalize, and deliver notifications across push, email, and SMS. You will work on integrating multi-armed bandit machine learning models for personalization, creating a unified “omnichannel” messaging system, and maximizing the reach of our notifications. Notifications are fundamental to Duolingo, and we’re looking for engineers who are passionate about experimenting and shipping features end-to-end.
🧠 You will...
✅ You have...
⭐ Exceptional candidates will have...
We post a multi-level salary range for all of our roles.
This is not inclusive of the rest of our awesome portfolio that includes equity compensation and world-class benefits. Our salary ranges are the same for all US locations. Your recruiter can share more details about the range for a specific level during the hiring process. The actual salary within the range is determined by many factors including but not limited to, skills, experience, education, and internal equity.
Take a peek at how we care for our employees' holistic well-being with our benefits here.
We will do everything we can within reason to make sure that your interview takes place in an environment that fairly and accurately assesses your skills. If you need assistance or accommodation, please contact accommodations@duolingo.com.
Duolingo is proud to be an Equal Employment Opportunity employer. We do not discriminate based upon race, religion, color, national origin, gender (including pregnancy, childbirth, or related medical conditions), sexual orientation, gender identity, gender expression, age, status as a protected veteran, status as an individual with a disability, or other applicable legally protected characteristics.
By applying for this position your data will be processed as per the Duolingo Applicant Privacy Notice.
Sign up for job alerts here.
Sample Duolingo interview questions
- 1
Construct a platform for real-time analysis of mobile app performance metrics.
system designmedium - 2
Design a system for managing a distributed data lake.
system designmedium - 3
Merge a New Interval Merge a new interval into a list of non-overlapping intervals. Input: intervals = [[1,2],[3,5],[6,7],[8,10],[12,16]], newInterval = [4,8] Output: [[1,2],[3,10],[12,16]] Explanation: The new interval overlaps with [3,5], [6,7], and [8,10], merging them all into the unified block [3,10].
codingmedium - 4
Count Anagrammatic Substrings Count the number of anagrammatic substrings from one string present in another. Input: s = "abab", p = "ab" Output: [0, 1, 2] Explanation: The substrings "ab", "ba", and "ab" starting at indices 0, 1, and 2 respectively are all anagrams of the string "ab".
codingmedium - 5
Find the minimum path sum from top-left to bottom-right in a grid.
codingmedium
Sign up for a personalized interview prep pack tailored to this role.
Similar roles
- Software Engineer IIGarner Health · United States · Remote
Staff Software Engineer IIThomson Reuters · Eagan, Minnesota, United States · Hybrid
Software Engineer IIScientific Research Corporation · Orlando, Florida, United States · Onsite
Software Engineer IITruist · North Carolina, United States · Onsite
Software Engineer IISundayy · United States · Hybrid