We’ve been writing software at 37signals since 2004. About a year later I bought a new place that came with a little backyard garden. Over the past few years I’ve seen patterns in curious places. Growing plants and building software have a lot more in common than I ever thought.
Plant spurts
When you have a garden one of the things you start to notice are the seasons. I mean really notice the seasons—and micro seasons. Instead of winter, spring, summer, and fall, you notice hibernation, sprouting, prolific growth, rest, growth, rest, flowering, rest, reproduction, transformation, rest, hibernation, etc. If you watch closely you can tell when it’s working on its roots or its flowers or its leaves. If you watch closer you can tell if it’s passive, aggressive, stubborn, clever (vines are really clever), etc.
Software spurts
It recently dawned on me that software grows much in the same way that plants grow. New features are the flowers of the software world. And just as most plants aren’t flowering all year long, software isn’t sprouting features all year long. There’s flowering season. There’s new feature season. There’s infrastructure season.
Sometimes software is working on its roots. Bolstering its infrastructure. It’s growing underground where the public can’t see it. It looks like nothing’s happening, but there’s really a lot going on. Without those roots new features can’t sprout.
And sometimes it’s rest time. Plants rest in the winter. Software often rests in the summer (it’s too nice to work too hard in the summer). Everything can benefit from a deep breath, relaxation, and sleep. Chaotic constant growth and change doesn’t make room for order and organization. Growth requires new energy and new energy requires rest.
Cycles
It’s the downtimes that make you appreciate the uptimes. Winter gives way to spring which leads into summer. When you start to see shoots, new leaves, and nascent blooms you start looking forward to bigger flowers, more growth, wider coverage.
When software’s been resting for awhile, and something new blooms, you look forward to more updates. Development season takes hold, attention gathers, and things start happening. This week there’s improved search, next week there’s a brand new feature, and next week there’s something great that’s entirely unexpected. Software gains momentum and change rolls into more change.
Then the whole cycle begins again.