I didn’t expect the garden to teach me anything about engineering. It did.
The first thing: you can’t rush certain things. A tomato plant doesn’t care about your deadline. You prepare the soil, you water, you wait. The conditions matter more than the urgency. I’ve started thinking about software the same way — some problems need time to be understood before they should be touched.
The feedback loop is slower
In software, I’m used to tight loops. Change something, see the result in seconds. In the garden, you plant and wait weeks to know if you were right.
That slowness is uncomfortable at first. Then it becomes useful. You have to think before you act. You can’t rely on rapid iteration to bail you out of a bad hypothesis.
What grows and what doesn’t
I killed a few things in my first season. Overwatered, under-watered, wrong placement, wrong timing. But the failures taught me more than the successes did.
There’s a concept in gardening: companion planting. Some plants grow better next to specific other plants. Some combinations poison each other. Systems thinking, essentially — the whole environment matters, not just the individual component.
The part engineers miss
Gardens are never done. There’s always something to prune, something coming into season, something that needs attention. You don’t “finish” a garden; you maintain a relationship with it.
I think that’s true of any good system. The code you’re proudest of is probably the code you’ve tended carefully over time — not the code you shipped and forgot.
Turns out the Côte d’Azur is a good place to learn this. The sun is patient.