As a growing startup with a strong focus on moving fast — adding new features and extending existing product services are part of our daily routine and vital to growth.
But with every new addition, there is always one thing that never changes, the possibility of breaking the product or service. For this, we plan and design every new feature meticulously to make the development phase smoother and reduce the probability of introducing a breaking change.
And let’s face it! Breaking changes will become one of the factors affecting the goals and morale of the team if these are frequent. So this becomes a big question...
There could be an ‘n’ number of factors that can turn a new feature or related code into breaking change. It could be —
Irrespective of factors having a plan to mitigate and minimize the breaking change becomes integral to delivering any feature successfully on time.
So we start by stating the obvious —
Knowing what can result in breaking change is the first step to weed out the breaking changes during the development and code review phase.
Most of the time these factors are closely related to fundamentals of technology - frontend or backend, tools that are used for writing the feature or code. To name a few following are some examples -
Just as knowing what is a breaking change? It is equally important to know what is not a breaking change?
This is important for code reviewers along with independent contributors as this gives confidence that a newly written block isn’t a breaking change, and we can ship it on time.
Some exceptions - adding required query parameters/inputs to an existing endpoint — are breaking change.
Once we know - what is and what is not a breaking change, we can come up with a list of rules which can be included in our development workflows from the very start till the end of delivery of the feature.
and start working towards the possible solution to fix it.
Breaking Change
as a tag for pull requests with GitHub, similarly Breaking-Change
with JIRA and tag
stakeholder dev’s for better visibility.@deprecated
header/badge/tag to give clients (web or app) more time to react.That said above points will only be useful if everyone from the team knows about the feature and changes ahead of time so that it gets reviewed, tested correctly, and finally makes to prod happily.
And as a part of the process, we keep tinkering with this approach to make feature deliveries smooth and perfect so keep an eye for future updates!