*Gene Michael Stover* at http://www.lisp-p.org/controversy
Good software development depends on good software developers: programmers, analysts, managers, testers, & others. Hell, it even depends on good customers.
Processes can remove only so much of the risk of software development. Once you've removed all the risk you can, you must rely on the skills of your people, & they will need to do some hacking.
Hacking is experimental programming to test theories & algorithms, and to work your way through libraries, APIs, protocols, & other tools. There will be kinks in the works for which you cannot plan. The only way to find them is to hack through it. Bottom-up implementation. That's hacking, & you can't develop most programs without it.
The only program which you can design before you code is the program you've written so many times that you know everything it needs to do. (Nope, you can't always put it in a reusable library. Sometimes, you have to write from scratch.) That's the only program you can design completely before you code. And why is that? It's because you've done all your hacking on your previous implementations!
For what it's worth, I don't believe the software development crisis is a crisis. It's just a fact that most software development these days is bad software development. If we never come to the day when most software development is good software development, life as we know it will still continue. Trust me; I know these things.
Inspiration: Gene Michael Stover