I would not trust an non-deterministic system to do a refactor on a production system -- I would have to review the whole thing. Isn't it quicker to just do it myself with my regular deterministic tools?
back
2 comments
I’m going to start calling all of my co-workers non-deterministic systems.
The difference is that your co-workers sign on their own work -- if it breaks, it's their responsibility. If you commit some code, and it breaks, it's on you, no matter which fancy tool you used to write it.
Generally if you write some code and it breaks, your whole team has some fault in its release mechanism, and that's group owned
I would absolutely trust a non-deterministic system to refactor a production system... if that system had a robust set of unit tests and I was willing to commit to reviewing the proposed changes.
Without thorough automated tests I wouldn't trust myself to be able to effectively review the code.
Some refactoring is at the block level, and so would generally not affect unit tests. But most refactoring is at a functional level, so only the integration and functional tests are ever safe, and even then sometimes not.