Update: Thanks to Organic Marble's answer I went with Timeshift. I ran into a few difficulties, so I made an answer outlining how to restore to a new drive, in case others run into the same issues.
I want to be able to make backups of my Ubuntu install automatically, during normal use. It's important that this is an automatic process because I'm not going to remember to regularly boot into another environment to make a backup. This rules out most of the things I see suggested, like using dd, or CloneZilla, or gnome-disks.
I'm currently using the Déjà Dup Backup utility that comes with Ubuntu 20.04 to back up my files automatically, but if my hard drive fails I'm afraid I'll be doing a lot of work to get my environment set back up again.
I'm open to creative solutions that give me automatic full-system backups, even if they involve booting into another environment, as long as they happen automatically during my normal daily use.
For example, running my main OS in a virtual machine, and automating snapshots and backups of those VM files. I've seen this suggested offhand in a comment, but don't know how realistic a solution it is.
Edit:
My main concern is hard drive failure. I need to be able to restore onto a new drive.
All I use the device for are personal coding projects. I don't do any hosting or anything from it.
It's important to me that all of my installed software and configuration is backed up, not just my files.
In the title I mentioned Macrium Reflect. The features I find desirable from that software is that it runs on the same drive that it's backing up, automatically, and makes an image that can be completely restored even onto another drive.
Ideally, I'd like to back up my system such that after restoring onto another drive, I could type
localhost/currentproject
into my address bar, and have my current project load. Or open my IDE and see all of my project files. I want it to feel as though my drive never failed.