A good software engineer will know that there are limits to his capabilities, so my point is that in practice it's useless to differentiate between "merely difficult and potentially expensive and risky investments of time" and "knowably impossible", because, with the resources at hand, the former will, in fact, be impossible.
> True, but software engineering depends on computer science, and, as in any form of engineering, understanding the well-known outer theoretical limits of what can be done is pretty important to engineering.
I disagree - you can get by very well by understanding the inner, practical limits. Again, just like an auto-mechanical engineer: He doesn't need to understand the details of combustion or the process of refining oil, just enough to understand it works in the context of his domain: engineering cars. On the other hand, he also needs to know a little about suspension (but not the calculus of the harmonic oscillator) and enough metallurgy to weld the chassis safely.
And don't get me started on computer scientists that can't code.