プログラミング言語を用いて開発が行われる従来のソフトウェアを「Software 1.0」とすると、その次にやってくる「Software 2.0」はニューラルネットワークで構成され、プログラマの仕事はニューラルネットワークの学習に使うデータの収集などになっていくだろう。

テスラのAI部門長(Director of AI at Tesla)を務めるAndrej Karpathy氏が自身のブログのエントリ「Software 2.0」でそうした意見を記し、海外で話題になっています。
http://www.publickey1.jp/2017/software20_01.gif

Andrej Karpathy氏は、スタンフォード大学で機械学習を学び(教師は現在GoogleでAIと機械学習のチーフサイエンティストであるFei-Fei Li氏とのこと)、その後OpenAI社でコンピュータによる画像分析の研究者を経たのちに、現在TeslaのAI部門長として自動運転の実現に取り組んでいる人物です。

Andrej Karpathy氏は「Software 2.0」について次のように書いています。
Software 2.0はニューラルネットワークの重み付けとして記述される。しかしそれを人間が記述することはない。なぜなら多くの重み付けがそこにはあるため(典型的なネットワークでは数百万になるだろう)、直接その重み付けを記述するのは困難だからだ(私は試した)。
その代わり、私たちは望ましいプログラムの振る舞いのための制限などを規定する(例えば入力と出力のサンプルデータのペアなど)ことや、その制限を満たすプログラムを探索するためにコンピュータリソースを用いるといったことになる。

なぜKarpathy氏がSoftware 2.0の台頭を予測するかというと、それは現実世界の問題解決においては、プログラムを書くよりも関連するデータを集める方がずっと簡単だからだといいます。だからコードを記述する「Software 1.0」から、データを学習させる「Software 2.0」へ向かうのだと。

そこで将来のプログラマの仕事は、コードを書くことではなく、データを集めることなどになっていくと。

A large portion of programmers of tomorrow do not maintain complex software repositories, write intricate programs, or analyze their running times. They collect, clean, manipulate, label, analyze and visualize data that feeds neural networks.
将来、プログラマの仕事の大部分は、複雑なソフトウェアリポジトリの維持やプログラミングや実行時間を分析することではない。ニューラルネットワークに与えるためのデータを集め、整理し、操作し、ラベル付けや分析、ビジュアル化などを行うのだ。
http://www.publickey1.jp/blog/17/ai_software_20.html