farm life · food

On Farming, Systems Thinking and Being an Agricultural Architect

Note: This blog post was mostly written in 2019 and my farm system has changed quite a bit

I’ve been thinking about the intersection of my love of recreational farming and my career in technology. A big part of it is analyzing and setting up systems. To be clear I don’t think I’ve stumbled across anything brilliant by stating “agriculture is about systems”, the revelation is about the root of my enjoyment. I read “The Art of Systems Architecting” which looks at systems architect as a cross-sector discipline which was the catalyst for my brain to churn on this topic. Thank you, Diana Montalion for both recommending this book and your guidance on systems architecture.

What’s the goal?

Both in architecting a farm and a technology solution it is important to start with a goal. That goal needs to be a measurable one as well. Often in both cases it is easy to skip way ahead to implementation such as microservices, isomorphic JavaScript or kubernetes in the tech world. In my experience farming the first implementation people want to jump to is A TRACTOR!!! (I still don’t have a tractor)

My farm goal is to produce as much of our own food possible. While that initial goal is not measurable, it can be converted to something that is measurable. 90% of the food consumed by my household per month is produced on our farm.

Let’s think about the capabilities

Some of the original Floof Farm hens

Let’s start with chickens for example. Most people probably don’t sketch out a model before buying chickens. They probably at least start with thinking about capabilities, egg laying in the case of the chickens.

There were a few different capabilities that were important to me when envisioning our farm. As most people who start farming seem to do I did try to add too many capabilities at once and it took a while to get things to be manageable. This isn’t too unlike not focusing on what is most important to the user in software and taking a bunch of shortcuts to get there and potential releasing something that is buggy and isn’t what people actually wanted.

Our first capabilities

There were three main areas I wanted to focus on at first when building up my system. I wasn’t sure if I was going to be able to raise my own meat or if farming was going to make me a vegetarian, so I wanted to spend a bit more time thinking about that before diving in. The three capabilities I started with were eggs, milk and vegetables. I began working extensive research on these prior to moving and began setting us up for a garden the day we closed on our place.

In my farm adventure it was next important to think about how these capabilities interact and how they are realized. Let’s look specifically at eggs.

The most obvious solution to provide eggs is chickens, but there are considerations to think about. This is especially important in light of the other vegetable capability, chickens can make a mess of a garden quickly. I did end up deciding on chickens but knew I needed to think about the garden.

Into the Details of the Component

In a technology system you can’t look at all the details of the entire system at once, which is why you look at a specific area/component. You can look at it in detail and define the interfaces with the other component. I like to think of it as a web with the level of detail at its highest with the piece you are looking at first and then the more nodes away the other components are the less detail that needs to be defined at that time. There can be some subtly to this since there are flows through the system to consider as part of the overall design.

Chickens or ducks… or an emu? What about a platypus?

The most obvious egg laying solution is chickens. That isn’t to say there aren’t lots of other options. This is really where thinking about how things interact in the system is important. Technically chickens, ducks, emus and platypus produce eggs, but it really for us came to chickens or ducks. I didn’t want an animal that might eviscerate me and I doubted importing platypus was an option.

Once I selected chickens I started to look at the chicken system itself. There is the whole farming system, but then the individual livestock and plants systems as well and how it all fits together. Those interactions between the individual smaller systems is often where we’ve most run into trouble. For example chickens tearing up gardens and dogs tearing up chickens.


Emergence is the idea that the whole system is greater than the sum of its parts. In design this is the best possible outcome. In my chicken example the hope is the chickens stir up the earth, eat pests and provide fertilizer in addition to eggs. Perhaps a garden goes over the areas they have been. This is the beginning of emergence and really what we hoped for with our farm.

Looking Back

I wrote the majority of this blog post 3 years ago prior to the start of the COVID pandemic. Much has changed since then. One of the big things is I decided the goal of growing 90% of my own food was no enjoyable and we leading to burn out. Plus I can purchase items from other local farmers and support the broader local food ecosystem. Now I stick to things I enjoy which is primarily dairy goats and beef. While I don’t come near growing the majority of my food I also am back to enjoying farming.

The lesson is if the goals of your system change maybe the original design doesn’t make sense anymore. We no longer have chickens. We had gotten to the point that due to wild birds eating chicken feed and ravens eating chicken eggs that I hadn’t eaten a chicken egg in 6 months. I decided rather than try to solve for the wild birds and ravens that I would simply purchase eggs from a neighbor. Life is a lot more relaxing now.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s