Discover more from Effective Android
Effective Interviews ⚡️ Manuel Vivo
Android Developer Relations Engineer @Google
Welcome back to the Effective Interviews ⚡️ a series of written interviews with well-known engineers from the Android worldwide community.
Today, I’m talking to Manuel Vivo, member of the Android Developer Relations team at Google, and well-known for his talks around the world and his content about app architecture, Jetpack Compose, Kotlin, and coroutines, among other topics.
🟣 Welcome to the Effective Interviews Manu! 👋 so happy to have you here
Hey Jorge! The pleasure is totally mine 😀 thank you for making me part of this series. And thank you to everyone that landed here. Hi there 👋 I'm Manuel Vivo, an Android Developer Relations engineer at Google. I've been at Google for 4 years and I've been working on Architecture, Dependency Injection, Kotlin and coroutines, and Jetpack Compose among other things. Hope you enjoy this episode!
🟣 What inspired you to become an Android dev, and how did you get started?
Unlike many other people you have interviewed, I must admit that I wasn't much of a tech person before I started studying Computer Science. In fact, I didn't know what programming was before that! I was debating between Maths and CS but chose CS in the end because of the job opportunities. It was the career I disliked least, lol.
In the summer break of 2012, a friend of mine suggested going to an Android course organised by the University of Alicante. We spent a week learning Android, and I had a lot of fun! I already knew Java, so it was easy for me to transition. Then I did an internship as an Android developer for 2 months at a local company and used that knowledge to work on my dissertation. The dissertation was an Android app for indoor navigation that integrated haptic feedback for people with impaired vision.
Shortly after I finished the degree, I got a job as an Android developer at Capital One and moved to the UK from Spain.
🟣 We both studied at the same University, what a small world!
Regarding this, people like to discuss whether having a degree is not needed for your later professional work as a software engineer. What’s your take on this?
Yes, I agree! And I must say that the University of Murcia has one of the best Computer Science degrees in Spain!
People learn in different ways. I don't think there's a right answer here. However, I can say that the university did help me. It didn't help me in the traditional way of providing all the knowledge I needed to be successful in the real world. Instead, it helped me develop soft skills, gain a broad overview of computer science, and learn how to be independent when things get tough. As I mentioned before, I wasn't a tech person and didn't tinker with computers much before university, so everything I learned was new and useful to me.
🟣 Before Google, you worked at Capital One for several years. How was your time there?
I had a fantastic time there! When I joined Capital One UK in 2014, we were tasked with building the app from scratch, as the existing app was outsourced. In the beginning, we were a team of 2 Android engineers, and jeez! It was 5 years of Android development experience compressed into one: Architecture, Dependency Injection, UI, ... everything! We had to do everything. But the best part was that we had complete freedom to make our own decisions. We could choose the technologies we wanted to use, and we could work in the way that we thought was best. It was a great experience, and we definitely had a blast.
And yes! Jake, if you're reading this... We did also implement Otto 🙃 Luckily, we removed it a few years later with RxJava 😆
After 4 years at Capital One UK, I was ready for a change. Thanks to Sam Edwards and other people, I was able to transfer to Capital One US. The offices were in Northern Virginia, near Washington D.C. I stayed there for three more years before joining Google and returning to Spain.
🟣 When and why did you decide to try interviewing at Google? Was working as a DevRel something you were looking for?
I wasn't looking for a change at the time, but I accidentally saw a message from Jose Alcérreca in the Spanish Android Developers Slack channel about the DevRel position. And I was like... "Wait a moment... this job is what I actually do in my spare time, this must be fun". But I didn't do anything about it! Two weeks later, I was taking a shower and talking to my wife about the position. She encouraged me to go for it, so I reached out to Jose, talked with him, and started preparing for the interview.
It was (and is) a natural fit for me. I love contributing to the Android community in this way: giving feedback to other teams to improve our products, being in touch with all of you by writing blog posts, talking with you, going to conferences, and so on. It was a hobby back then, and now I get to do it every day. It's great!
To tell you the truth, I didn't know what DevRel was before reading the job description. Even though I used to write a lot of blog posts and attend conferences, I never stopped to think about who the DevRel people at Google were. To me, there was no difference between the engineers who worked on the tools and those who advocated for them. I thought they were the same! I started doing some research before my interview, and everything suddenly made sense.
One anecdote to tell at this point involves Florina Muntenescu. 6 years ago, while I was at Capital One US, I started using the first alphas of Room in a project. Migrating from 1.0.0-alpha03 to alpha08 was challenging, so I decided to write a blog post about it. Obviously, I was a nobody at the time, so the post didn't get many views! What a coincidence! A few weeks or months later, Florina wrote about the exact same topic, and her post suddenly became very popular!!! Come on, Florina! I thought that was unfair, haha.
In hindsight, I can see how much influence (and responsibility) we have in the Android community.
🟣 For devs that also aspire to work for a company like Google, what advice would you give them?
Not everyone has the luxury of choosing their job, and some people need to work to pay the bills at the end of the month. But if you can choose, then I encourage you to find a role that suits you best. You'll be spending at least 8 hours a day doing what you were hired for, so it's important to be happy with your work.
Once you decide on the role you're targeting, take action! Prepare for the interviews and keep trying if you don't succeed. Don't rush, things take time. Relax and be yourself.
🟣 How is it to work as a DevRel? Do you need to travel a lot? 🛫
Working as a DevRel has a lot of positive things! One of the most rewarding aspects is the ability to influence the product. At Google, in particular, it is astonishing to be surrounded by such talented teams. Working with these people is a blessing.
It also has some downsides though. Depending on the topics you cover, public exposure can be harmful.
Not everyone knows how to give feedback in a constructive way, and some people take it to a personal level. Since I joined Google four years ago, I've been working on architecture and dependency injection. Can you tell me which topics are more controversial than those? 😅 I've learned to deal with this, and I'm doing okay!
When it comes to traveling, it is not mandatory, but it is nice to see the whole team from time to time. This is especially true for me, as I work remotely from Spain. Attending conferences is more of a personal decision. Some people enjoy them, while others do not. DevRel does very diverse work, so it is possible to get by without attending conferences.
🟣 You have a big follower base on Twitter 😲 do you think growing an audience is needed for a software engineer’s career?
100% NO! I know many great software engineers who are not publicly available, and that is perfectly fine.
IMO, it depends on your aspirations and what you want to get out of it. For me, growing my follower base is important because it allows me to reach more people. Fortunately, I also have the opportunity to get a boost from the AndroidDev social channels if needed. So to be honest, I've never been obsessed with it. I don't believe that having more followers makes you a better engineer. We all know how social media works 🙃
I'm thankful for the people who follow me. I believe it happened naturally and gradually over the years, due to working on the right things at the right time. My social media footprint is mostly about work, though. I don't particularly like to share personal stuff or get into endless debates. I guess that helps keep people from getting tired of me and unfollowing me for those reasons, haha
🟣 Do you have any side projects or hobbies? how’s your life outside of work?
I recently bought a house, and it's taking up most of my time. Whenever I settle down, I can start planning more activities outside of work and the house. I play the trumpet 🎺 and tennis 🎾, I'm looking forward to restarting those activities again 😀
🟣 Google became more opinionated on Android architecture several years ago, and this resulted in great architecture guidance as a north star for developers out there. Congratulations on the amazing work and efforts of all the DevRel teams 🥳
Sometimes though, people take it as The only correct way to do things©️ and they start arguing on Twitter like crazy 🔥 how do you and your team feel about this?
Thanks for the feedback! We really appreciate it 🙌
Personally, I don't enjoy reading these endless arguments. Architecture and DI get most of the attention and people get really serious about it. I don't usually engage in these discussions because some people don't want to listen, they just want to be right. It's pointless to have a discussion like that.
In all of our Architecture docs, we have a disclaimer that says: you should treat the recommendations and best practices as guidelines and adapt them to your requirements as needed. And that's what we want people to do. Read the page, come to your own conclusions, form an opinion, and see how to adapt this to your particular use case.
The problem with Architecture is that all decisions are trade-offs, and people have different tolerances for different things. RxJava or coroutines? Should we hide an implementation behind an interface? MVI or MVVM? Events as part of state or in a different stream? The thing is that what works in one project might not work in another 🤷. But that's why we get hired! To solve problems that happen at a particular scale in a particular company with a particular group of people.
Our team takes it pretty well and doesn't get offended easily when people criticise our work. We don't take it personal either, the guides we have out there have been reviewed and approved by many people. It's not a solo job, and it's not one person's fault. With the feedback we obtain, we filter out what really matters and take it into consideration. If we need to modify, clarify, or add more things, we do it. We appreciate the community's time and effort in helping us improve our guidance.
Something that people tend to forget is that Android development is constantly evolving, and so are the best practices and recommendations. What worked for you 6 years ago in a project may not work today.
🟣 Do you think devs are a bit too pessimistic and non-supportive to other devs sometimes?
The Android community is awesome!! We can feel the love when going to conferences or local meetups and talking with you all. Things change on the Internet, but I don't think that reflects reality entirely.
I've never seen the kind of awful feedback that you can regularly witness on social media in real life. It's easy to offend people and throw shade at others' work when you're behind an anonymous username or you know you'll never see the other person. Unfortunately, that kind of behavior gets all the attention, but we shouldn't normalize it. We should flag it when we see it.
To all authors out there (including libraries, blog posts, talks, etc.), you're awesome! Keep rocking and ignore those who want to take you down.
🟣 How does a DevRel team contribute to the development of Android libraries?
Contributing to the development of the libraries is not part of our job description, but it is something that we can do if we have the technical knowledge and are interested in doing so. You just need to talk with your manager and set expectations.
For example, a few years ago, StateFlow wasn't fully ready to be used in the UI layer. It was lacking some functionality you could easily get with LiveData. Thus, it was very hard for us to recommend it. So I went ahead and implemented some features: StateFlow integration with data binding and the lifecycle-aware APIs (repeatOnLifecycle, flowWithLifecycle, and collectAsStateWithLifecycle) that replaced the suspending ones (the launchWhenX family).
Like everything we do, this is not a solo job either. I got help from my teammates and other teams when it came to discussions, brainstorming, reviews, etc. I cannot take all the credit 😁
🟣 What is the biggest challenge you find when writing a piece of content like the official architecture docs?
IMO, the biggest challenge is to dumb it down to the bare minimum. Our goal is that the guidance is accessible to everyone, regardless of their experience level. Everyone should be able to follow along and understand everything. It's quite challenging! Trying to find a good balance between not boring experienced engineers and not overwhelming beginners is tough.
I find conference talks and blog posts easier because they have a more casual tone. You can better set your target audience and expectations with a good intro.
🟣 Do you have any breaking news about the future of Android or Android libraries that you’d want to share here with the 1400+ readers of this publication? 🙈
Oh yes! Of course.. there's this 🙊 and this other 🙈 that's going to revolutionize Android development!!! You'll see!
In all seriousness, there are some things in the oven that I'm quite excited about. If I were you, I wouldn't miss Google I/O this year 🤪 hope the team can share more about it there.
On the other hand, there are a lot of people complaining about Android dev changing too much and not being able to keep up. I sympathise with them as well. Kotlin and Compose have radically changed the way we build apps. I hope they become the new norm in the upcoming years, and that we see this technology settle and improve while maintaining stability.
🟣 Do you ever think about that younger Manuel, right about crossing the exit door from the Computer Science faculty at the public university of Murcia? What advice would you give him?
I sometimes think about the younger Manuel who made a lot of mistakes but learned from them along the way. But all of that was fruitful and shaped me into the person I am today.
TBH, I wouldn't say anything 😁 I don't want to change or touch anything, for fear that the butterfly effect might suddenly make me a Math teacher! 🤣
🟣 Several years ago I moved to Madrid for work. After a few years, I took the chance to go remote and return to my hometown. Best decision ever for me. Do you like living in and working remotely from smaller cities? do you plan to come back to an office ever?
In my case, it's not the size of the city that matters. It's more about the amenities and the quality of life that can be found there. Here in Murcia (Spain), I appreciate how close to the beach we are, the amazing food we have, and how good the weather is throughout the year. That's not something I can easily get in other places.
I don't dislike offices. I wouldn't mind working in an office if the commute is short. It's true that I'm more efficient at home, but going to the office 2 or 3 days a week wouldn't hurt. I've also considered joining a coworking space, and I might give it a try one day!
🟣 Where can readers find you?
Thanks so much for sharing with us Manuel. See you around. Big hug!
My pleasure! I had a lot of fun and remembered many fond memories. Thank you, and I wish you and Effective Android all the best in the future 🤗
More interviews lining up already 🔥 if you want more, check all the interviews published so far 👇
If you like this type of content, consider subscribing to this newsletter and joining the other 1400+ people that read it every day 🚀
The Jetpack Compose exclusive training
We keep getting closer. The next cohort starts on May 1, which means we are only a few weeks away to start this new adventure together. Remember you can register complete teams or groups.
Join me and an exclusive group of people to master Compose in the Jetpack Compose and internals cohort-based course. Please use the link in the following post for the cheapest price. This offer will run for limited time and slots.