Adding Chaos to Workstations

During the recent talks I’ve given with Benji Weber at Pipeline Conference and Continuous Delivery London we’ve talked about how we were introducing the idea of Cronned Code Deletion at Unruly, across our shared workstations. Of all the points we raise, this normally generates the most confusion afterwards as to what it is and how we think it helps - and I said I’d write a blogpost, so here we are!

Letting the monkey loose

The core idea of cronned code deletion is this:

At a given regular point in time, projects on the workstation will be removed and replaced with clean checkouts from version control

For a subset of our projects, which reside in ~/projects/ on our pairing workstations, we do this at midnight every night.

We’ve found this is a nice way of keeping us continuously delivering small changes of functionality and deploying these changes incrementally - if we’re working properly then this very rarely effects us. However, if we’ve failed and e.g. left a large changeset overnight then it’s possible to come back the next morning and find these changes gone.

It may sound like a overly-harsh idea but it’s helped us focus on having local branches diverting from master for as short a time as possible and to continuously integrate our changes with our production environment.

Finally, an added bonus is that reproducibly checking out our projects forces us to not rely on turning our workstations into snowflake machines: rather than having things configured or installed by hand (making them unique - like snowflakes) we are guaranteed that we can switch between them and have the same work environment - a great boon for non-personalised pairing workstations.