December 14, 2018
Gardening has become my stock metaphor for big, long-term projects.
I was just looking at my HOA's financial statements. At the end of last year, we closed down—transplated—all the money from old, legacy accounts at Citibank, to new ones at Bank of America. It was a huge, destructive change, basically ripping all the plants out of the ground and moving them somewhere else.
You have to have a vision, but be comfortable as it evolves. The gardener trims the plants, but they never quite do exactly what you want; they're living things, after all.
Gardening also conveys the sense of maintenance necessary to keep things running; the constant battle to keep the leaves off the ground, the busines trimmed just so, the flowers growing straight, and upright.
Code is also gardening; the same organic feel, the dialog between you and the plants, alternating between fighting back decay, and the delight of watching things grow along the paths you've laid out. Interfaces, class hierarchies and other forms of convention are trellises: structures designed to support mass as they facilitate growth. The senior people lay the tracks, the junior people follow what's been laid.
Another thought about gardening: like fashion, it's never quite "done". There's always more to do—more expansion, more maintenance, more cleaning.
Also, gardening goes at its own pace. You can guide it, but ultimately, the plants have to grow on their own. For me, and perhaps many others, there's nothing so satisfying as seeing the end result of a plan realized over many years. There aren't any shortcuts, which appeals to my sense of incrementalism, and favoring the long term.