With five days to go until Drupal 8's end of life (on November 2, 2021), now is a good time to take stock of your Drupal 8 sites' modules. Use Upgrade Status to check for environment and module compatibility with Drupal 9.
If you took my advice a couple days ago and took on co-maintainership of a project, you may be wondering about the fastest way to get drupal.org projects Drupal 9 compatible. Last year, we introduced the Project Update Bot that submits compatibility issues with patches to drupal.org projects. If it detects all compatibility issues identified are fixed, it will also suggest updating the core compatibility information for the project within the same patch. Committing such patches will potentially entirely fix extension compatibility. Hundreds of those issues have been reviewed and marked as tested by folks in the community and a lot more are waiting for review or are under discussion.
For your own custom code, I highly advise that you use the tools behind the update bot, specifically the Drupal Rector tool funded by Palantir.net. It will attempt to fix as many deprecated API uses as possible. According to our analysis of all contributed projects, almost half of all identified Drupal 9 incompatibility issues on drupal.org are covered by Drupal Rector automated fixes. So running Drupal Rector on your own code first will save you a lot of manual work and time. Upgrade Status will help identify the rest of the problems too and link to documentation to help fix them.
You can and should make all of these changes on your Drupal 8 site, given that the fixed code will keep running fine on Drupal 8. Once you updated contributed projects used on your site, fixed your custom code and ensured a compatible environment, you can upgrade to Drupal 9.