Hide chapters

Living by the Code

Before You Begin

Section 0: 4 chapters
Show chapters Hide chapters


Section 1: 14 chapters
Show chapters Hide chapters

Getting to Work

Section 2: 17 chapters
Show chapters Hide chapters

31. An Interview with Moyinoluwa Adeyemi
Written by Enrique López-Mañas

Moyinoluwa is a Google Developer Expert for Android and a Software Engineer at Twitter. Before Twitter, she was a Senior Android Developer at Zola Electric where she worked in a team to enable people in Sub-Saharan Africa have access to clean energy. She has a bachelor’s degree in Computer Science with Mathematics from Obafemi Awolowo University, Nigeria. Moyinoluwa loves learning and sharing her knowledge about Android Development at local and international events. She is also very involved with the developer community. She started the first Women Techmakers group in Nigeria at her university in 2013, managed the Google Developers Group there for 3 years and she was a co-organizer for the Google Developers Group in Lagos for almost four years. While she’s not doing any of these things you’ll most likely find her with her nose in a good book, speaking at a developer event, learning German or trying to beat her personal best for a marathon.

Moyinoluwa Adeyemi
Moyinoluwa Adeyemi

Connect with Moyinoluwa

Twitter: @moyheen

LinkedIn: /in/moyinoluwa/


You have experience having worked at a Udacity Nanodegree. It seems that the old paradigm of attending university, acquiring a degree and finding a job is no longer the most valid one for software engineers. How does your own experience relate?

I studied Computer Science at University, so I followed the traditional path of acquiring a CS degree. A degree helped me build the foundations of everything I do today. I also met the set of people who would eventually influence my decision to become a programmer and to program for Android.

While most of what I know today that’s relevant for my current career as an Android Developer was self-taught, my university curriculum gave me a foundational knowledge and a generalist overview of computing.

I took Computer Architecture, Human-Computer Interaction (HCI), and project management classes. At the time, I wasn’t sure how all these were going to be relevant, but looking back now, I see how it all fits together.

I found the Nanodegree to be more specific and tailored to my learning. When I started learning how to program for Android, I didn’t have access to a curriculum. Instead, I consumed whatever resources I could find that were Android-related.

At the time, I didn’t think learning through video tutorials was for me. That changed when I took the Android Fundamentals course on Udacity. What stood out the most to me was the fact that my learning was now directed. I knew what to focus on and in what order. The course also had short videos, unlike the other video resources I had tried, so it was easy to not lose concentration or get bored. I completed that and really enjoyed it. After that, it was a no-brainer for me to make the decision to sign up for the Android Nanodegree.

What would you say to a developer thinking of starting one of those degrees?

I think it depends. They should know whether that method of learning works for them. One of the major reasons I find this kind of certification path very interesting is that there’s a curriculum. That’s not always the case in a field in which a student is trying to plot a course for themselves.

Here’s me acknowledging that what worked for me may not work for someone else.

To give the benefit of the doubt, all of these programs have a track record of success. Maybe they are on to something.

That’s really interesting. I think most of us in the industry would say at least some of our knowledge is self-taught. A lot of what we learn comes from podcasts and books. Which do you prefer?

Books. I find that reading helps a lot with my writing. It also helps me stay focused on one thing at a time, which is becoming increasingly difficult for me. I also think that books contain more nuance than a podcast can have. One can argue that podcasts are faster to get through, though.

Speaking of efficiency, one of the trends that seems to be here to stay is remote work. What do companies often do wrong when they have a remote team?

One problem I see is companies not having a remote culture. Making remote developers feel included in the team is very important, especially when the team is partially remote and other co-workers are physically in an office. This includes keeping all conversation in a general place like Slack so that team members who are not physically present can have the context for all the conversations, ensuring that all activities are done online so that team members are not excluded.

I also think being able to reach a compromise on periods of overlap based on time zones during work hours goes a long way.

How does a developer start working remotely?

First, by getting the necessary setup in place—a dedicated room for work with a steady internet connection. They can choose to set that up at home or work from a co-working space. Because my team is really distributed, I use Clocker, an app that manages time zones to determine when to schedule meetings and when to send team members messages or expect a reply to an urgent issue. I enter the locations of my team members, and at a glance I can tell what time it is where everyone is.

How can we do remote work effectively?

