2011 was The Year of Additions. We added to our garden: new perennial bed, new mini-orchard, new chickens, two new coops for aforementioned chickens, and a couple new raised beds. We added this blog, and with it a sizable commitment and a wonderful community of like-minded folks. And late in 2010 of course, we had added this guy:
So what does that make 2012? The Year of Refactoring.
All that growth was great fun – and the results were wonderful and will pay dividends in food, eggs and joy for years to come. But growth comes at a cost of more than sore backs, chafed hands and the fatigue of a newborn. It comes at a certain cost in chaos.
Our irrigation system, for example, seemed like overkill seven years ago. But as we’ve expanded our garden in size and variety, the irrigation system has convulsed through a host of of oh-crap-can-we-get-this-irrigated-so-we-can-leave-for-a-week-in-July? projects. Our “overkill” system is now an undersized kluge of hoses, hose doublers, ad-hoc arrangements of timers from big box stores and oscillating sprinklers. What used to be a fairly precise system of soaker hoses and individual bed spigots has become, in growth, a hosed-up mess.
That’s no way to run a ship or a garden, so my 2012 list includes reviewing the whole system: how can we most effectively deliver the right amount of moisture to the right plants with a minimum of waste or out-of-pocket expense, and how can we incorporate rainwater catchment (a trickier proposition than you might think in an area that is, supposedly, always raining)?
But this isn’t just about irrigation. There’s a fence to build so our chickens have a more secure forage space and stay the hell out of the kale. There’s some wiring in the storage shed to wrap up. There is toddler-proofing our not-totally-enclosed yard. There is converting the coop to a sand-bed system. There’s some painting and finish work to be done in the shed.
Time to refactor the garden.
Refactoring is a coder’s term, born among agile and rapid development methodologies, for going back and cleaning up your shit. This shit cleaning might mean a methodical rewrite of hastily constructed code or just some polishing and final review, but it is a planned and anticipated action, an acknowledged and necessary step of development.
I love the word for how it gives credence and gravitas to an easily overlooked part of creation. It codifies the need to clean up missed details, skipped steps, kluges, workarounds, and even downright embarrassing breakdowns in professionalism that occur from time to time. It accepts that unanticipated problems and unexpected solutions are part of the chaotic nature of the creative building and growing process itself.
The engineer in me likes systems to be elegant – only as complex as absolutely necessary to do the task, but no more complex. Growth tends to force everything from garden irrigation to Microsoft software (especially Microsoft software, actually) to stack new solution on top of old solution on top of older solution until everything is a mess of unnecessary complications. Refactoring honors the necessity of periodically going in and breaking that complexity back down to an elegant, planned simplicity.
Refactoring isn’t maintenance or general repair – I wouldn’t list the re-mulching of our ornamental beds or the fixing of our front fence gate or the building of a new worm bin as refactoring projects. Instead, it’s the deliberate tying up of lose ends.
Is refactoring going to be as fun or rewarding as building things in the first place, slamming the first few boards up or posts in the ground? Of course not. The hidden re-arrangement of some wires or pipes in the irrigation system doesn’t have the same end-of-day panache, the same “hey, time for a homebrew!” sense of accomplishment as does building a 300 square foot perennial bed out of a ton of juniper timbers.
Refactoring can be frustrating because it’ll involve revisiting projects that I’d already mentally classified as “done.” The chicken coop is “done” so I really don’t want to think of a way to fix the straw bedding so it doesn’t prevent the door from closing. Retrenching a path area we’ve already mulched – multiple times – to lay new irrigation pipe isn’t my idea of a fun weekend. But these little steps are necessary to keep the homestead running smoothly and efficiently.
This is a pattern I’d like to see us settle in to, a pattern that is an essential part of many development lifecycle management approaches: iterate between periods of design, development, evaluation, and refactoring.
What in your garden needs a little refactoring this year?1