  A key mission of computer science is to enable people realize their creative
ideas as naturally and painlessly as possible. Software engineering is at the
center of this mission -- software technologies enable reification of ideas
into working systems. As computers become ubiquitous, both in availability and
the aspects of human lives they touch, the quantity and diversity of ideas also
rapidly grow. Our programming systems and technologies need to evolve to make
this reification process -- transforming ideas to software -- as quick and
accessible as possible.
  The goal of this paper is twofold. First, it advocates and highlights the
"transforming ideas to software" mission as a moonshot for software engineering
research. This is a long-term direction for the community, and there is no
silver bullet that can get us there. To make this mission a reality, as a
community, we need to improve the status quo across many dimensions. Thus, the
second goal is to outline a number of directions to modernize our contemporary
programming technologies for decades to come, describe work that has been
undertaken along those vectors, and pinpoint critical challenges.
