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

    View Slide

  2. @aditlal
    Adit Lal
    Product Engineer

    View Slide

  3. View Slide

  4. View Slide

  5. “I have not failed. I’ve just
    found 10,000 ways that won’t
    work.”
    -Thomas Edison

    View Slide

  6. View Slide

  7. Devote Yourself To A Growth Mindset
    Avoid Burnout
    Learn to say NO
    Learn Quick and Fail fast

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  11. Throw Ego out the window
    Tackle it one line at a time

    View Slide

  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

    View Slide

  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

    View Slide

  14. Build feature - Toggles
    • Early access
    • Kill Switch
    • Opt-in
    • Helps incremental roll outs
    • Helps sunset a particular flow

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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.

    View Slide

  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

    View Slide

  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.

    View Slide

  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.

    View Slide

  23. Android (Bonus)
    Explore ☢
    Test
    Break stuff
    Learn

    View Slide

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

    View Slide