Last summer my house went through a construction project that required me to move the cottage garden I had lovingly planted in my backyard. While I was sad to move so many plants and some of them didn't make it, the silver lining is that I got to design and plant a whole new garden from the soil up this spring. I thought very hard and read books and drew out how I wanted my garden to look and feel and function. I decided I wanted a pollinator garden so I planned out a balance of mostly long-lived perennials and filled in the spaces with low-risk annuals that I could change my mind about after one growing season.

When it was finally no longer freezing I got to work. I started by doing the hard landscaping and build the infrastructure my garden would live within. I built a bridge and a small deck, moved paving stones and amended the soil so it was ready for planting. The overnight temps warmed, Mother's Day passed (the official go-ahead date for planting in the ground in MN) and plants went in.

At first, while I was proud of all my hard work, my very MVP garden looked a little sparse. All the plants were in their place, but it would take a few weeks for roots to establish, new growth to start, and for the garden to become what I envisioned. Those weeks went by nervously (did I make the right mix of soil? did I plant things too far apart? will these plants be happy here?) but sure enough things started to grow.

But not just the plants I spent hours researching, carefully placing in the garden design plan, and visiting native plant nurseries to find. Weeds! So many weeds joyfully broke through the soil I had measured and fed, growing faster and happier than anything I planted. I have empathy for the weeds that find their way to the garden. They each have their own personality, their own style. They usually come up before anything else, which is a welcome sign of spring after a long winter. I'm not one to bring down any plant's vibes, especially in our very short growing season here in MN. I tend to be more of a let-it-grow-see-what-happens type of chaos-gardener, which I think makes things a little more fun and surprising. However, I had a vision and a plan and some of the weeds spent June starting to threaten my plan.

So now it is July and now I weed.

I was sitting on the flagstone path that goes between my kids' raised beds in the front corner of the garden and all the way through to the lilacs I planted under the windows in the back. I was rhythmically pulling up plants that don't belong where they rooted one at a time (today, mostly palmer amaranth), I felt myself working through the weeds in a way similar to how I've been spending much of my non-gardening time doing lately: building a new product.

I'm currently working with my team at work to build a new product, more or less from the ground up, just like my garden. As exciting as it is, it can sometimes feel daunting with all the possible ways to look at myriad problems that seem to appear from every angle multiple times a day. Starting from nothing means you can't over plan because things change too much, but you also have to have a plan to help people and code move in what you can only hope is the right direction.