Again, it’s important to have a dedicated workspace. As well, it’s important to build trust with the rest of the team since no one is going to be looking over our shoulders. Additional communication may be called for because remote workers are less visible to team members. It’s also important to work towards maintaining physical and mental health. This might be easier to achieve with remote work because it enables us to become more flexible. We can fix healthy meals ourselves, and we have more space to schedule exercise hours.

You’re a marathon runner, right? Does being a distance athlete have an impact on your professional life?

Yes, it does. Running has helped improve my physical and mental health and my sleep. The runner’s high is a real thing, and that becomes very important to me when working solo for a long stretch at a time takes a toll.

I often experience a runner’s high after I’ve pushed myself more than I thought I could go by increasing my speed or covering a longer distance.

While running, if I have a problem I can’t figure out, I turn it over and over in my head and sometimes I find an idea for how to proceed. Also, with running, there’s always a new goal to aim for. Similarly, I always aim to be better at work. Generally, running has helped me to be more patient and better at solving problems.

The funny part is the imposter syndrome. Sometimes I feel I shouldn’t call myself a runner because I’m not very fast. That happens to me sometimes in my professional life, too. For example, sometimes I feel like I don’t deserve the opportunities I get even after putting in the work to get them. The same way I’ve learned to dismiss those feelings with regard to running, I’ve learned to recognize and dismiss imposter syndrome when it comes up professionally.

“Programming is just one of the skills that makes one a well-rounded developer. The so-called soft skills are actually very important when you have to work in a team because development isn’t done in a silo.”

Speaking of important lessons, what’s something you learned the hard way? Is there anything you wish someone had told you when you started working in software development?

Software Development is not just about programming. Programming is just one of the skills that makes one a well-rounded developer. The so-called soft skills are actually very important when you have to work in a team because development isn’t done in a silo.

How do we solve the problem of lack of minority visibility in software engineering?

I think being very conscious of it and explicitly reaching out to members of underrepresented groups helps. This can be applied when looking for speakers and attendees for tech events and during hiring. It’s also important to make workspaces inclusive so that after putting in all the hard work to bring people in, they don’t take the first door out. Being very particular about growing the skills of underrepresented folks when possible will also help.

What is one core concept most software developers don’t pay enough attention to when they are trying to grow their careers?

For me, it’s connecting with someone who’s interested in my growth and helps me set goals to achieve them. This can be managers or mentors outside the company who are ahead of you in the field.

What other resources do you rely on heavily to stay current on industry knowledge?

I read the Android and Kotlin weekly newsletters and listen to podcasts including Fragmented, Android Developers Backstage, and Android Dialogs. I find published videos from conferences to be a great resource, and I follow a lot of Android developers on Twitter too.

What’s the cheapest investment you’ve made that has provided you the highest ROI in your career?

My Macbook Pro 2015. I bought it for $694 four years ago. Before then, I was programming on a machine with poor battery life and not enough processing power to run the applications I installed on it. Setting up developer environments used to be a pain. The new laptop meant I could churn out work faster.

What advice would you give to someone starting his or her career?

Learn how to learn, and never stop learning because things change so fast. They might be overwhelmed with all there is to know, but they should take it one day at a time.

How does your daily routine reflect what you’ve learned over time about how to work effectively?

I try to start my day early. I usually complete a chapter of a book or think through any pending challenges I have to resolve, technical or otherwise. My concentration is at its peak early in the day, so I try to make the best use of that time. I also try not to check social media until later in the day.

How do you stay highly productive for long stretches of time?

I block out time and focus on completing one task at a time while listening to ambient music. Sometimes I’m interrupted during one of the time blocks but I’ve learned to schedule interruptions. I don’t know if this is peculiar to me, but sometimes I have moments when I don’t feel like doing any work. During those times, I’ve trained myself to just start and take it one line at a time, no matter how long it takes me instead of waiting to get in the flow or waiting for when I feel like it. I reward myself for any progress made during this period no matter how small it is and usually, before I realize it, I have churned out good quality work.

Moyinoluwa’s Recommendations

  • Deep Work: Rules for Focused Success in a Distracted World | Cal Newport

  • It Doesn’t Have to Be Crazy at Work | Jason Fried and David Heinemeier Hansson

Have a technical question? Want to report a bug? You can ask questions and report bugs to the book authors in our official book forum here.
© 2023 Kodeco Inc.