A couple months ago I started growing a vegetable garden at home with my girlfriend. It’s been a great experience. She’s always been into plants, we have lots of them around the house but never had we tried to grow food. I think the fact that I can get something out of the experience that is more than just aesthetic but also functional (I can eat the vegetables) has made it more appealing for me.
There have been some experiences so far that I somehow can relate with developing a software project.
A garden needs continuous care just like a software project. I need to constantly take care of it, I need to water it constantly just like a project needs your constant development.
As it grows some of the plants leaves start looking bad and so they need to be trimmed, just like in any of our projects you need to keep your code tidy and keep doing small refactorings. If I don’t trim the plants then they start loosing strength, the bad leaves consume energy from the plant, the same as rusty and buggy code drain energy from your project.
Since we’re very new at this we’ve made plenty of mistakes, giving the plants too much water or too little, not knowing exactly how to cut the plants, etc. The same as starting to use a new framework or library and you still don’t know how to do it “the right way” and make many mistakes. Fortunately google is as helpful to find information about gardening as it is to help you find the right answers about development.
Some time ago we got a plague in our tomato plants, some bugs (literally) are attacking it. When I noticed it I felt very sad. I’ve been working a lot of my garden and now some ugly bugs are destroying it. I think any software developer can relate to this one. Anyway, although some damage has been made, I’ve bought some ecological pesticide and now things are starting to get better. Sometimes you can only learn the lessons the hard way. My immediate reaction was to go and buy anything that would kill the bugs but we needed something that would kill the pest and allow us to be able to eat the vegetables later. When working on a software project we want to solve bugs very quickly but we have to keep in mind as well the long term goals and try to find the right solution. It’s best to find the right solution and avoid something that could cause more harm than good.
And finally as with any software project what a great feeling it was when we made a deployment. One of the lettuces had fully grown and it was ready to eat. I can’t describe the nice warm, fuzzy feeling I had to eat something that I helped to grow. It’s such a good feeling to enjoy something you’ve invested your time and effort into it. Besides the lettuce was really fresh (can it get any more fresh?) and crunchy.
I hope to keep growing more vegetables, learn about them and get better at it, just like with any technology.
My recommendation, start growing your own small vegetable garden, I think you can learn a lot about yourself by doing it.