Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Learning from failures at scale

Adit Lal
January 22, 2020

Learning from failures at scale

This talk highlights some of my key moments working on a large scale product. It's a brief walkthrough of what an engineer goes through to maintain the large project, what are some of the reasons for burnout, and how does one grow and evolve above it.

Adit Lal

January 22, 2020
Tweet

More Decks by Adit Lal

Other Decks in Technology

Transcript

  1. • Monolith Codebase • Find the zero’s and one’s •

    YAGNI - You Ain’t Gonna Need It! • Build feature toggles • Test startegies • Burning out and not knowing when to pause Gojek android repo
  2. Monolith Repo • 150 + modules • Product-wise distribution of

    modules • Ensuring stability , ownership is per product module • Test’s for every corner case. • Tooling and productivity
  3. 70% of devs work on a single module at a

    time 25% work on two modules at a time Rest of them work on max 4~5 modules in a single commit
  4. Zero’s and One’s • Read code bottoms up • Core

    > Products > Tools • Fail Fast Grow smarter • Understand and divide the problem • Test and brace for impact • Follow a Code style • Follow proper PR process
  5. YAGNI - You Ain’t Gonna Need It! • Follow a

    mindset and avoid breaking • Avoid “just in case we need them” • Find reasonable use case and stick with it
  6. Build feature - Toggles • Early access • Kill Switch

    • Opt-in • Helps incremental roll outs • Helps sunset a particular flow
  7. Build features • Feature Flags vs Branching • Avoid Long-Lived

    branching • Full control on lifecycles with toggles • Enables better team communication • Exposes dependencies - short lived branch • Merge more often - risk mitigation • Clean up
  8. Test startegies • Create feature branch • Break down story

    into smaller stories / points • Think outside the box , list down all edge cases • Think about - unit tests and how to add code coverage
  9. Test startegies • Tackle the fear • Work around uncertainty

    of your code - call it out. • Avoid breaking in production • Tests brings confidence into code reviews • Tests provide confidence in refactoring • It quintessential to our success - great ROI
  10. Test startegies • Setup • Teardown • Tests • Test

    Suites • Address Flaky tests • Test on real device vs emulators • Test in-House or in the Cloud • Performance & Security test
  11. Burning out and not knowing when to pause • Avoid

    thinking about everything at once • Adopt organisational skills • Drive a 1-1 with your lead • Never regret your decision.
  12. Burning out and not knowing when to pause • Ask

    yourself - Keep up or Fall behind? • Talk to a buddy , learn and share • Ensure good physical health and mental health • Set aside time to spike things • Invest wisely and calculate ROI efficiently • Go play football- while Gradle builds
  13. Android (Bonus) • Familiarising with design principles • Take a

    deep dive into the UI rendering pipeline. • Building custom views and create animations - test it on side projects (ofc). • Knowledge of the touch framework, gestures, notifications, sensors, storage, and file system.
  14. Android (Bonus) • Understanding the build process inside out. •

    Knowing what impacts the startup time of an app. • Measuring the performance - network, memory, or rendering perspective. • Optimising apps for seamless offline usage. • Working with large data sets or images in lists.