CSB: In the [very large] company I work for, there are two very different groups of programmers. There are the programmers that are EEs, working on products that happen to contain software components, and there are CS programmers. The thought process difference between them is, in general, quite stark.
The EE-background SW folks look at the SW task, spend (an often unreasonable amount of) upfront time to study the project, map it out, and then provide a schedule that pretty much matches what the reality ends up being, and get the product (of which SW is a component) out the door on time. And the code they write is crappy, unmaintainable, crap that does exactly what it's supposed to, no more, no less, and they are famous for rejecting any RCR that will break schedule. Engineering management loves them.
The CS-background folks (who cluster in a different group) will provide a poorly though out schedule quickly, and then immediately start missing deadlines. The code they write will be exquisite, maintainable, and it will have every feature and new hotness that anyone comes up with. Sales and marketing loves them, because they can sell whatever they want and promise anything to the customer, but it often misses the market window.
Moral: "Engineering SW" and "CS" mindsets are, in my company, quite different. Just because a CS-type tells you they can't provide a schedule, or the schedule is bunk, doesn't mean it's not possible to provide a schedule for a SW project. You're probably just asking the wrong kind of person. That may be OK, or not, depending on what you're building and what your project is.