Micro-refactorings

Today, I saw a LinkedIn post by Peter Morlion, in which he describes micro-refactoring - very small and safe refactors like renaming a variable, moving a method in a file to a more logical place, or adding a comment.

He says that micro-refactors are safer than big refactors and have less chance of introducing a regression, are easy to do, improve the code quality over time, make larger refactorings easier later, increase the readability of your code, and reduce technical debt bit by bit.

What's the issue?

I agree with what Peter says and also encourage people to make small refactors to the code they're working on and follow the "Boy Scout rule".

The main blocker to this I've seen is Git workflows that require people to work in separate branches that need to be reviewed before being merged, as this slows down the process.

As Peter also says, micro-refactorings can be done anytime while working on other tasks. This is hard to do if each refactor requires its own branch and pull request, and the number of pull requests would quickly become unmanageable and take time to review.

If I know that a micro-refactor like renaming a variable is going to take hours, days or weeks to be reviewed and merged, I'd probably be less likely to do the refactor in the first place. Not to mention having to update my working code once it's been merged.

What do I prefer to do?

I prefer to follow trunk-based development where everyone commits to a single branch and continuous integration where everyone is committing, pushing and pulling changes often - removing the need for merging branches and merge conflicts.

Instead of asynchronous code review, I prefer to pair- or mob-program or to rely on automation with CI/CD pipelines.

If the commit before my change is passing the pipeline checks, and they're still passing after my change, they're good to deploy.

Making the process as frictionless as possible encourages people to make small changes and micro-refactors, and to make codebases better a small piece at a time.