Hammock Driven Development In Action

10 years of git shows the value of thinking

Posted on Monday, 6 April, 2015

I've always admired git. Since the time I figured out the essential differences between git and versioning systems, I've been a strong advocate of git and have been confident in its success. With Gavin Manning, I championed git's adoption by Deutsche Bank, believing it held the key to unlocking developer collaboration with the large organisation. With the recent annoucement that Google Code has finally succumbed to git's success, I feel that my advocacy has been justified.

As developers migrated away from Google Code, a growing share of the remaining projects were spam or abuse. Lately, the administrative load has consisted almost exclusively of abuse management. After profiling non-abusive activity on Google Code, it has become clear to us that the service simply isn’t needed anymore. -- http://google-opensource.blogspot.co.uk/2015/03/farewell-to-google-code.html

Git and Clojure share a number of values. The thing I admire about git is that it emphasises the importance of the data format above the organisation or types in the code.

The trick wasn't really so much the coding but coming up with how it organizes the data. -- http://www.linux.com/news/featured-blogs/185-jennifer-cloer/821541-10-years-of-git-an-interview-with-git-creator-linus-torvalds

It's clear that git had undergone a design within Linus Torvalds' mind prior to him actually writing a line of code.

So I'd like to stress that while it really came together in just about ten days or so (at which point I did my first kernel commit using git), it wasn't like it was some kind of mad dash of coding. The actual amount of that early code is actually fairly small, it all depended on getting the basic ideas right. And that I had been mulling over for a while before the whole project started. I'd seen the problems others had. I'd seen what I wanted to avoid doing.

I've had this experience a number of times. One example is with bidi, which I had discussed once with Phillip Meier and ruminated over ever since. I remember the moment everything came together in my head (which happened to be on my birthday) and an hour later I had coded the essentially features of bidi. To a lesser degree the same thought process is driving yada.

This up-front thought process isn't a particularly fast way of writing code, but for parts of the system where there's a traditionally exponential cost-of-change curve (such as APIs, library code and shared data formats) it pays to spend more time thinking rather than jumping in and bashing out the code.