It’s the end of spring/early summer in the northern hemisphere, so it’s time to plan the vegetable garden again. I was putting some tomatoes in the other day and musing about the similarities between gardening and software development. To wit:
- I have a lot of hesitancy about planting–especially perennials. It feels so permanent, and I might screw things up, and maybe I should go back to the drawing board, or maybe just do it next weekend…. But just starting makes the problem so much easier–it loses its weight. Your garden will never be perfect, but an imperfect garden is 100% better than no garden. Similarly, when confronted with a new project or feature, half the battle is just starting.
- You will have ample opportunity to make mistakes in both gardening and software development, so feel free to learn from them. I don’t know where I heard it, but “it’s fine to make mistakes, just try not to make the same ones.”
- Automate, automate, automate. The more you can rely on machinery to free you from the drudge of gardening, the more you can rest assured that you will have a great crop. Similarly, the more you can rely on automated testing and scripts, the more complex you can make systems, and the more freely you can change them.
- Trying something different is fun. I planted artichokes this year. I also played around with easyrec. I can’t speak for the artichokes yet, but exploring a new tool was interesting and fun. Look up from your code once and a while and visit hackernews (thanks to Jeff Beard for turning me on to that resource) to find something new to learn about.
I think that many software developers are obsessed with passive income, but I think that gardening is the original passive income stream–food grown for you while you are doing something else!