Reach out directly about this role
By city
3-5 years
Experience
Full-time
Employment
Hybrid
Work Format
Middle
Grade
Mobile Development
Specialization
IT & Tech
Industry
Corporation
Company Type
Android Developer for Maps
Maps and Navigator help millions of users worldwide solve their tasks every day. Finding a restaurant or the way to a meeting with friends, scheduling a visit to a beauty salon, building the most efficient route on any type of transport, or simply finding out what's interesting in the city — these are our basic scenarios, vital for a modern urban dweller.
We don't stand still: we conduct experiments, research user needs, expand the capabilities of existing scenarios, and create new ones. Recently, we've added support for Android Auto, a new widget, scooter rentals, taxi booking, and food delivery. Maps and Navigator have turned into a powerful geo-super-app.
How is development structured?
A crucial part of our approach is betting on multiplatform development. Our iOS and Android applications are practically identical, and the functionality is so diverse and extensive that maintaining two separate implementations simultaneously is difficult and inefficient. Several years ago, we chose Kotlin Multiplatform as the primary technology for cross-platform development and were among the first to use it in production. Kotlin Multiplatform does not impose restrictions on using platform SDKs; we only write business logic on it, while UI and interaction with the operating system remain platform-specific, allowing us to use the latest stacks on Android and iOS. Over these years, we've come a long way, and now shared code makes up a significant part of our codebase. Because of this, Android and iOS teams are in close contact, exchange knowledge, and for new large projects, we immediately form cross-platform v-teams, which simplifies process control and joint launches.
Our project is divided into modules, which improves the architecture and allows for developing new scenarios in separate lightweight test projects. Within modules, we use the Redux architecture with Unidirectional Data Flow.
A large project cannot be developed without investing in infrastructure. We spend 80% of our time on product development and allocate 20% to technology advancement, automation of routine tasks, and paying down technical debt. CI/CD, automatic synchronization of resources from editors and designers, workflow task automation, release process automation, UI tests, A/B experiments, application and process health monitoring — we have everything necessary for a project of this level.
What is our Android stack?
Challenges
The main product challenge is the simultaneous development of location selection and navigation scenarios. We are working on making it easy to find ideas for places to go in Maps and to build optimal routes to chosen places using any convenient mode of transport for the user.
We continue to enhance navigation through complex interchanges for drivers and are adding new features for pedestrians and cyclists. We want to move to a weekly release cycle and roll out updates twice as often.
We are undergoing a major process overhaul, expanding UI test coverage, and optimizing build and application performance: power consumption and startup time. To implement logic shared between platforms, we use Kotlin Multiplatform. We are actively adopting Compose.
And we are also launching products in international markets, taking regional specifics and needs into account.
What about the atmosphere?
We pay a lot of attention to knowledge sharing: once a month we hold general "tech meetings" for the entire development team, where we talk about interesting research and achievements in various technological areas; weekly we gather as platform teams to discuss pressing issues. At the end of each sprint, we hold product demos. We respect work-life balance, team-building activities, informal communication, parties, and maintain a friendly atmosphere. We welcome participation in mobile development schools as instructors and help with speaking at conferences.
You might have already seen our talks and articles:
Evgeny Vasiliev at Y.Subotnik talks about how we gather rakes while profiling Android applications
Mikhail Kurenkov talks at Mobius 2020 about the process specifics of multiplatform development
Denis Zagaevsky talks at Mobius 2021 about our DI