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. Learning From Failures at Scale

  2. @aditlal Adit Lal Product Engineer

  3. None
  4. None
  5. “I have not failed. I’ve just found 10,000 ways that

    won’t work.” -Thomas Edison
  6. None
  7. Devote Yourself To A Growth Mindset Avoid Burnout Learn to

    say NO Learn Quick and Fail fast
  8. • 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
  9. 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
  10. 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
  11. Throw Ego out the window Tackle it one line at

    a time
  12. 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
  13. 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
  14. Build feature - Toggles • Early access • Kill Switch

    • Opt-in • Helps incremental roll outs • Helps sunset a particular flow
  15. 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
  16. 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
  17. 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
  18. 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
  19. 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.
  20. 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
  21. 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.
  22. 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.
  23. Android (Bonus) Explore ☢ Test Break stuff Learn

  24. Thats all folks! @aditlal Adit Lal aditlal.dev http://bit.ly/reachAdit