Yeah that's what I'm doing, upfront work & code review. But it drastically slowing down the dev speed.
It's hard to gauge dev speed, putting in the thought upfront sometimes seems worth it, other times I just fire off some idea and it brings back more things to think about, which I would have spent a bunch of time figuring out where the gap came from. Being involved in the iteration still makes a ton of sense to me. I think some of what we are doing now is figuring out when/where to use this, which is really only gained through experience. It's super hard to explain, like intuitions we have about various things we do in life.