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 full-size slide

  2. @niranjan_p
    Niranjan Paranjape
    Founding Partner & CTO

    C42 Engineering
    achamian

    View full-size slide

  3. @ponnappa
    Sidu Ponnappa
    Founding Partner & CEO

    C42 Engineering
    kaiwren

    View full-size slide

  4. Triumph Daytona 675R

    View full-size slide

  5. Don’t Panic

    View full-size slide

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

    View full-size slide

  7. Fear Makes You Slow

    View full-size slide

  8. Fear Makes You Avoid Change

    View full-size slide

  9. Fear Causes Panic

    View full-size slide

  10. Panic Causes Mistakes

    View full-size slide

  11. You Don’t Learn When Panicked

    View full-size slide

  12. Your Mind is the Bottleneck
    not your bike

    View full-size slide

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

    View full-size slide

  14. Do Not Trust
    Your Instincts

    View full-size slide

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

    View full-size slide

  16. Copy-Paste Oriented
    Development

    View full-size slide

  17. Crunch Mode: Stop Writing Tests

    View full-size slide

  18. Fat Controller Skinny Model

    View full-size slide

  19. Hot Fix on Production

    View full-size slide

  20. Default Instincts Need Re-training

    View full-size slide

  21. Panic Braking
    (destabilises the bike)

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  25. You Improve
    What You
    Measure

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  32. Focus Is A
    Currency

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  35. You Hate Side Effects
    because side effects cause bugs

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  42. Go Slow To Go
    Fast

    View full-size slide

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

    View full-size slide

  44. We Know Learning Takes Time

    View full-size slide

  45. But Not Learning Takes Longer

    View full-size slide

  46. We Know Katas are Valuable

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  52. Define Your
    Product

    View full-size slide

  53. We Understand the Importance
    of Clear Requirements

    View full-size slide

  54. We Use Tools like User Stories

    View full-size slide

  55. We Value Clear Acceptance
    Criteria

    View full-size slide

  56. Knowing Desired Outcomes
    Reduces Errors

    View full-size slide

  57. Define the Product
    for every corner

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  60. Know Your
    Environment

    View full-size slide

  61. Picking the Right Tools Matters
    ruby for number crunching

    cobol for web applications

    View full-size slide

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

    View full-size slide

  63. We Constantly Tune Our
    Configurations
    dotfiles

    View full-size slide

  64. We Know Our Projects

    Inside-Out
    architecture, domain, ops

    View full-size slide

  65. Choose Your Kit

    View full-size slide

  66. Motorcycles are More Specialized
    than we Think

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  71. Hack Your
    Habits

    View full-size slide

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

    View full-size slide

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

    measure customer focus, you get customer focus

    View full-size slide

  74. Target Fixation

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  77. 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 full-size slide

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

    C42 Engineering
    achamian
    @ponnappa
    Sidu Ponnappa
    Founding Partner & CEO

    C42 Engineering
    kaiwren

    View full-size slide