For decades, software engineering has "dreamed an impossible dream": to build software from components as easily as children can build houses out of Lego bricks. In this talk, I will explore an imaginary world where that dream has been realised --- where software parts can be found in worldwide repositories, where most software is built by reusing existing software, and where software engineering has finally been freed from the mundane necessity of programming. I will explore the philosophical and empirical underpinnings of this dream, and consider how software engineers and computer sciences could reposition themselves to respond to this imaginary world (should it ever come to pass).