Tóm tắt công việc
Role Summary
Vietpay is hiring a Senior Mobile
Developer who is Flutter-first but comes from a strong native mobile engineering background. You have built and shipped production applications on iOS or Android at a professional level, and you bring that depth of platform knowledge into your Flutter work. Engineers who have transitioned from native iOS development are strongly preferred - that foundation of understanding how the platform actually works, how builds are configured, how signing and distribution operate, and how native APIs behave, is what separates good Flutter engineers from great ones. You will own the full mobile delivery lifecycle at Vietpay: architecture, feature development, build and release operations, dependency governance, and continuous technical improvement. You take personal accountability for the products you work on and always push toward better engineering.
Key Responsibilities
1) Flutter Development
Build and maintain production Flutter features using Dart, following Clean Architecture with BLoC or equivalent state management.
Make sound architectural decisions in the Flutter layer: navigation, state management, platform channels, and native integration.
Write platform channel integrations when Flutter needs access to native iOS or Android capabilities not covered by existing plugins.
Maintain Flutter code quality: proper widget decomposition, no business logic in UI, testable BLoCs, and clean dependency injection.
Stay current with Flutter SDK releases and Dart language updates, proactively adopting improvements that benefit the codebase.
2) Native Mobile Knowledge Applied to Flutter
Leverage native platform knowledge to debug Flutter issues that surface at the platform layer: build errors, signing failures, native plugin conflicts, and platform-specific rendering behaviour.
Understand what Flutter abstracts away and what it does not - and know when to drop into native code to solve a problem correctly.
Apply native architecture instincts - clean layer separation, testability, lifecycle awareness - to Flutter codebase decisions.
Recognise platform-specific performance characteristics and apply the right fix at the right layer, whether Dart, platform channel, or native.
3) iOS App Setup, Build Configuration, and Distribution
Own Flutter project setup for iOS: bundle IDs, entitlements, [protected info] configuration, and environment-specific build settings.
Configure and manage iOS signing: certificates, provisioning profiles, and App ID setup in Apple Developer Portal.
Set up and maintain App Store Connect: app records, TestFlight distributions, and App Store submissions.
Manage iOS build tooling and automation: Fastlane lanes for building, signing, testing, and distributing; integration with CI/CD pipelines.
Configure and manage iOS dependency tooling: CocoaPods and Swift Package Manager as required by Flutter plugins - including version pinning and conflict resolution.
Manage Flutter flavor and build variant configuration: bundle IDs per environment, build configs, and native bridging for both iOS and Android.
4) Release Management and Operations
Own the end-to-end release pipeline: from branch to signed build to TestFlight or internal track to store submission.
Manage App Store review submissions: metadata, screenshots, compliance answers, and resolving reviewer rejections.
Coordinate with DevOps on CI/CD pipelines that run builds, tests, and distributions automatically on the right triggers.
Monitor production releases: crash rates, performance regressions, and ANRs via crash reporting and analytics tooling; respond to incidents promptly.
Maintain changelogs, release notes, and version tracking disciplines across environments.
5) Architecture and Code Quality
Define and enforce mobile architecture standards across the codebase: folder structure, layer separation, naming conventions, and dependency direction.
Conduct thorough code reviews focused on correctness, maintainability, security, and alignment with project conventions.
Write unit tests, widget tests, and integration tests that give genuine confidence in behaviour, not just coverage numbers.
Identify and address architectural drift before it compounds: refactor proactively rather than building on fragile foundations.
Document key decisions, patterns, and setup procedures so that the codebase is approachable by any competent engineer, not dependent on tribal knowledge.
6) Dependency and Package Governance
Own the Flutter dependency graph: audit third-party packages for security, maintenance status, licence compliance, and API stability before adoption.
Define upgrade policies: keep dependencies current on a schedule, not reactively, and pin versions with documented reasons for exceptions.
Maintain a managed pub upgrade process: test every upgrade against the full app before merging, document breaking API changes.
Remove unused dependencies promptly; avoid bloat that inflates binary size or build times.
7) Security and Fintech Compliance
Apply mobile security best practices: Keychain for credentials, certificate pinning for API communication, jailbreak and root detection, and secure data storage.
Ensure the app meets financial services compliance requirements: session management, transaction confirmation flows, sensitive data handling, and audit logging of security-relevant actions.
Follow App Store privacy guidelines rigorously: accurate data usage declarations, permission usage strings, and privacy manifest compliance.
Never store sensitive financial or user data in plaintext, logs, or insecure storage.
8) Accountability, Ownership, and Continuous Improvement
Take full ownership of the features and systems you build - not just until the PR merges, but in production, through incidents, and across the full product lifecycle.
Proactively identify technical debt, performance bottlenecks, and UX friction in the codebase before they become user-facing problems; propose and execute improvements without waiting to be asked.
Hold yourself to a higher standard than "it works": consider performance, edge cases, accessibility, error states, and long-term maintainability as non-negotiable parts of done.
Raise concerns early: if a product decision will create technical problems, say so clearly and propose alternatives - not to block delivery, but to protect product quality.
Continuously learn: follow platform releases, community best practices, and industry patterns in fintech mobile; bring relevant improvements back to the team with a concrete rationale.
Treat the product as your own: care about the user experience, the crash rate, the App Store rating, and the release cadence as a founder would.
International fintech & digital banking firm
Top salary, bonus & stock options
Work & travel globally with innovation teams
Social insurance based on full salary
Full Training will be provided to Candidate