Is the "last-minute-panic" part of the "nature" of software development?

What is it about many software development projects that cause smart people to suggest that a last-minute-panic is in fact just the nature of doing software development? Someone used nearly those exact words today in an email to me, which spurred me to thinking this evening about the issue in general.

Rarely is the last-minute-panic just a minute, rather it is a week or more of extra stress, long hours, and weekend work. I’ve only ever worked in the software industry, so I can’t compare to other industries that might be creating products. No matter how many books are published about the topic… the panic is still far too common place.

I know I’ve been part of projects where there was this panic, long hours, etc. However, it’s never sat quite right with me — it felt, wrong.

What have you done to combat this issue? Do you follow some particular methodology that nearly eliminates this problem? Or, do you practice feature cutting, or … what? Is doing software development that unpredictable, or is it somehow the nature of software developers …?

I’d really like to hear what you’re doing (successful or otherwise). Leave a comment or link here from your own blog.

(Updated to fix typo and clarify one tiny thing)