Lafran Pane

Senior Android Engineer · 11 yrs · Indonesia

I make Android apps boring.

Boring is the highest praise you can give a driver app at 5 a.m. Kotlin-first, Compose-forward — dispatch, navigation and payments for more than a million people across Southeast Asia.

The record

production numbers I moved

crash-free users
82%
99.3%
Moka POS · in 2 months
app modules
1
37
SWAT Mobility
releases via CI/CD
0%
100%
3 stores, from scratch
1M+ monthly users 90 tables migrated to Room 13 engineers led

Selected work

2018 — present

Role
Senior Android Developer
Org
SWAT Mobility
Years
Jun 2023 — present
Domain
Mobility · route optimisation · B2B & B2C

SWAT Driver

Driver-facing dispatch and turn-by-turn navigation for a regional mobility platform. Drivers open it before dawn and keep it open all day, so every crash is a stranded passenger.

  • Rebuilt the Android architecture from a single module into 37
  • Migrated the map SDK from XML to Compose — 100%, live in production
  • Built the CI/CD pipeline from nothing: every release now ships through it to Play Store, Firebase and Huawei AppGallery
  • Built AI agents for UI automation, crash triage and PR review, lifting team throughput by up to 70%
app modules
1
37
releases via CI/CD
0%
100%
Kotlin Jetpack Compose Maps SDK Coroutines Room Fastlane Playwright
View on Google Play
SWAT Driver in navigation mode: an active route across central Singapore, the next turn onto Moulmein Road, and the drop-off card for 300 Thomson Road.
Turn-by-turn navigation & drop-off, Singapore
Role
Android Engineer → Engineering Manager
Org
Moka POS, then Gojek
Years
Nov 2018 — Feb 2022
Domain
Point of sale · retail & food · SaaS

Moka POS

Point-of-sale for Indonesian merchants — payments, KYC/KYB onboarding, transactions and receipt printing. Three years as an engineer, then a year leading the team that owned it.

  • Took crash-free users from 82% to 99.3% in two months by making stability the team's headline objective
  • Migrated 90 database tables from raw SQL to Room, shipped gradually over six months with no downtime
  • Shipped four core POS flows — checkout, KYC/KYB registration, payment and receipt printing — in under six months
  • Cleared 27 outdated platform integrations to keep the app compatible as Android OS requirements moved
  • Led 13 engineers across Android, QA and backend; set the team's OKRs and quality bar
crash-free users
82%
99.3%
monthly users
held
1M+
Kotlin Java Room MVVM Postgres Appium Jenkins
View on Google Play
Moka POS product catalogue on a phone: 88 products, a running cart total of Rp 14.400, and the pay action pinned to the top.
Product catalogue & cart, Moka POS
Role
Senior Android Developer
Org
Moladin
Years
Nov 2022 — Feb 2023
Domain
Automotive marketplace · B2C

Moladin Agent

Field-sales app for agents financing used vehicles. A short engagement with a narrow brief: unblock the sales workflow and leave the team able to ship without me.

  • Built the Android features sales operations was waiting on
  • Introduced the company's first CI/CD pipeline, on Jenkins
  • Set the code review bar and mentored the Android engineers on maintainable, scalable patterns
Kotlin Java SQL Jenkins
View on Google Play
Moladin Agent financing application detail: status, amount, and the customer fields an agent captures. Phone number and NIK are masked.
Financing application detail — ID fields masked

2022 — 23 Between Gojek and SWAT I freelanced for eight months while I learned Compose and Flutter, took a three-month contract at Moladin, then spent that spring choosing the next role rather than taking the first one. Happy to walk through it.

Before that

2011 — 2018 · games, iOS, early Android

2017 — 2018
Lead Mobile Developer
Docotel Group · Android, iOS, Go
2015 — 2017
Android & iOS Developer
Indiva Finansia Teknologi · Java, Swift
2012 — 2014
Project Manager
Agate Jogja · game production
2011 — 2014
Unity & Flash Developer
Agate Jogja · C#, ActionScript 3

Stack

what I reach for first, in bold

Languages
Kotlin, Java, Swift, Go, SQL, Groovy
Android
Jetpack Compose, Coroutines, Flow, Room, WorkManager, Paging 3, Navigation
Architecture
Multi-module, Clean Architecture, MVVM
Maps & navigation
Maps SDK, MapLibre, turn-by-turn routing
Testing
JUnit, Appium, Playwright, BDD with Gherkin
Delivery
Fastlane, Jenkins, Bitbucket Runner, Firebase, Huawei AppGallery
AI-assisted engineering
Claude Code, custom coding agents for automation, triage and review
Languages spoken
English, Indonesian

How I work

verification first, then the structure that keeps it true

Stability is not a phase at the end. It is the order I do things in.

Verification — fastest layer first

  1. Unit tests

    The cheapest place to catch a regression, and the only layer fast enough to run on every commit.

  2. UI automation

    Gherkin keeps the specs readable by QA and product, not just engineers. This is also where I put AI agents to work writing and maintaining the suite.

    Appium Playwright BDD Gherkin
  3. Manual, on real devices

    For what automation cannot see: OEM quirks, unusual screen sizes, and how the app behaves on a bad connection.

    BrowserStack

Foundations

  • Multi-module

    Android and Java libraries split so builds stay fast and teams stop blocking each other. 37 modules at SWAT Mobility.

  • Clean Architecture

    So the app outlives the team that wrote it, and the next engineer can find things without being told where they are.

  • CI/CD

    Every release ships through the pipeline, never from a laptop. I have built this from nothing twice.

Open to

Lafran Pane

Senior Android IC roles, remote.

I spent a year managing 13 engineers at Gojek, then chose to go back to building. IC is the work I am best at, not a rung I have not reached.

Currently at SWAT Mobility, in Indonesia, working GMT+7. If you are hiring for an Android team that cares what its crash dashboard says, I would like to hear about it.

Muhammad Lafran Pane Built by hand — no framework, no tracking