1.5 yrs : Platform Team Lead & Mobile Engineering Lead @ Zomato • 1.5 yrs : Lead Engineer (Android) @ Target • 10+ years mostly native Android Advice most suited to • Scaleups / Large tech teams • Ecom, B2C, large DAU (1M+) products
bandwidth, low storage size, low RAM devices ◦ content consumption apps: frequent customer complaints = data usage ◦ in a competitive field: app size ∝ uninstall rate • txns/day or API hits per sec are STILL important; why ? ◦ good caching on frontend, helps backend teams ◦ lots of ‘scale’ mitigation happens on frontend (eg: exponential backoff) ◦ frontend can DDoS backend
own = 1 line of risk you undertake • even the biggies can fail you ◦ Google Maps SDK bug: 20M+ users, 96% of top 1000 apps affected ◦ Facebook Login SDK bug: 10M+ users, 80% of top 1000 apps affected • include prebuilt vs add as source ◦ build-time hit vs ability to self-fix ◦ security considerations ◦ CI able to pull 3rd party libs
to a pure state machine the better you’ll sleep at night • deeplinks should be idempotent, like GET requests, and just work™ zoma.to/r/135 https://zomato.com/restaurants/ncr/gulati zoma.to/u/34 fb://user/arnav https://facebook.com/@arnav
ability to toggle flags on DB, install apps, capture logs • PMs will do “strategy”, cannot spend time on run-of-the-mill testing and operational tasks • Engineers do not test thoroughly, we need a QA to be bulletproof • Testing features need co-ordinating between frontend + mobile + backend engineers, QA can coordinate with all of them better • We have compliance reasons • Why do other companies have QA teams then?
up after feature pods ❌ platform teams built libs that feature teams use ✅ platform teams are responsible for reliability/performance ❌ platform teams create tools + monitoring for better app perf ✅ platform teams do releases ❌ platform teams own CI/CD infra ✅
following apps you use on your phone ? ◦ Google Maps ◦ Google Pay / PhonePe / PayTM ◦ Swiggy / Zomato • product features ↔ version number pairing not needed • 2022.12 (week num), or 2022.5.1-5472 (YMD+buildnum) • v10 of Android = v10 of iOS has same features - why ? • control feature rollout via ◦ server side feature flags ◦ API headers
signoff • 1 short-lived branch created for 1 JIRA ticket ◦ scope your work so that this is < 1 week of work • Use Firebase Test Labs + Test Flight for CD-to-employees • PM/Design/Business should be able to “install a ticket id” • Single place to for all stakeholders to - ◦ get build for the ticket ◦ discuss design / specs / requirements ◦ sign off on release
time of integration tests • what are you testing ? ◦ input/output of function? ◦ business logic? ◦ state machine? • mocking vs faking ◦ can we test by hitting real APIs ?