Slide 1

Slide 1 text

RACE CONDITION habits, programming & motorcycles

Slide 2

Slide 2 text

@niranjan_p Niranjan Paranjape Founding Partner & CTO C42 Engineering achamian

Slide 3

Slide 3 text

@ponnappa Sidu Ponnappa Founding Partner & CEO C42 Engineering kaiwren

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

Yamaha R15

Slide 8

Slide 8 text

KTM RC390

Slide 9

Slide 9 text

Triumph Daytona 675R

Slide 10

Slide 10 text

No content

Slide 11

Slide 11 text

Don’t Panic

Slide 12

Slide 12 text

There Are Two Kinds Of Programmers those who live in fear and those who don’t

Slide 13

Slide 13 text

Fear Makes You Slow

Slide 14

Slide 14 text

Fear Makes You Avoid Change

Slide 15

Slide 15 text

Fear Causes Panic

Slide 16

Slide 16 text

Panic Causes Mistakes

Slide 17

Slide 17 text

You Don’t Learn When Panicked

Slide 18

Slide 18 text

Your Mind is the Bottleneck not your bike

Slide 19

Slide 19 text

Push Yourself to Go Faster …but without causing a panic attack every five minutes

Slide 20

Slide 20 text

Do Not Trust Your Instincts

Slide 21

Slide 21 text

Your Human Instincts Are Wrong (especially in a new context)

Slide 22

Slide 22 text

Copy-Paste Oriented Development

Slide 23

Slide 23 text

Crunch Mode: Stop Writing Tests

Slide 24

Slide 24 text

Fat Controller Skinny Model

Slide 25

Slide 25 text

Hot Fix on Production

Slide 26

Slide 26 text

Default Instincts Need Re-training

Slide 27

Slide 27 text

No content

Slide 28

Slide 28 text

Panic Braking (destabilises the bike)

Slide 29

Slide 29 text

Chopping Throttle (when getting on the gas is the right thing to do)

Slide 30

Slide 30 text

Your Strongest Instincts Will Work Against You (they may even cause you to crash)

Slide 31

Slide 31 text

Understand and Compensate for Survival Reactions (panic is the enemy)

Slide 32

Slide 32 text

You Improve What You Measure

Slide 33

Slide 33 text

We All Track Metrics code coverage, cyclomatic complexity, velocity…

Slide 34

Slide 34 text

Measurements Introduce Biases loc as a productivity metric #fail

Slide 35

Slide 35 text

Areas of Interest Create Biases beautifully architected codebase, no working code #fail

Slide 36

Slide 36 text

Measure Everything You Can lap times, sector times, rpm, gearing…

Slide 37

Slide 37 text

Train One Metric at a Time it’s hard to improve in two areas simultaneously at 100+ kmph

Slide 38

Slide 38 text

Local Maxima != Global Maxima sometimes improving one corner reduces overall lap times

Slide 39

Slide 39 text

Focus Is A Currency

Slide 40

Slide 40 text

You Never Fix Two Bugs at the Same Time juggling is for jugglers

Slide 41

Slide 41 text

You Always Prefer Fine Grained Abstractions decoupling help you think more clearly

Slide 42

Slide 42 text

You Hate Side Effects because side effects cause bugs

Slide 43

Slide 43 text

You Are Always Quicker When the Architecture is Well Understood fewer decisions, more time to think about each of them

Slide 44

Slide 44 text

You Are Always Quicker With A Comprehensive Spec Suite you don’t have to evaluate side effects in your head, so fewer decisions

Slide 45

Slide 45 text

Focus is a Currency and everyone has a finite budget

Slide 46

Slide 46 text

You Spend Focus When You Make Decisions so you want to save up for important decisions

Slide 47

Slide 47 text

You Spend Focus When You Make Decisions and everyone has a finite budget

Slide 48

Slide 48 text

Habits Save On Trivial Decision Making all you need to do is practice

Slide 49

Slide 49 text

No content

Slide 50

Slide 50 text

Go Slow To Go Fast

Slide 51

Slide 51 text

Overall Consistency Trumps Spot Performance frequent death marches slow you down

Slide 52

Slide 52 text

We Know Learning Takes Time

Slide 53

Slide 53 text

But Not Learning Takes Longer

Slide 54

Slide 54 text

We Know Katas are Valuable

Slide 55

Slide 55 text

We Treat these as Investments we trade spot performance in the short-term for consistent performance in the long-term

Slide 56

Slide 56 text

CONSISTENCY

Slide 57

Slide 57 text

CONSISTENCY

Slide 58

Slide 58 text

Be an Investor invest the time it takes to get better

Slide 59

Slide 59 text

Investments Take Time to Mature don’t be impatient, you will go slower

Slide 60

Slide 60 text

Invest in Practice practice common decisions through drills to save focus

Slide 61

Slide 61 text

Drills throttle control, braking, counter steering, lines…

Slide 62

Slide 62 text

Define Your Product

Slide 63

Slide 63 text

We Understand the Importance of Clear Requirements

Slide 64

Slide 64 text

We Use Tools like User Stories

Slide 65

Slide 65 text

We Value Clear Acceptance Criteria

Slide 66

Slide 66 text

Knowing Desired Outcomes Reduces Errors

Slide 67

Slide 67 text

Define the Product for every corner

Slide 68

Slide 68 text

Clarify the Tradeoffs easy to unintentionally trade entry speed for exit speed

Slide 69

Slide 69 text

Tune your Markers markers are essential to optimising your cornering

Slide 70

Slide 70 text

Know Your Environment

Slide 71

Slide 71 text

Picking the Right Tools Matters ruby for number crunching cobol for web applications

Slide 72

Slide 72 text

We Constantly Optimize Our Development Environments OS, shell, editor, IDE, macros…

Slide 73

Slide 73 text

We Constantly Tune Our Configurations dotfiles

Slide 74

Slide 74 text

We Know Our Projects Inside-Out architecture, domain, ops

Slide 75

Slide 75 text

Choose Your Kit

Slide 76

Slide 76 text

Motorcycles are More Specialized than we Think

Slide 77

Slide 77 text

Track Bikes are Heavily Optimized posture, handling, comfort, storage, range, mileage, power delivery, braking

Slide 78

Slide 78 text

Non-Track Bikes are a Bad Idea ok for MVP, but not to scale

Slide 79

Slide 79 text

Customize Your Bike Further To Suit adjust brakes, lever play, suspension, gearing etc. to your needs

Slide 80

Slide 80 text

Know Your Track surface, camber, corners, lines

Slide 81

Slide 81 text

Hack Your Habits

Slide 82

Slide 82 text

Instincts can be hacked turn a disadvantage into a strength

Slide 83

Slide 83 text

You Go Where You Look measure loc, you get loc measure customer focus, you get customer focus

Slide 84

Slide 84 text

Target Fixation

Slide 85

Slide 85 text

You Literally Go Where You Look use this to go faster, not just avoid crashes

Slide 86

Slide 86 text

When You’re Going Down, You’re Going Down

Slide 87

Slide 87 text

High Side

Slide 88

Slide 88 text

PHOTO CREDITS Raniel Diaz, https://flic.kr/p/cGsPDY ! Pair Programming, http://commons.wikimedia.org/ wiki/File:Pair_programming_1.jpg ! Lorenzo crashes out of the lead of the Valencia MotoGP. Source, Alberto Siz / AP

Slide 89

Slide 89 text

Q & A @niranjan_p Niranjan Paranjape Founding Partner & CTO C42 Engineering achamian @ponnappa Sidu Ponnappa Founding Partner & CEO C42 Engineering kaiwren