Probably my biggest task at work this year was upgrading a legacy app from 5.6 to 8.1. After toying around with trying to do incremental version upgrades, I ended up doing it in one fell swoop, in part because the the Dockerized architecture we use and not wanting to have to jump around with different Docker images and such.
In 20/20 hindsight, a more incremental approach might have been better, at least for the guy who did the code review of my Github pull request that had literally hundreds of changed files. 🙂 (Okay, a big chunk of those were when I just pulled down the latest stable version of SimpleSAMLphp to replace the php 5 version we had...and we didn't use compose or anything, just stuck the code into a directory of the application.)
It ended up being a big task, but the result is better performance (and along with the major Apache update, better security), and probably at least a few dozen files completely removed as I came to realize which ones were no longer in use.
Hmm...that reminds me, I should remember to check if there's an official, stable PHP 8.2 Docker image yet that meets what we need.