Writing cattle, not pets

Stealing ideas from server management to help manage the frustration of writing.

In the world of computing, and particularly cloud computing, there is a concept of treating computers as cattle, not pets. This idea refers to the way you think about the services your computers provide, and about the computers that provide those services. Historically, a single server might host a valuable service like email. If that server went down, it was ⚠️🚨RED ALERT🚨⚠️ panic time to get that server back online. Each service and computer had to be nursed along, kept healthy for as long as possible because of the value of the services and data stored on them. That's the "pets" mentality.

shallow focus photography of white shih tzu puppy running on the grass
Photo by Joe Caione / Unsplash

Under the "cattle" mentality, the goal is to have services replicated across several standardized computers that have been configured by scripts and code to be interchangeable. In this way, an individual computer can fail without impacting service availability, and the failing computer can be replaced without human intervention or concern.

The History of Pets vs Cattle and How to Use the Analogy Properly
I have been meaning to write this post for a long time, but one thing or another has gotten in the way. It’s important to me to provide an accurate history,…

A history of the cattle vs. pets principle

One difference between these two is a mindset of scarcity (pets) or abundance (cattle). As computing got cheaper, it was easier to write things in a way that allowed them to be replicated across multiple machines.

This is a shift in attitude I am working toward with my writing. As an academic researcher, one of my primary job duties is to write and publish research papers. These papers go through an often-agonizing process of peer review where they are picked apart by anonymous academics around the world before being accepted or (more often) rejected for publication at the journal they were submitted to. When rejection happens, it is usually frustrating because of the effort that went into preparing the article; I wouldn't submit it in the first place if I didn't think it was good enough for publication, but rejection usually comes with a long list of the reasons somebody thought it wasn't good enough.

Part of the reason for frustration, for me, is the fact that I usually have a "pets" mindset toward the papers I'm working on. They're my babies that I've nurtured through from ideation to experimentation to analysis to completed paper, and as such they're special to me. When one is shown to have debilitating weaknesses (at least in the eyes of a reviewer), it can be hard to acknowledge that because of the effort that I put in to get it where it is.

So now I am trying to cultivate a "cattle" attitude toward the papers I submit. It still takes care to raise a cow, and it still takes work to create a worthwhile research paper. But hopefully by thinking of them as just-another-one, I can divorce my feelings of worth from the papers I submit and focus more on nurturing the herd (my research portfolio). I'm sure it will still be frustrating to get a paper rejected, but if I have others that are still moving forward, the pain can be softened a little.

One of my goals of writing here and publishing more often is to lessen the nervousness to submit things for feedback from others. Not that anybody is reading my posts here, but I can pretend they are, and that helps a little.

That's the hope, anyway.

Thoughts? Join the site to comment below, or discuss the post on LinkedIn.