> The other problem is that programming is not simply "development", it's research too. Research can be a bottomless hole, and it's also really hard to estimate how much research is needed.
This. As a programmer, I've never been able to successfully explain to my managers about this. It always ends up being a blame on me instead for "not properly assessing and estimating the effort".