The idea of software rotting might seem weird but it is an actual concept. The main way this happens is from installing too many programs over time. This might be done by installing free, trial, or beta software. Another source of installs are program updates. Even if you do not install many programs, most programs will need to install updates.
So what specifically causes software rot? Most programs will install fine for the first time but usually they do not remove themselves that well. They usually leave tons of stuff littered on the file system and registry. It can be difficult or impossible to track every thing that is left behind. In some cases the only way to make sure everything is gone may be to “nuke from orbit” or reinstall the operating system and start over. Sometimes a bad uninstall can even cause problems reinstalling. Some programs especially trialware will intentionally leave items behind to prevent you from reusing the program.
The situation is almost like inviting somebody over your house to stay as a guest. When the person leaves your house, he leaves a lot of his stuff behind you are left to clean up. There are a lot of programs like registry cleaners that claim to cleanup your system. They take a long time and there is no guarantee of success. That would be like inviting someone who has never been to your house to restore your house to how it was before.
You could also have a backup or use a program that allows you to restore to a point in the past or try/decide changes. This gets messy if you install multiple programs over a period of time and/or can’t decide right away to keep or discard something. Over time a fast computer is slowed down by old software remnants it will never need. As a result some people get in a habit of reinstalling Windows after a period of time. Ideally it would be nice to have a way to ensure uninstallers removed everything.