Jun 13, 2022
Meet the Developers: Mobile Edition (Vadims Savjolovs)
By Dmitry Vinnik, Vadims Savjolovs and Jesslyn Tannady
Originally posted here.
For today's interview, we have Vadims Savjolovs, a software engineer on the WhatsApp Commerce Team at Meta. His team works on building a business API that helps companies connect with their consumers.
What was your journey into mobile development?
My journey as a mobile developer began a long time ago. After finishing my degree, I started my career as a Java developer. A year later, Apple announced the opening of the App Store for third-party developers. This news immediately piqued my interest, but I quickly gave up on the idea of becoming an iOS developer after I failed to install macOS on my Asus laptop. After a while, I discovered that I could create apps for Android in Java and joined a small startup as an Android developer. Since then, I have worked mainly in the mobile space.
Gladly, I found working at Meta to be one of the best ways to continue improving and growing as a developer. When I first joined, I went through a 6-week intensive engineering Bootcamp. During the Bootcamp, I had a chance to learn about the company and expand my technical knowledge beyond the mobile space. I got to work with a wide variety of technologies developed in Meta, including several open-sourced frameworks such as GraphQL, React Native and Flipper. Since then, I've been using projects like Flipper daily. If you'd like to learn more about these technologies, here are some videos that explain GraphQL and Flipper in beginner-friendly terms.
As a mobile developer at Meta, what does your typical day look like?
One of my favorite things at Meta is that there is no typical day, and every day is a mix of activities. Sometimes, I primarily focus on new feature development. Other days, I might spend my time interviewing candidates, mentoring engineers, writing docs, reviewing code and organizing technical talks.
While we believe that development work is essential, growing our team and making it a welcoming environment is our priority. As a result, here at Meta, we take interviewing very seriously. We're responsible for making sure that we hire the right people, and we're also committed to making sure that candidates have a good experience. Many of Meta's apps, like WhatsApp, are used globally by many people. Hiring great engineers that represent our users helps strengthen the quality of our apps.
And once we hire these great engineers, we need to make sure that we get them up to speed with the codebase and engineering practices at Meta. We have a ton of internal wiki-style resources so that anyone can build on the knowledge accumulated by thousands of Meta engineers over the many years Meta has been around. I get a lot of questions about best code practices, so I contributed to a resource for this to easily share this knowledge.
Within the WhatsApp organization, we also organize a tech talk series. It's an opportunity for all people working on WhatsApp to share the work they are proud of and share the insights they've learned. It helps the hundreds of people working on the product feel closer to each other's work.
Can you share what you're currently working on?
My main focus is launching a feature that allows users to rate messages sent by businesses in WhatsApp. This feature is one of the steps towards improving interactions between customers and business owners on WhatsApp. It's exciting to work on bringing people closer together and creating this feedback loop to help companies improve.
Additionally, I also have my hands on several other engineering projects. I'm helping an internal infrastructure team migrate to a new dependency injection library. With the scale of Meta, any significant migrations like this become a challenging problem, but that makes it a fantastic learning opportunity.
My team is also very involved in the Kotlin adoption and modularisation of the WhatsApp Android business app. In the past several years, I've come to appreciate how concise and readable Kotlin is. Being at the frontlines of using Kotlin across the board at Meta has been amazing, and I am glad to see how smooth this transition has been going.
Could you give us a behind the scenes look at what's new on the WhatsApp team?
As I mentioned, I'm excited about the rate of Kotlin adoption on the WhatsApp team. Adopting a new programming language is never easy. It's especially challenging when you consider WhatsApp's scale and the codebase's size.
For context, WhatsApp joined the Meta family through an acquisition in 2014 and has always had a culture of keeping our code light. This culture means that we try to avoid large third-party frameworks and libraries. This approach has allowed us to optimize every app metric like APK size, performance, battery usage and more to ensure that even users with low-end devices have a good experience using WhatsApp.
Mobile engineers at WhatsApp put a lot of effort into evaluating how adding Kotlin support would affect our users to improve these crucial performance metrics. Above all other benefits, one of the best advantages of Kotlin has been increased developer velocity and code quality.
All the Android engineers in WhatsApp I spoke to are looking forward to developing new features in Kotlin as it provides many benefits and improvements to the development process. I like Kotlin because it has null safety, extension functions, sealed classes that might help handle state changes and excellent collections support. I have recently written a blog post about how Kotlin collection functions might help you solve coding problems.
As someone who has been a mobile developer for many years, what kind of trends are you noticing in the mobile space?
I like to see how the mobile space grows, evolves and gets more advanced every year. Developers get better tooling, programming languages, frameworks and guidelines. It's a dynamic space, and there's so much going on---Kotlin, coroutines, Hilt, Room, WorkManager, and many other projects. Sometimes I even struggle to find the time to read through all the updates and release notes.
It's incredible how many great tutorials, courses, blogs and codelabs are available today to help people learn. It's very different from what was available eight years ago when I started my mobile development journey. This culture of sharing knowledge opens up a lot more opportunities for all.
Today, my favorite resource is the official Android documentation, where people can go through the tutorials and guides at developer.android.com. There are also a few good free courses on Udacity by Google. And if you're still looking for more, there are codelabs to deep dive on specific topics and the Android Developers Blog to keep up to date with the news.
There are also many beginner-friendly resources for Android developer tools that Meta has open-sourced. Off the top of my head, we have Fresco, an Android library for managing images, and Litho, a declarative framework for building efficient UIs on Android. The Meta Open Source team even has videos that explain Fresco and Litho in beginner-friendly terms.