I think people are relatively good at estimating how long it will take to develop something assuming there aren't any issues along the way. "Build a model for x" should take N amount of time. Easy peezy. However, under the assumption that "at least one thing will not go as planned" could mean anywhere from 1 to 20 (e.g.) things going wrong. Realistically, each issue type has its own skewed distribution of time to resolve (not normal) and issues are likely not independent from each other, thus making the effort to accuractly predict time to completion a non trivial endeavor. Thus, developers cannot accurately estimate time to completion.