"Interview Preparation" - Sumayyah Ahmed
With Sumayyah Ahmed Google Developer Expert Android & Senior Android Engineer Square
I had the honor to speak to Sumayyah Ahmed again on a continuation of her Season 2 Episode 2 , if you missed it, you can listen to it here; or listen to all podcasts. Sumayyah is a Senior Software Engineer at Square, GDE Android, and a regular conference speaker. She’s been developing Android apps for ten years, ever since she fell in love with a summer post-college project. Since then, she’s worked in early-stage startups and large companies and built apps in all kinds of spaces: social media, video streaming, smart home integration, and finance.
She gets really passionate about engineering resilient, performant apps that delight people and building strong team processes to support those. Sumayyah’s second love is community engagement, so you’ll also find her onstage at conferences, writing on her blog, or mentoring one-on-one. When she’s not working on Android things, you’ll find her very likely at home, despairing at all her reading/gardening/crafting projects.
Sumayyah has traveled the world sharing her knowledge, and in this article, she talks about how she got ten offers in one year.
Questions
What is the current market like …
for Android engineering?
#1 and #2 It’s really tough to say as someone who’s not actively interviewing and not a recruiter. In general, Android roles have followed the market - a lot of engineers, including Android, got laid off recently, and a lot of companies are slowing or pausing hiring right now.
However, Android is a niche market. Demand has historically been higher for mobile than for other stacks; mobile engineers also command a pay premium.
How do you reach out to people for interview help?
How do you get referrals?
#3 and #4 can be answered together. In general, the help you get is a function of your network. Who’s in your network? If it’s people who already have the kind of jobs you want, that’s a great thing.
Network can be many different small bubbles btw. You can create a network out of:
Current or former colleagues, bosses
Current or former schoolmates and teachers
“Official” communities like GDG, Women Techmakers, and Women Who Code. There are a lot of these. Some are geography-based, and a lot are virtual. Most of them specialize in tech stack and audience (aka some are aimed for new grads, some for experienced folks, etc.)
“Unofficial” communities in your area - these are often on Slack or Meetup, and you have to look harder for these.
LinkedIn connections
To expand your network: ask the people you know to connect you with others!
Then ask for help:
Ask for interviewing advice
Ask for mock interviews
Ask for a referral
To get referrals:
You don’t have to know someone well. Obviously, if they do, that’s great. But you can still introduce yourself to someone you don’t know well, ask if you can have a 1hr chat, and bring up a referral possibility in a non-pressuring way. You can get interview advice even if they don’t feel they can refer you.
How do you sound confident in an interview?
Get practice. Do a lot of mock interviews. You can also pay for mock interviews, but I’m not sure I recommend those services. They’re expensive, and you’ll get better by doing real interviews anyways.
Most importantly: line up a lot of interviews if you can, and don’t put your most critical interviews first. That way, you’ll get practice in, and none of the interviews will have super high stakes.
Understand that you are also interviewing the company - that will give you confidence!
What are the critical Data Structures and Algorithms to know?
DFS, BFS, Binary search. Arrays, Hash tables, Lists, Heaps. Big O runtime.
What are the critical Android things to review before an interview?
(This is obviously level-dependent)
Architecture patterns: MVC/MVP, MVVM, MVI/Redux
Memory leaks and ANRs: how they happen, and how to debug them
Multithreading, including:
How threads and processes work in Android
Coroutines vs. RxJava vs Kotlin Flows
UI Performance issues, including:
Image processing and rendering
View hierarchy and rendering processes
Recyclerviews: how they work internally and possible performance issues
Dependency Injection: how it works and its tradeoffs
Data persistence options for Android and tradeoffs for each