I am a Software Engineer, and most every big project I worked on (Digital, HP, Lucent, Dell, Oracle) at one time or another needed to be scrapped and rewritten. Generally speaking, it's because there wasn't enough time up front to understand all the requirements and design something solid...