Estimation of most tasks is really hard. Steps rarely take the expected proportion of time. IO bound operations sometimes take (subjectively) forever. And then you refactor it and the number of steps gets messed up.
But props for building it. Showing monotonically increasing progress is better than nothing.