ABOUT JOB:
We are building the customer support experience inside a retail digital banking app: in-app chat with live agents and virtual assistants, secure messaging, service requests and complaint tracking, transaction and card disputes, document upload, and self service help. These are the journeys customers reach when something has gone wrong, so reliability, security and accessibility matter more here than anywhere else in the app.
You will own the Android side of these features end to end - from API contract discussions with backend and CRM teams through to Play Store release and production monitoring - working closely with the iOS engineer on the same squad to keep behaviour consistent across platforms.
JOB RESPONSIBILITIES:
Design, build and ship customer support features in Kotlin for a production banking app used by a large customer base.
Integrate real-time chat and contact-centre platforms (WebSocket / third-party SDKs such as Salesforce Service Cloud, Genesys, Zendesk, LivePerson or Twilio) and chatbot / AI assistant flows.
Build secure flows for case creation, dispute raising, status tracking, document and image upload, and push-notification-driven deep links back into an open case.
Work with backend and BFF teams to define REST / GraphQL contracts, and handle authentication, session management and token refresh correctly.
Apply mobile security practices expected in banking: Android Keystore, EncryptedSharedPreferences / DataStore, certificate pinning, BiometricPrompt, root and tamper detection, R8 obfuscation, FLAG_SECURE on sensitive screens, OWASP MASVS alignment.
Handle the unhappy paths properly - poor connectivity, session timeout mid-conversation, process death and state restoration, OEM battery optimisation affecting push delivery, retry and offline queueing.
Manage device and OS fragmentation: test across screen sizes, API levels and major OEM skins, and keep up with Play Store target API and privacy policy deadlines.
Write unit and UI tests, participate in code reviews, and keep the module healthy in CI/CD (build, test, sign, distribute to internal testing tracks).
Meet accessibility standards (TalkBack, font scaling, touch target size, contrast) - a regulatory and reputational requirement for banking apps, not an afterthought.
Monitor crash, ANR, performance and funnel analytics after release, and act on what the data shows.
Participate in Agile ceremonies with a distributed team; collaborate with product, design, QA, security and compliance
JOB REQUIREMENTS:
Must have:
6+ years of professional Android development in Kotlin, with apps shipped to the Play Store.
Strong command of Jetpack Compose, and comfort working in a codebase that still contains XML views and Fragments.
Coroutines and Flow (StateFlow / SharedFlow); solid grasp of threading, lifecycle and configuration change handling.
Architecture experience with MVVM or MVI and Clean Architecture, and multi-module Gradle projects.
Dependency injection with Hilt or Dagger.
Networking and integration: Retrofit / OkHttp, [protected info] / Moshi / Gson, REST/JSON, OAuth 2.0 / OIDC, JWT, error and retry handling.
Jetpack components in daily use: Room, DataStore, Navigation, WorkManager, Paging.
Firebase Cloud Messaging, notification channels, deep linking and App Links.
Testing: JUnit, MockK or Mockito, Turbine, Espresso and Compose UI testing.
Git-based workflow and familiarity with CI/CD pipelines (Bitrise, Azure DevOps, GitHub Actions, Jenkins),
Gradle build optimisation and Fastlane.
Working English - written and spoken - for daily collaboration with regional stakeholders.
Nice to have:
iOS development - Swift and SwiftUI.
You will not be asked to split your time by default, but the ability to review iOS PRs, align behaviour across platforms, or pick up iOS work during peak periods is genuinely valued.
Kotlin Multiplatform (KMP) or Compose Multiplatform experience, or interest in shared business logic across Android and iOS.
Prior work in banking, fintech or another regulated domain - familiarity with PCI DSS, KYC flows, audit logging or data residency constraints.
Play Integrity API, SafetyNet migration, or hardware-backed attestation. Experience integrating contact-centre, CRM or ticketing platforms.
Real-time messaging experience: WebSocket, MQTT, message ordering, read receipts, typing indicators, attachment handling.
Feature flagging and staged rollout (Firebase Remote Config, LaunchDarkly, Play staged rollouts).
Observability tooling: Crashlytics, Sentry, Dynatrace, AppDynamics, Instabug; Android vitals and ANR triage.
Contribution to design systems or shared component libraries.
Play Console release management, app bundles, Play App Signing, and policy-rejection experience.
WHY YOU SHOULD JOIN US:
Attractive package including base salary + 13th month salary
Insurance based on full base salary and Medical Benefit (Bao Viet Insurance Package) for Employee and Family
100% of full salary and benefits as an official employee from the 1st day of working
100% salary during probation time
Working in a fast paced, flexible, and multinational working environment with opportunity to travel onsite (in 60 countries)
Working with outstanding colleagues coming from top universities and top companies in Vietnam and foreign countries
18 paid leaves per year
Thông tin chung