The main point here is: If you were to know how long the process takes to complete, which is a prerequisite to average out the movement of the bar over time, so that it moves continously and smoothly, you already would have done the calculations that the progress bar is supposed to give visibility to. So at the point where you know how long it all would take, you are actually done computing. That is why you can never have a smooth progress-bar.