If you want to improve the rate at which you can deliver features you need to be able to continuously integrate your changes with the main codebase.
You don't really know what a good implementation looks like until you start writing code! As you discover new information and get a better picture of how your solution fits with the existing codebase, you refactor and improve the initial implementation in small steps. You can't do the "small steps" part if you don't have something already working and covered by tests.
In my experience, working in any non-trivial codebase, it's naive to think that you can just impose your design disregarding what's already there. At least not without going down some deep rabbit holes and requiring major refactorings which can impede your ability to do Continuous Integration in the first place. And that's just bad!
コメント