Enjoying the journey
The idea is good, but it doesn’t work for us because of blah.. blah.. blah..
I usually hear this as a response to my talk about the techniques for Continuous Delivery such as Parallel change or Trunk Based Development.
The reasons are mostly:
- It works for X domain, but our customers/team is different
- It doesn’t scale. Our team/codebase/database is big. It works for smaller team/codebase/database.
I respect the reasoning. And I genuinely want to believe that the reasonings are right. But many times I feel that it is easy to reject ideas because it is new and the change is threatening us.
Refactoring and Continuous Delivery are two ideas that had a significant impact on how I deliver software. Both IMO, fundamentally is about achieving something meaningful by a series of small steps.
I learned that the same concept could be applied in other areas too. As Seth Godin says, the critical question is not — Is it done?. Instead, the question is — when is it good enough to ship? Because it’s never done.
Small steps are simple, but not easy. It requires:
- Defining “good enough” and continually improving it
- Enjoying the journey — each shipping
I started realising recently that the second one, enjoying each step, is tough too.
Steve Pavlina, in the article — Enjoying the journey — refers to four elements that need to work in harmony for us to enjoy the journey of achieving something bigger.
- Need = what you must do
- Talent = what you can do
- Passion = what you love to do
- Purpose = what you should do
I see the correlation with software engineering practices such as Refactoring or doing anything in small steps. Enjoyment comes when one feels the need for improving, be the code or the product, connect it to the purpose — serving customers better— and has the talent to do it.
So bring the four into harmony, and start enjoying the journey. Because the journey is the reward.