It's the same with humans. You CAN give an estimate, but there are plenty of times when you run into an unexpected problems when working on some bigger project. It's even worse when you're trying to diagnose some sort of vague, intermittent problem. Love the times where I'm given a generic error code that leads me down a wild goose chase only for it to be something entirely different.