I think it is particularly fascinating to look at libraries for this, such as Apple’s Progress class. It’s actually relatively simple: there’s total units of work, units of work complete, and setting both to 0 means it doesn’t actually claim to know how much is left. But the really interesting part is the ability to add additional progress trackers <b>inside</b> each other: progress bars within progress bars, so you can break complicated tasks into as many sections as you want. The user generally doesn’t see that, but it can make fine-tuning and accounting for specific variables a lot more viable.