Addictive Collaboration Patterns of Participation in an Open Programming Contest Ned Gulley The MathWorks, Inc.
Competitive Wikipedia
 
MATLAB Programming Contest: A week-long open collaborative competition for MATLAB programmers
Entries are automatically scored, ranked, and displayed  immediately Code, author, and score are  visible at all times Anyone can  modify anyone else's code  and resubmit it as their own
 
Protein folding
leaders leaders 1 karim 2 carol 3 eric karim. fcn f(x) ... view entry new entry ned. fcn f(x) ... 1 ned 2 karim 3 carol 4 eric
Doug says: “ I do not understand why anyone would be interested in participating in a contest where a winning idea is immediately co-opted and tweaked by another player.”
Stijn says: “ I started Monday after work. I worked late, let's say 4 or 5 hours. I started to become ‘obsessed’. At home, although I am a father of three children, my full-time job was working on the contest. I didn't sleep much. I worked maybe 10 hours after work each day. On Thursday it was clear that I wasn't going to be able to work seriously (for my job), so I took a day off on Friday.”
“ This is my first MATLAB contest and it is giving me far too much enjoyment. It's one of the most addictive things I have tried. The exercise is improving my programming skill, but in return I have backache, a terrible diet, no social life, and not much of a work life either. Also, I have experienced physical trembling while making the final preparations to send a code into the pit. Is that normal?” Nathan says:
Patterns of Participation
Big changes (Leaps) function f = fb(n) a = [0 1; 1 1]^n; f = a(2); function f = fb(n) if n > 2    f = fb(n-1) + fb(n-2);  else    f = 1;  end  Generating the nth Fibonacci number: 1, 1, 2, 3, 5, 8, 13, ...
Small changes (Tweaks) ... y = [1 2 3] ... ... y = 1:3; ...
Better Time Wednesday Monday Score = k1 * (algorithmic result) + k2 * (CPU time)
 
 
Punctuated equilibrium (the zigzag of innovation)
CPU Time Cost Function
Cost Function CPU Time
Cost Function CPU Time
Collaboration
Code Market Share by Line Count
Schools of thought (clans)
 
Innovation uptake
First use of conv First leader with conv
Systematic variation (tweak bombs)
 
 
Social signaling
• Scrambled Eggs • Rotten Eggs • I didn't start the fire • don't get obfuscated ... follow the light • You Call This Collaboration? Give Me A Break
• Tweak Tweak Tweak • tweakfest  • tweak-o-rama • slippery ground (tweak me) • Seems like everyone's just tweaking • I said to myself not to do this kind of thing... • Poopdeck Pappy gives in to peer pressure
• I wish I knew how this works
Phase transitions
novel conserved deleted
Line-by-line Analysis
History Flow
Knapsack, all
Knapsack, leaders only
Knapsack leaders
Knapsack shortest path
The shortest path
Two views of history
Broad variations
Deep variations
Motivation
Personal glory or Collaboration ?
Behavior of a jealous coder Last-minute entry Obfuscation Spaghetti code No comments Sandbagging Sock puppeting Combinations
“ Behavior” of successful code High rank Time on top High status author Clarity Elegance Comments Novelty
The coder   wants to block code propagation The code   wants to propagate! The essential tension:
For the coder   Make participation easy Reward vanity Many cheap prizes Darkness period Easy tweaking For the code   Encourage copying Highlight changes Punish complexity Discourage obfuscation Easy tweaking Managing the tension:
A chicken is only an egg’s way of making another egg. A hacker is only code’s way of making more code.

MATLAB Programming Contest