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

Garden City Rubyconf 2015 Keynote: Race Condition

Garden City Rubyconf 2015 Keynote: Race Condition

A talk on habits, programming and motorcycles (closing Keynote, Garden City Ruby Conf 2015)

Sidu Ponnappa

January 10, 2015
Tweet

More Decks by Sidu Ponnappa

Other Decks in Programming

Transcript

  1. RACE
    CONDITION
    habits, programming

    &

    motorcycles

    View Slide

  2. @niranjan_p
    Niranjan Paranjape
    Founding Partner & CTO

    C42 Engineering
    achamian

    View Slide

  3. @ponnappa
    Sidu Ponnappa
    Founding Partner & CEO

    C42 Engineering
    kaiwren

    View Slide

  4. View Slide

  5. View Slide

  6. View Slide

  7. Yamaha R15

    View Slide

  8. KTM RC390

    View Slide

  9. Triumph Daytona 675R

    View Slide

  10. View Slide

  11. Don’t Panic

    View Slide

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

    View Slide

  13. Fear Makes You Slow

    View Slide

  14. Fear Makes You Avoid Change

    View Slide

  15. Fear Causes Panic

    View Slide

  16. Panic Causes Mistakes

    View Slide

  17. You Don’t Learn When Panicked

    View Slide

  18. Your Mind is the Bottleneck
    not your bike

    View Slide

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

    View Slide

  20. Do Not Trust
    Your Instincts

    View Slide

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

    View Slide

  22. Copy-Paste Oriented
    Development

    View Slide

  23. Crunch Mode: Stop Writing Tests

    View Slide

  24. Fat Controller Skinny Model

    View Slide

  25. Hot Fix on Production

    View Slide

  26. Default Instincts Need Re-training

    View Slide

  27. View Slide

  28. Panic Braking
    (destabilises the bike)

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  32. You Improve
    What You
    Measure

    View Slide

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

    View Slide

  34. Measurements Introduce Biases
    loc as a productivity metric #fail

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  39. Focus Is A
    Currency

    View Slide

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

    View Slide

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

    View Slide

  42. You Hate Side Effects
    because side effects cause bugs

    View Slide

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

    View Slide

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

    View Slide

  45. Focus is a Currency
    and everyone has a finite budget

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  49. View Slide

  50. Go Slow To Go
    Fast

    View Slide

  51. Overall Consistency Trumps Spot
    Performance
    frequent death marches slow you down

    View Slide

  52. We Know Learning Takes Time

    View Slide

  53. But Not Learning Takes Longer

    View Slide

  54. We Know Katas are Valuable

    View Slide

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

    View Slide

  56. CONSISTENCY

    View Slide

  57. CONSISTENCY

    View Slide

  58. Be an Investor
    invest the time it takes to get better

    View Slide

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

    View Slide

  60. Invest in Practice
    practice common decisions through drills to save focus

    View Slide

  61. Drills
    throttle control, braking, counter steering, lines…

    View Slide

  62. Define Your
    Product

    View Slide

  63. We Understand the Importance
    of Clear Requirements

    View Slide

  64. We Use Tools like User Stories

    View Slide

  65. We Value Clear Acceptance
    Criteria

    View Slide

  66. Knowing Desired Outcomes
    Reduces Errors

    View Slide

  67. Define the Product
    for every corner

    View Slide

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

    View Slide

  69. Tune your Markers
    markers are essential to optimising your cornering

    View Slide

  70. Know Your
    Environment

    View Slide

  71. Picking the Right Tools Matters
    ruby for number crunching

    cobol for web applications

    View Slide

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

    View Slide

  73. We Constantly Tune Our
    Configurations
    dotfiles

    View Slide

  74. We Know Our Projects

    Inside-Out
    architecture, domain, ops

    View Slide

  75. Choose Your Kit

    View Slide

  76. Motorcycles are More Specialized
    than we Think

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  80. Know Your Track
    surface, camber, corners, lines

    View Slide

  81. Hack Your
    Habits

    View Slide

  82. Instincts can be hacked
    turn a disadvantage into a strength

    View Slide

  83. You Go Where You Look
    measure loc, you get loc

    measure customer focus, you get customer focus

    View Slide

  84. Target Fixation

    View Slide

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

    View Slide

  86. When You’re Going
    Down, You’re
    Going Down

    View Slide

  87. High Side

    View Slide

  88. 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

    View Slide

  89. Q & A
    @niranjan_p
    Niranjan Paranjape
    Founding Partner & CTO

    C42 Engineering
    achamian
    @ponnappa
    Sidu Ponnappa
    Founding Partner & CEO

    C42 Engineering
    kaiwren

    View Slide