This has also been the case with my garden. Over the winter I had certainly made whatever the garden planning equivalent of a PRD is. There were sketches and Figma diagrams and plant lists. I consulted with stakeholders (my family) and SMEs (master gardeners at the farmer's market). And yet as soon as everything went in the ground, plans changed. Decisions were reversed. Things started growing that I wasn't sure if I'd planted or if they'd planted themselves.

Anyone who's launched a digital product might find this occurrence familiar. You make and document decisions and then the feature changes either because a designer changed their mind late in the game or a developer misunderstood the ticket or no one caught a change in QA. A use case appears that you hadn't considered and now you have to make a weird trade-off to hit the deadline. And so something unexpected and outside the plan makes its way into the product and lives there for a while until someone notices or remembers and decides to fix it (or not).

And a software product, made out of code and process, and hundreds or thousands or millions of decisions big and small made by many people (and increasingly machines) also takes on a life of its own. It's not quite as living and breathing a thing as a garden, but it is changing all the time. Things break or get used in an unintended way. New code gets pushed that breaks something else unknowingly. This was the case with another weed, the wood sorrel, which caught my eye that evening when I was weeding on the garden path. Once I had carefully deleted each visible palmer amaranth from my flower beds, I moved onto wood sorrel. It was completely crowding out the creeping thyme I'd planted around each flagstone paver.

That feeling of going through an interface you designed or built and thinking, "didn't we have that feature?" And then looking in the code and finding it! But it doesn't work. That's how I felt about the creeping thyme. I had a vision, but it was blocked by delicate, yet persistent thin green clumps of clover-like leaves with little yellow flowers. I pushed through the soft, citrusy waves of 10-12" high wood sorrel and sure enough there was the creeping thyme inaccessible for the job I had assigned it. It couldn't be stepped on, it couldn't produce its little purple flowers, it couldn't creep. So I spent the rest of the evening pulling wood sorrel, thinking about what this garden is and what it might become. Living alongside it and making small or large decisions along the way to help it become something that works for everyone who uses it.

While I could talk about each facet of my garden forever, there is a point I think and I'll get to it I'm sure. The pace of caring for a garden is slow. It matches the rhythms of the micro seasons and of the weather. In a week with occasional rain I might just walk by it and not spend too much time in the weeds (pun intended). Other days I start doing one task that ends up taking me hours and I get lost in the hard but rewarding work of maintaining it. Most evenings after the kids go to bed I walk the path and visit each garden (yes there are more than just my pollinator garden but I'll leave those for another day). I check in on everything. I notice things I may not act on. The feeling of being with something I created and noticing it's details is restorative and satisfying. And so too is the case with something like a software product. It is not something you make once and never touch again. It needs to be cared for. And most of the time it probably doesn't need to be reviewed and maintained furiously with urgent action being taken with each reported issue. Most of the time a slower pace is not only ok but a better thing for the life of the product.

But what about deadlines! Quarterly OKRs! Urgent requests from leadership! Competition is fierce and if you're not shipping fast you're already losing. This is not a call to stop making things quickly or to double your project estimates to build time in for meditative reflection (although... not a terrible idea imho). The pace at which I complete tasks in my garden is adaptive just like building software features. If my attention isn't split, I get things done faster. If I have to keep stopping because I'm needed elsewhere, things take longer. There are immovable deadlines outside of my control, like the first and last frost. Such is life in gardening and software.

But as we're hitting deadlines and shipping things faster than ever, there is something to be taken from the natural pace of a garden. It can't be built overnight, at least not completely and not well, nor do most people want it to be. If I never stopped to live in it, I would never notice how everything wants or doesn't want to work together, I would just be trying to optimize the same features over and over, likely to the detriment of something that probably doesn't need to be optimized and I'd surely miss the system-level signals.

As I use my garden (to sit and drink coffee—which I'm doing right now—use the flagstone path to weed and water, open and close the chicken wire fence around my daughter's raised bed so she can harvest her carrots) I realize what doesn't work and what needs to change over time and many uses. A particularly active reenactment by my son & husband of the penalty kicks between Paraguay and Germany in the men's world cup became a supported use case and we designed and built a little fence out of stacked birch logs to protect the plants from a rogue ball (I'm looking at you, Jonathan Tah 😬). We use things, and then we make them better.

Maybe the point is this: it's hard to shape a usable and self-supportive system if you don't spend time existing alongside it. The power of observation, continued use, and paying attention can often feel undervalued in the fast-paced world of product development. But of the many things I've learned from gardening and attempted to apply to other areas of life, this is one that feels particularly relevant today. Paying attention feels like a principle both high in value and most at risk of being lost as the speed of our work increases and quality doesn't always increase with it.

So what does that look like? You can't exactly sit inside your software product noticing the bugs crawl around like you can in a garden. But you can dedicate time to use it. Watch other people use it with no particular goal in mind. When you find something that makes you pause, give it some real human thought before telling an agent to go fix it. Hear what everyone says they want the product to be and weigh that with what it means to retain and develop quality. I don't know, hang out in the code, in the interface, in the designs, and just notice things without necessarily acting on them. Pay attention to how it's all working together before deciding what to change. Help others do this too.

Since I cleared the wood sorrel away from the creeping thyme, it has begun to creep again. Now, as I sit on the back steps watching the bees hop from flower to flower, ants crawling busily over the paving stones, the thyme is reaching in the only way it knows how, for the sun and for the cleared space around it, just as I planned. I already see more wood sorrel coming up in between the tiny fragrant leaf clumps of the thyme, but I'll leave it for now. The thyme is doing it's job and so am I by noticing it.

Lessons from Weeding