ci zen

2024-12-28

I have been doing build and ci (continuous integration) related work for the last 4 years out of my ~12 years in the industry in the US. I did this at 2 different companies that shared some similarities and had some stark contrasts regarding their culture and aesthetics of software development practices.

My focus has been mostly around python and ML, and on creating reasonable workflows for researchers to balance speed of iteration with general software engineering best practices.

This winter break, I spent some time thinking about the principles that, in my opinion, help build systems with nice properties in this domain.

This list is very much inspired by pep 20: the zen of python as you can guess from the title of the post.

simple is better than complex
versatile is better than specific
pragmatic is better than versatile
infrastructure should be boring
hackability matters
stable abstractions are valuable
people being able to unblock themselves is important but hard to capture in metrics
python is ok
ugly code that we shipped last week is better than perfect code we will ship next month
one team's velocity should not be penalized because of another team's code without consent