Slide 1

Slide 1 text

Learning From Failures at Scale

Slide 2

Slide 2 text

@aditlal Adit Lal Product Engineer

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

• 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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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.

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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.

Slide 22

Slide 22 text

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.

Slide 23

Slide 23 text

Android (Bonus) Explore ☢ Test Break stuff Learn

Slide 24

Slide 24 text

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