This document discusses the evolution of software engineering and some historical software failures. It begins by noting how software has become more complex over time, with graphical interfaces and distributed architectures. It then summarizes several major software failures from the past, including the Y2K bug, failures of the Patriot missile system, an accounting system replacement project, and the Ariane 5 rocket explosion. It discusses how software quality is not improving at the same rate as hardware. It notes there is no "silver bullet" that will dramatically improve software productivity and reliability. It concludes that software impacts many areas of life but that bugs are still common due to rushed development and insufficient testing.