We write the code and knock out most of the bugs. Version 1.0 is no more than a first draft, minus most of the problems. Though many authors suggest developing version 1.0 of the software, then chucking it and doing it again, now correctly based on what was learned from the first goaround, I doubt that many of us will often have that opportunity. Most of us love the challenge of making something work, but want to move on to bigger and better things, not repeat our earlier efforts. Even hardware is moving away from conventional prototypes.
Reprogrammable logic means the hardware is nothing more than software.
Slap some smart chips on the board and build the first production run. Yet some level of hardware and software prototyping remains. Don't believe all of the hardware hype - an awful lot of us still build complicated designs using low integration PALs and logic. We're the high tech civil engineers, though at least we have the luxury of fixing mistakes in our creations before releasing the product to the cruel world of users. Though we're supposed to build the system right the first time, we're caught in a struggle between the computer's need for perfect instructions, and marketing's less than clear product definitions.