I like to try out stuff in projects I am in.
When something doesn't seem right to me, I like to implement a new thing, see if it fits or not for a while, and then, slowly implement it to the rest of the cases.
For example - Lets say that in the UI, I want to try out unidirectional flow. So I take one page, and make it unidirectional.
Once I see it works well, I apply to another page, and another, until it is in all the pages.
However, a lot of times I run into teams that have a mind-set of 'all or nothing'. Meaning - if you want unidirectional flow, implement it to all the pages. Sometimes this requires a debate to convince the change is needed first because it is a lot of effort.
This mentality seems to me as creating an environment where introducing a change is impossible. Which beyond project implications might also have a motivational effect on the team itself.
When should a team undeniably prefer to introduce a change in a growing manner instead of a complete refactor of the code? Or is it always debatable?