git co master
git co my-branch -- .
git add -up . # select changes relevant to first pr
git commit
git reset HEAD --hard
# and again...e.g. first pass adds a new screen and just dumps the output
second pass adds input fields and controls
next pass adds validation
then add animations
etc
1. Frequently old code needs to be touched or refactored. Feature flag would not be enough.
2. Even feature flag itself can be a risky addition, and might affect existing customer usage.
Most of the time old code does need to be touched, there really aren't those perfect new isolated features, at least in my experience.
For example, I'm not approving anything without input validation (frontend or backend). I have no idea if you're actually going to add validation later before the fflag is removed. "Trust me bro" doesn't work for me.
Feature flags don’t mean throwing the baby out with the bathwater.
Kind of.
Atomic commits are hard.
The original post describing it: https://martinfowler.com/bliki/StranglerFigApplication.html
The main issue is humans,
1. Do not want to read long things, slowing down approvals since no one wants to touch it
2. Cannot effectively review long things and something is more likely to slip past.
The worst kind of peer review happens on PRs that are thousands of lines because nobody wants to read all that and things will be missed. Where I have seen successful code review is where people break code into reviewable bits, and those individual reviews are so fast that they actually end up bring completed faster than if it had been one giant PR.