How We Enable Airbnb Team Members to Code Like a Mobile Engineer

Jaclyn Karnowski
The Airbnb Tech Blog
6 min readMar 31, 2021

Our peer-to-peer learning program that’s accelerating the growth of mobile engineering

Intro

As part of the TechEd team, our team’s goal is to enable our technical talent through continuous learning programs. One of the most common programs we work on is new employee onboarding for Engineering and Data Science teams. However, we also constantly think about the broader needs of the engineering organization and, at times, create more curated programs addressing these needs. One such program, Code Like a Mobile Engineer, addresses the growing mobile use as it has become our top platform. We need to scale out the native engineering knowledge to enable us to deliver an exceptional user experience as well as meet our business needs. This program is unique due to the time investment for participants, their teams, and the engineering mentors.

How It Started

In 2019, 83% of daily active hosts are using their mobile devices to visit Airbnb. As this continues to increase, so does the demand for new features and workload on our mobile engineers. With only around 100 mobile engineers across our product teams, there is more work & impact than we currently have engineers. To accelerate product development on our mobile apps, we designed and launched Code Like a Mobile Engineer. Originally piloted in the summer of 2020, we’ve now expanded to offering this learning opportunity every quarter and have seen a total of 45 engineers go through the program to date.

To best set people up for success to do mobile work effectively, we designed a curriculum that addresses both the platform fundamentals, the Airbnb-specific mobile tech stack and workflow best practices. Engineers participating in the program prepare to contribute to our app in the platform of their choice — either Android or iOS writing Kotlin or Swift.

Who Participates in the Program?

To get engineers enrolled in the program, we ask managers to nominate full-time engineers for business or personal growth and interest reasons. Our cohorts tend to have a good mix of backend and web engineers, with just a few native engineers learning the other platform. The most common production code experience they come to the table with is in Java, Kotlin, Typescript and Ruby.

The other key participants are those who enable this learning opportunity. This program wouldn’t be possible without the technical leadership and guidance of our native engineering community. One third of our Airbnb mobile engineering community has contributed to this program by mentoring participants, writing codelabs, facilitating lightning talks on Airbnb frameworks, completing code reviews, and hosting office hours.

Program Structure

The curriculum is designed in 2 stages — platform fundamentals and Airbnb-specific tech and mobile workflow.

During the platform fundamentals phase, participants spend 5 days focusing on the native development basics, with an emphasis on what is important within the Airbnb environment. Engineers can leverage a variety of self-guided learning offered through our subscriptions, as well as publicly available resources that have been recommended by our engineers. At the end of this phase there is a technical checkpoint with a code review; this serves as a reflection point to receive feedback on code patterns and concepts important within the Airbnb mobile codebase. Once passed, the engineer is ready to dive into the next phase of learning, Airbnb mobile development.

In the remaining 1.5 weeks, engineers learn Airbnb-specific native development frameworks, best practices, and processes. They do this through project-based learning; engineers build an app inspired by our product. Participants build and learn by leveraging some of Airbnb’s open-source projects and internal frameworks. By building something meaningful for our community, this accelerates the learning process because it is relevant to how they’ll contribute to the app in production.

While most code written during the program doesn’t go into production, we do have a demo day for learners to present their app to a panel of engineering managers and staff engineers to showcase what they built. The demo has been a great forum for participants to see what their peers have built as well as for senior native engineers to provide feedback and advice as engineers prepare to contribute to mobile work. This forum provides engineering leaders with a signal to a participant’s readiness to contribute to the app.

Mentorship

This program wouldn’t work without the incredible mentorship that is offered by a group of our native engineers. Mentors, which we refer to as “eng buddies,” are Airbnb full-time mobile engineers that lead a small group of participants by making themself available for pair programming, informal debugging sessions, Slack conversations, and code reviews. Without a doubt, the words of gratitude for mentors are the highlight of our final celebration and the most common theme in our feedback survey.

The Impact

Since the first cohort in July 2020, we have had 45 participants complete the program, and, collectively, they have merged more than 180 PRs to our mobile codebase. Plus, one engineer has converted to a full-time iOS role.

The majority of individuals that sign up for this program have no prior exposure to native development, and very few come to us from native engineering roles to learn the other platform (e.g. an iOS engineer learning Android). On the first day, we ask participants to submit a pre-program survey to better understand their engineering background. One of the questions is a confidence indicator, on a scale of 1 (not confident) to 10 (confident). Not surprisingly, only 15% reported being confident in shipping safe, reliable code to our mobile codebase.

After just 14 days of full-time learning with Code Like a Mobile Engineer, 90% are confident in shipping code to the mobile codebase. That is a significant transformation!

This chart shows the results of asking engineers, “How confident are you in shipping code to the mobile codebase?” Engineers could respond on a scale of 1 to 10, 1 is not confident and 10 is very confident. The bar on the left is the summary of responses (45 participants) from Day 1 of the program and on the right, that bar is the summary on the last day of the program.

To date, we’ve gotten great feedback from participants and engineering leaders on the program’s impact. Here are a few reflections:

“Through this program, I got the chance to learn about general Android development as well as Airbnb specific frameworks. In 2.5 weeks I went from not knowing anything about Android development to building an app in Android Studio using the Airbnb tech stack. It was very rewarding in the end.”

— Yanbo, Software Engineer

“As of today, all past participants of the program on our team are allocated to native engineering work. Can’t imagine how we can make it without this program.”

— Charlie Jiang, Director of Engineering

We look forward to growing the impact of Code Like a Mobile Engineer, not only by continuing to offer new cohorts of the program each quarter, but also by teaming up with Airbnb’s Connect program to start offering mobile training to apprentice engineers. This year, we’ll also be experimenting with running this program as a self-service, on-demand learning opportunity.

Join Us!

Visit our careers page to see available mobile engineering roles, or join as a software engineer and enroll in Code Like a Mobile Engineer to jumpstart your mobile engineering skills. To learn more about Airbnb’s mobile work, check out our recent Tech Talk on Accelerating Mobile UI and visit our open-source mobile projects.

Acknowledgements

The success of this program is only possible because of the collaboration of 30+ Android and iOS engineers that support the participants, the curriculum, and my endless questions, plus the engineering leaders that breath energy into accelerating product development by investing in the talent of our engineers.

--

--

Jaclyn Karnowski
The Airbnb Tech Blog

web developer | educator | founder @EdTalks | TFA PHX '07