3 ms·
Because actually getting that commit pushed won't be just clicking "rename method". You'll need to run and pass the presubmits of every single project you made
by jsnell 5y ago
Because actually getting that commit pushed won't be just clicking "rename method". You'll need to run and pass the presubmits of every single project you made code changes in - and the more projects you're changing at once, the less likely it is that the build is green for all of them at the same time. Then you'll need to get code review approvals from the code owners of each of the clients in one go. Hopefully no new users pop up during this process. If some do, you'll need to iterate again.
Then once some trivial refactoring inevitably causes some kind of breakage ("oh, somebody was using reflection on this class"), you'll need to revert the change. That'll be another set of full code reviews from every single owner. Let's hope that in the meanwhile, nobody pushed any commits that depend on your new code.
None of this is a problem if you have a library and two clients. But the story being told is not "we can safely make changes in three projects at once", it's "we can safely make changes in hundreds or thousands of projects". The former is kind of uninteresting. The latter is a fairy tale.
- jvolkman 5y agoThe latter does happen at Google at least. But it requires tooling to reliably make the change (monorepo-aware refactoring tools, basically), and tooling to run all affected tests. Such large changes at Google are often accompanied by a doc outlining the specific process and possible impacts of the change, and many times are given "global approval" by someone that has that ability rather than requiring individual approvals from each affected team.
- jsnell 5y agoThat's not true. The process for the large scale changes at Google is described in the "Sofware Engineering at Google" book[0]. Chapter 22 is all about it. There is tooling, yes, but the goal is exactly the opposite of trying to make a single commit across the whole codebase: > At Google, we’ve long ago abandoned the idea of making sweeping changes across our codebase in these types of large atomic changes. [0] https://abseil.io/resources/swe_at_google.2.pdf https://abseil.io/resources/swe_at_google.2.pdf