Software engineering has become the routine assembly of standard components into mundane features. Nonetheless, bullpens all over the U.S. are crammed with well-paid drones tapping out easily conceivable, trivially executed instructions for web browsers and cell phones. There was a time when software was challenging and interesting. When did that change and why? Can software be restored to an engineering discipline and if so, how would that benefit businesses and consumers? This book explores that question and proposes options for making software engineering challenging and truly productive.