I first read about ‘Continuous Deployment’ on a blog post by Timothy Fitz circa 2009/10. A fresh-off-uni freelance developer back then, it hit me as somewhat daunting and (naively) ambitious.
The naivety did not last long. It was my first year working as a bioinformatics researcher for a very motivated and passionate professor. The typical shelf-life of a new ‘idea’ within our team would be around 3-6 months. The requirements and specifications would change frequently. As a nascent research group, we were not too far behind any garage-start-up you would have seen. Oblivious to the Manifesto for Agile Software Development, often I hated the nature of our moving requirements.
It was around that time I started looking around to see how other people are doing it. I picked up some blog posts and sporadic discussions talking about software delivery. Anything I could find on how to deliver faster or at speed would draw me. Some peers hinted we needed to do ‘Agile Development’; else, we won’t keep up with the pace. So I did what anyone would do, start searching for what they were talking about. Sadly, most resources were something ‘too business-y’, and most discussions were way too convoluted for my brain. (Much later, I realised I was suffering from early-onset symptoms what Dave Thomas later discussed in his talk on ‘Agile is Dead’)
Dishearted, I went back to doing what I now know as ‘producing typed waste’. I still remember when I had folders of PHP, shell scripts lying on storage disks. When I switched between projects, I simply copied the files to another directory and define that as a new project—embarrassing examples of poor source code management. Of course, GitHub was still in its early years, and other Version Control Systems were simply too complicated for me.
Nevertheless, I learnt the hard way that managing codebase in shared network drives or DropBox (not sure which one is worse) is borderline crazy. Even for a tiny 2-4 member developer cohort, this was delaying our development.
Applied statistics and computational biology often consist of pulling together many different tools and workflows to produce the final results. One such project included converting algorithms into web interfaces for broader community participation.