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

More Decks by Sidu Ponnappa

Other Decks in Programming


  1. RACE CONDITION habits, programming & motorcycles

  2. @niranjan_p Niranjan Paranjape Founding Partner & CTO C42 Engineering achamian

  3. @ponnappa Sidu Ponnappa Founding Partner & CEO C42 Engineering kaiwren

  4. None
  5. None
  6. None
  7. Yamaha R15

  8. KTM RC390

  9. Triumph Daytona 675R

  10. None
  11. Don’t Panic

  12. There Are Two Kinds Of Programmers those who live in

    fear and those who don’t
  13. Fear Makes You Slow

  14. Fear Makes You Avoid Change

  15. Fear Causes Panic

  16. Panic Causes Mistakes

  17. You Don’t Learn When Panicked

  18. Your Mind is the Bottleneck not your bike

  19. Push Yourself to Go Faster …but without causing a panic

    attack every five minutes
  20. Do Not Trust Your Instincts

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

  22. Copy-Paste Oriented Development

  23. Crunch Mode: Stop Writing Tests

  24. Fat Controller Skinny Model

  25. Hot Fix on Production

  26. Default Instincts Need Re-training

  27. None
  28. Panic Braking (destabilises the bike)

  29. Chopping Throttle (when getting on the gas is the right

    thing to do)
  30. Your Strongest Instincts Will Work Against You (they may even

    cause you to crash)
  31. Understand and Compensate for Survival Reactions (panic is the enemy)

  32. You Improve What You Measure

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

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

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

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

  37. Train One Metric at a Time it’s hard to improve

    in two areas simultaneously at 100+ kmph
  38. Local Maxima != Global Maxima sometimes improving one corner reduces

    overall lap times
  39. Focus Is A Currency

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

    is for jugglers
  41. You Always Prefer Fine Grained Abstractions decoupling help you think

    more clearly
  42. You Hate Side Effects because side effects cause bugs

  43. You Are Always Quicker When the Architecture is Well Understood

    fewer decisions, more time to think about each of them
  44. You Are Always Quicker With A Comprehensive Spec Suite you

    don’t have to evaluate side effects in your head, so fewer decisions
  45. Focus is a Currency and everyone has a finite budget

  46. You Spend Focus When You Make Decisions so you want

    to save up for important decisions
  47. You Spend Focus When You Make Decisions and everyone has

    a finite budget
  48. Habits Save On Trivial Decision Making all you need to

    do is practice
  49. None
  50. Go Slow To Go Fast

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

  52. We Know Learning Takes Time

  53. But Not Learning Takes Longer

  54. We Know Katas are Valuable

  55. We Treat these as Investments we trade spot performance in

    the short-term for consistent performance in the long-term


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

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

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

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

  62. Define Your Product

  63. We Understand the Importance of Clear Requirements

  64. We Use Tools like User Stories

  65. We Value Clear Acceptance Criteria

  66. Knowing Desired Outcomes Reduces Errors

  67. Define the Product for every corner

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

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

  70. Know Your Environment

  71. Picking the Right Tools Matters ruby for number crunching cobol

    for web applications
  72. We Constantly Optimize Our Development Environments OS, shell, editor, IDE,

  73. We Constantly Tune Our Configurations dotfiles

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

  75. Choose Your Kit

  76. Motorcycles are More Specialized than we Think

  77. Track Bikes are Heavily Optimized posture, handling, comfort, storage, range,

    mileage, power delivery, braking
  78. Non-Track Bikes are a Bad Idea ok for MVP, but

    not to scale
  79. Customize Your Bike Further To Suit adjust brakes, lever play,

    suspension, gearing etc. to your needs
  80. Know Your Track surface, camber, corners, lines

  81. Hack Your Habits

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

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

    measure customer focus, you get customer focus
  84. Target Fixation

  85. You Literally Go Where You Look use this to go

    faster, not just avoid crashes
  86. When You’re Going Down, You’re Going Down

  87. High Side

  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
  89. Q & A @niranjan_p Niranjan Paranjape Founding Partner & CTO

    C42 Engineering achamian @ponnappa Sidu Ponnappa Founding Partner & CEO C42 Engineering kaiwren