For decades, software development has been done manually.
From punching cards in FORTRAN to writing distributed systems in Go, the discipline has remained fundamentally the same: think deeply about a problem, come up with a clever approach (i.e., algorithm) and give the machine a set of instructions to execute.
This method, which could be called “explicit programming,” has been integral to everything from the mainframe to the smartphone, from the internet boom to the mobile revolution. It has helped create new markets and made companies like Apple, Microsoft, Google and Facebook household names.
And yet, something is missing. The intelligent systems envisioned by early Computing Age writers, from Philip Dick’s robot taxi to George Lucas’s C-3PO, are still science fiction. Seemingly simple tasks stubbornly defy automation by even the most brilliant computer scientists. Pundits accuse Silicon Valley, in the face of these challenges, of veering away from fundamental advances to focus on incremental or fad-driven businesses.
That, of course, is about to change. Waymo’s self-driving cars recently passed eight million miles traveled. Microsoft’s translation engine, though not fluent in six million forms of communication, can match human levels of accuracy in Chinese-to-English tasks. And startups are breaking new ground in areas like intelligent assistants, industrial automation, fraud detection and many others.
Individually, these new technologies promise to impact our daily lives. Collectively, they represent a sea change in how we think about software development – and a remarkable departure from the explicit programming model.