30 ms·
This is a great story, but describing the lava lamp as a "completely irrelevant stimulus" misses a key insight into why this worked: it introduced (or strengthe
by samstokes 11y ago
This is a great story, but describing the lava lamp as a "completely irrelevant stimulus" misses a key insight into why this worked: it introduced (or strengthened) social pressure to fix a tragedy of the commons.
"Everyone knew broken builds should be fixed quickly", but each individual felt a benefit of being able to push code without waiting for compilation / tests to run. Breaking the build had a cost, but that pain was being distributed across the team (other programmers finding the problem), and delayed (waiting for them to complain). So the feedback loop was too weak to discourage breaking the build.
This is a classic tragedy of the commons, and far from being "unreasonable" as the author suggests, it's a fairly rational inclination for each individual actor. Other people will find my bugs and breakages for me, and probably do some of the diagnostic work for me too - why wouldn't I pass off that work to them?
Since a team is (hopefully) a society rather than a competition, one answer is "because I don't want to be known as a careless individual who creates work for others". That's why paying attention to the lava lamp isn't "unreasonable" either - everyone can see it, so it makes that social pressure much more visible. It also means the cost of a broken build is less likely to get spread across the team - if someone hits a problem, instead of puzzling for half an hour whether the build is broken or they did something stupid, they can just glance up and see the red lava lamp, and immediately exert social pressure.
By making social pressure stronger and more immediate, the lava lamp pushes the cost of breaking the build back onto the person who broke it. That restores a missing feedback loop, which is often an effective way to change a culture.
- tetrep 11y agoIn addition to all of the above, it creates one of the greatest impetuses (impeti?) for programmers, an arbitrary and voluntary constraint. I don't really have any evidence other than anecdotes, but every programmer I know loves them in some form or another.