If it hurts, do it more often
One of my “key” learnings from the book “Continuous Delivery” is “If it hurts, do it more often”. Quoting Jez Humble:
Bear in mind: continuous delivery is not magic. It’s about continuous, daily improvement — the constant discipline of pursuing higher performance by following the heuristic “if it hurts, do it more often, and bring the pain forward.”
Keeping the above in mind, practising Continuous Delivery means:
- Use Automated Tests to make testing less painful
- Practice Continuous Integration to make integrations smoother
- Setup Deployment Pipeline to make deployments repeatable and reliable
And other activities can be “continuous“ too. Continuous planning, constant communication with customers, continuous refactoring etc.
When we try to avoid difficulties we face increasing complexity. In other words, the complexity reduces if we do difficult tasks often.. The reason can be that we get used to the pains :).
Martin Fowler in the post Frequency Reduces Difficulty analyses the reasons:
- Smaller chunks — Decomposing bigger chunks reduce the risk. Database Refactoring is a great example here. Rather than doing a lot of changes together, breaking them into smaller steps makes it easier to correct and reversible.
- Feedback — Feedback, from the architecture or through conversations with our customers, helps us to learn and to correct actions. If we increase the frequency of feedback, we can frequently correct our actions too.
- Practice — When you do something frequently, it improves the fluency. It’s often said that the key to getting good surgery is to find a surgeon who does the procedure frequently. And we can automate the tasks once we are familiar with the tasks. Automation improves the speed and reduces the margin of errors.
A crucial conversation is a discussion between two or more people where stakes are high, opinions vary, and emotions run strong. When we face crucial conversations, we can do one of three things: We can avoid them, we can face them and handle them poorly, or we can face them and handle them well.
In the book Crucial Conversations, the authors refer silence and violence as symptoms of a conversation moving towards crucial conversation. When things are at stake and emotions are high, people either avoid them by keeping silence or handle them poorly through violence.
Both silence and violence become a hindrance for feedback. And the first step towards handling crucial conversation is bringing in mutual purpose and mutual respect.
The heuristic “if it hurts, do it more often, and bring the pain forward” of Continuous Delivery has a lot of correlation with how we handle pain or failures. When something goes wrong, we should be analysing the reason for the same. Also, see how we can improve the systems to avoid these in the future. And we should not be punishing ourselves too.
It is about Resiliency — resilient people and resilient systems. We need to practice and improve ourselves and systems to handle pains. And that can happen only when there are common shared vision and respect among the team members.