Factory reset is an action of returning a device into its initial state when it was still in a package. There are many reasons for factory reset:
If you value your data, do your best first to recover them such as backing them up into an SD card, connecting the Android to a computer using USB type C, or even using Android SDK. If no matter, you need the data, the furthest you can go is to boot into recovery and choose wipe cache partition instead of factory reset. If all else fails then go to a professional. Otherwise, the last thing to do is to perform factory reset:
After that is should be almost back to how it was when you bought it. I suggest to update the Android firmware and update the apps. Finally, install any apps you need.
For a long time, Windows have a system restore function where ideally returns the installation condition of your Windows to a certain date. This does not delete your personal data but uninstall applications that does not exist on the chosen date. I do not know what else is affected such as services, policies, settings, and registry so do leave a comment if you know. If you never explore this feature before, I suggest you do now and at least one time on every new Windows devices to create at least one restore point or when in the future you want to clean your Windows, you have to uninstall software manually or reinstall the Windows operating system.
Type system restore or create restore point on the search bar or find system properties.
Go to system protection. Turn on an configure restore setting for each disk. Create a restore point if you have not. When the time comes, choose system restore to restore your Windows to a certain point.
Linux is robust enough that I never needed to rely on any system restore or I became more experienced because I used it often and I know how to handle problems manually without needing to restore. If not, backing up my files and reinstalling the operating system was easy enough. However, I found two application on Debian based Linux for system restore and there maybe more out there.
In new Ubuntu 20.04 LTS, I found Time Shift which is also available on MacOS. It is simple, all you need is to install and run the GUI.
sudo apt install timeshift
If it is not available on your repository then add the repository manually or download and compile manually from its Github.
sudo add-apt-repository -y ppa:teejee2008/timeshift sudo apt update sudo apt install timeshift
An older software on Ubuntu is Systemback.
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 382003C2C8B7B4AB813E915B14E4942973C62A1B sudo add-apt-repository "deb http://ppa.launchpad.net/nemh/systemback/ubuntu xenial main" sudo apt update sudo apt install systemback