May 10, 2022
Meet the Developers: Mobile Edition (Derick Zhang)
By Dmitry Vinnik, Derick Zhang and Jesslyn Tannady
Originally posted here.
For today's interview, we have Derick Zhang, a software engineer at Meta, working on the Remote Presence Co-Experience Team. His team works on collaborative experiences for Messenger and Instagram to foster spaces for users to feel more connected. He works on several different projects spanning the Facebook, Messenger and Instagram apps for the Android platform.
He is a self-described social media influencer who enjoys eating different delicious food, shopping around nice malls and going sightseeing in new places in his free time. You can follow his adventures through his Instagram here.
As a mobile developer at Meta, what does your typical day look like?
My primary role is to develop new features and test them to ensure that they meet a very high-quality standard.
Because of our scale, I have to context-switch a lot for my job, which can sometimes be overwhelming. That's why I start my week off by planning out what I'd like to accomplish during the week because I interact with many moving pieces every day. Fortunately, we have many internal tools that help to keep me on track and organize my work.
One such tool is a task tool that's essentially my to-do list broken down into action items. This task tool has a built-in tagging system so that I can assign tasks to different products (e.g., "IG" or "Android Messenger"), and categorize action items into different types like "bug" or "feature request." This tagging system helps me prioritize my work and stay focused.
Over the years, this task tool has gotten even more advanced, making it ideal for cross-collaboration. I can add labels to share my progress so that my colleagues can see what I'm actively working on. I can also tag stakeholders to get an up-to-date view of project milestones.
Apart from my day-to-day engineering work, I host office hours for new hires interested in Android development through the Bootcamp program.
Can you tell us more about what onboarding looks like for new Meta engineers?
Every time a new engineer joins Meta, they go through this intensive onboarding program called "Bootcamp." Bootcamp helps new engineers get up to speed with the Meta codebase and Meta-internal tools. It also teaches them about engineering habits that help us scale. As an Android developer, I host Android-specific office hours for new engineers who are interested in learning about Android development.
A cool thing about these office hours is that I sometimes get engineers who are interested in mobile development, but do not have much mobile experience under their belt. They might be curious about what mobile development looks like and may be interested in joining a team that works on one of Meta's mobile applications. These office hours are a good place for these engineers to ask questions and figure out if mobile development is right for them.
Can you share what you're currently working on?
I'm currently working on Instagram Live features, like enhancing the client infrastructure to improve the quality and stability. I am also adding new features that make it easier for Instagram Live broadcasters to express themselves.
I am proud to say that my current work involves Meta Open Source. I use Yoga in my Litho components when designing user interfaces for my features. Yoga is a tool that helps me build flexible layouts, and Litho is a UI framework for Android. I like Litho because it lets me create UI in terms of components instead of interacting directly with traditional Android Views.
You can see examples of Litho all over the apps that I work on. The UI that lets you choose filters for your Instagram Story was built using Litho. We also made many messaging features in the Facebook app with Litho. Thanks to Litho, our users can use stickers in apps like Messenger. And the cool thing is that both Yoga and Litho are open-sourced and free for anyone to use. You can learn more about these projects by going to the Meta Open Source website.
Are there any big misconceptions about working as a mobile developer?
Sometimes I hear this narrative that we're past the heyday of mobile phone technology and that all future changes will only be minor improvements.
Contrary to this opinion, I believe that mobile is still a dynamic and thriving space---you only have to look at all the investment poured into the updates that constantly come out on Android and iOS.
I imagine a future where mobile plays a crucial role in emerging technologies. I would like to see more explorations between augmented reality tech and the mobile space, such as rethinking map apps and navigation via a mobile phone. Pokemon Go is an excellent example of the unique experiences we can unlock at the intersection of AR and mobile camera technology. Another good example is how Google Pixel's Magic Eraser uses AI to quickly remove unwanted elements from images.
These innovations show how many novel experiences we can add when integrating mobile technology with other up-and-coming technologies.
It sounds like you are at the right place since Meta is a prime place to explore the intersection of augmented reality and mobile development. What do you like most about working here?
Being a mobile developer at Meta has been a fantastic opportunity. Unique problems come up every day, so I'm always learning and growing as an engineer. With so many public-facing products, I can put myself in the shoes of the people who use my app and help build a better user experience. In many companies, this practice of using your product is often called "dogfooding," and here at Meta, we take it to the next level. With our products, I get to try the apps while working on them and on my personal time because I genuinely enjoy using them.
While prioritizing user experience, I always need to consider the size of our audience. Fairly soon after joining the company, it hits you that the scale at which we operate at Meta is quite unfathomable. It's fascinating to see how the efforts of a handful of people affect so many communities worldwide. Thinking about how the things I work on at Meta impact folks and their everyday experiences humbles me. Even the slightest change I make can help people communicate globally and bring them closer together.
If someone wanted to follow in your footsteps, what resources would you recommend?
As an Android developer, I'm a huge fan of Android for Developers. This website has API references, documentation and many ways to get started. When working with Android, I mainly use Android Studio as my Integrated Development Environment or IDE. I prefer Android Studio because JetBrains designed it in collaboration with Google to accelerate Android mobile app development. It's incredible how much my workflow has improved after using this IDE.
When it comes to building Android apps, Kotlin has also become one of my favorite programming languages. I find it more concise because it reduces the boilerplate code that I had to write with other languages. I also genuinely enjoy not worrying about my app crashing due to NullPointerExceptions since Kotlin gives me a great type system that catches these exceptions early. Kotlin is also open source, so anyone can contribute to it and add new features to accelerate development for Android developers worldwide.
Do you have any final thoughts or words of wisdom for the people who aspire to do what you do?
Mobile technology is and has been evolving rapidly. Looking back just ten years ago, I was using a Motorola Razr and didn't think much of the concept of a smartphone. Here we are today, and technology has made our lives more convenient and instantaneous. This technology is such a big part of our everyday lives today. I hope to continue to build things that spark joy in people's daily lives.