Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Garden City Rubyconf 2015 Keynote: Race Condition
Search
Sidu Ponnappa
January 10, 2015
Programming
1.6k
4
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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
See All by Sidu Ponnappa
12 Years of Ruby
kaiwren
0
91
Keynote at DevOps Days India 2013
kaiwren
0
530
Other Decks in Programming
See All in Programming
パズルゲームの作り方 / how to make puzzle games
kaityo256
PRO
2
260
技術的負債の返済は、AI時代の複利で効く投資 — 経営としての意思決定とその遂行
curekoshimizu
1
2.1k
Turning Architecture into Unit Tests in the AI Era (NSSpain XIV)
steliosf
PRO
1
120
C#の現在地 進化の歴史と、AI時代の.NET Everywhere
neuecc
5
4.8k
App Storeの外へ──日本のiOSサイドローディング入門 for iOSDC Japan 2026
yuukiw00w
0
290
Everything will be SERVERLESS — 信じて運用した10年の経験値 / Everything Will be Serverless — Lessons Learned from 10 Years of Operational Experience
seike460
PRO
1
670
半永久的に提供し続けられるプライベートクラウドを目指して ― 利用者の認知負荷を抑えるAPI抽象化とハードウェア世代交代の基盤設計
tomokon
0
400
JAWS-UG 東京支部が始める、JAWS-UG支部コラボ / JAWS-UG lunchtime LT Collaboration
y0hgi
0
170
KiroのSpecで「五目並べ」を作ってみる
satoshi256kbyte
1
330
Java 27新機能 / Java 27 new features
kishida
2
190
AI が書く Go コードの品質を劇的に向上させる Linter: “declscope”
mpyw
0
470
FreeBSDでZabbixを動かす
kenkino
0
350
Featured
See All Featured
YesSQL, Process and Tooling at Scale
rocio
174
15k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
35
2.9k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
780
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
470
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
350
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
50
10k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
310
A Modern Web Designer's Workflow
chriscoyier
699
190k
My Coaching Mixtape
mlcsv
0
330
Building the Perfect Custom Keyboard
takai
2
890
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
2
2.2k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.3k
Transcript
RACE CONDITION habits, programming & motorcycles
@niranjan_p Niranjan Paranjape Founding Partner & CTO C42 Engineering achamian
@ponnappa Sidu Ponnappa Founding Partner & CEO C42 Engineering kaiwren
None
None
None
Yamaha R15
KTM RC390
Triumph Daytona 675R
None
Don’t Panic
There Are Two Kinds Of Programmers those who live in
fear and those who don’t
Fear Makes You Slow
Fear Makes You Avoid Change
Fear Causes Panic
Panic Causes Mistakes
You Don’t Learn When Panicked
Your Mind is the Bottleneck not your bike
Push Yourself to Go Faster …but without causing a panic
attack every five minutes
Do Not Trust Your Instincts
Your Human Instincts Are Wrong (especially in a new context)
Copy-Paste Oriented Development
Crunch Mode: Stop Writing Tests
Fat Controller Skinny Model
Hot Fix on Production
Default Instincts Need Re-training
None
Panic Braking (destabilises the bike)
Chopping Throttle (when getting on the gas is the right
thing to do)
Your Strongest Instincts Will Work Against You (they may even
cause you to crash)
Understand and Compensate for Survival Reactions (panic is the enemy)
You Improve What You Measure
We All Track Metrics code coverage, cyclomatic complexity, velocity…
Measurements Introduce Biases loc as a productivity metric #fail
Areas of Interest Create Biases beautifully architected codebase, no working
code #fail
Measure Everything You Can lap times, sector times, rpm, gearing…
Train One Metric at a Time it’s hard to improve
in two areas simultaneously at 100+ kmph
Local Maxima != Global Maxima sometimes improving one corner reduces
overall lap times
Focus Is A Currency
You Never Fix Two Bugs at the Same Time juggling
is for jugglers
You Always Prefer Fine Grained Abstractions decoupling help you think
more clearly
You Hate Side Effects because side effects cause bugs
You Are Always Quicker When the Architecture is Well Understood
fewer decisions, more time to think about each of them
You Are Always Quicker With A Comprehensive Spec Suite you
don’t have to evaluate side effects in your head, so fewer decisions
Focus is a Currency and everyone has a finite budget
You Spend Focus When You Make Decisions so you want
to save up for important decisions
You Spend Focus When You Make Decisions and everyone has
a finite budget
Habits Save On Trivial Decision Making all you need to
do is practice
None
Go Slow To Go Fast
Overall Consistency Trumps Spot Performance frequent death marches slow you
down
We Know Learning Takes Time
But Not Learning Takes Longer
We Know Katas are Valuable
We Treat these as Investments we trade spot performance in
the short-term for consistent performance in the long-term
CONSISTENCY
CONSISTENCY
Be an Investor invest the time it takes to get
better
Investments Take Time to Mature don’t be impatient, you will
go slower
Invest in Practice practice common decisions through drills to save
focus
Drills throttle control, braking, counter steering, lines…
Define Your Product
We Understand the Importance of Clear Requirements
We Use Tools like User Stories
We Value Clear Acceptance Criteria
Knowing Desired Outcomes Reduces Errors
Define the Product for every corner
Clarify the Tradeoffs easy to unintentionally trade entry speed for
exit speed
Tune your Markers markers are essential to optimising your cornering
Know Your Environment
Picking the Right Tools Matters ruby for number crunching cobol
for web applications
We Constantly Optimize Our Development Environments OS, shell, editor, IDE,
macros…
We Constantly Tune Our Configurations dotfiles
We Know Our Projects Inside-Out architecture, domain, ops
Choose Your Kit
Motorcycles are More Specialized than we Think
Track Bikes are Heavily Optimized posture, handling, comfort, storage, range,
mileage, power delivery, braking
Non-Track Bikes are a Bad Idea ok for MVP, but
not to scale
Customize Your Bike Further To Suit adjust brakes, lever play,
suspension, gearing etc. to your needs
Know Your Track surface, camber, corners, lines
Hack Your Habits
Instincts can be hacked turn a disadvantage into a strength
You Go Where You Look measure loc, you get loc
measure customer focus, you get customer focus
Target Fixation
You Literally Go Where You Look use this to go
faster, not just avoid crashes
When You’re Going Down, You’re Going Down
High Side
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
Q & A @niranjan_p Niranjan Paranjape Founding Partner & CTO
C42 Engineering achamian @ponnappa Sidu Ponnappa Founding Partner & CEO C42 Engineering kaiwren