Please Don't learn to Code (コーディングを習得しないで)」という、Jeff Atwood氏の書き込みがちょっとした論争を巻き起こしている。

米国では2011年後半から「すべての人がプログラミングを習得しよう」という気運が高まっている。きっかけは、メールを通じて無料で気軽にWebプログラミングを学習できるプログラムを提供するCodecademyだ。ニューヨーク市のMichael Bloomberg市長が、今年の抱負としてCodecacademyでプログラミングを学ぶと宣言し、さらに勢いがついた。そんな、だれもがプログラミングを習得す"べき"というような風潮に、Atwood氏は大きな疑問符を付けている。

メールを通じて、少しずつWebプログラミングを学べるCodecademy

25万人以上のフォロワーを持つブルーンバーグNY市長が、1月5日にコーディング習得を宣言

「私はプログラミングが好きだ。プログラミングが重要なものだと信じてもいる……ただ、それは一部の人にとっての話だ。本当に使いこなすには相当なスキルが必要になる。だから、配管工事について学ぶことを勧めないのと同じように、私はすべての人がプログラミングを習得することを勧めない」(Atwood氏)。もしBloomberg市長がプログラミングの習得を通じて政治家としてステップアップできると考えているなら、政治家の素養になることはプログラミング以外にたくさんあるというわけだ。

Atwood氏の書き込みに対して、デザイナーのSacha Greif氏がすぐに「Please Learn to Code」と反論した。今やコードの知識がなくてもWebサイトを構築できる。しかし、Greif氏に言わせれば、WordPressでテーマを設定するのも"コーディング"である。盲目的にコンピュータの言いなりになるのではなく、どのようにコンピュータが機能しているかをユーザーが少しずつ知ろうとするのも"コードを学ぶこと"だとしている。

Atwood氏と対極の見方を示しているのが、Developer Bootcampを立ち上げたShereef Bishay氏だ。プログラムを組んでもらうためにスキルを持ったプログラマーに頼む現状は、300年ほど前に手紙の代筆を頼んでいたのと同じだと主張する。これから20-30年の間にコーディングは誰もが身につけるべき新たな教養になると予測する。

プログラミングの習得に貴重な時間を費やすのを避けるべきか、ネット社会に生きる現代人の教養として身につけるべきか……あなたはどちらを支持するだろうか?

大事なのはコードではなくソリューション

「Please Don't learn to Code」というAtwood氏と、「Please Learn to Code」というGreif氏。言っていることはまったく反対だが、ソリューションを見据えているという点で2人は共通している。

Atwood氏が懸念するのは、コード信奉やプログラミング中毒に陥ることだ。30年の経歴を持つプロのプログラマーとして同氏は、コードを記述することが仕事と思い込んでいるソフトウエア開発者が多いと指摘する。「彼らの仕事は問題を解決することだ。コードを書いたことを讃えるのではなく、ソリューションを作り出したことを讃えるべきなのだ」と述べる。だから、これからプログラミングを習得しようとしている人たちは、いま直面している問題は何なのか、ソリューションはあるのか、それはコードによって可能なのかをじっくりと考えてみるべきだと勧める。また、より多くのコードが書かれれば、より多くのソリューションが生まれると考えられがちだが、「できるだけコードの記述を少なくする方法を学ぶべきだ。理想はゼロである」というのが、プログラマーとしての同氏の経験則だという。

一方でGreif氏はコーディングがすぐにソリューションに結びつかなかったとしても、問題を解決しようとする姿勢や建設的な考え方を覚えることが、ソリューションへの前進になるとする。

Oracleの損害賠償要求を一蹴した判事

誰もがコーディングを学ぶべきなのか? OracleとGoogleの特許侵害訴訟でも考えさせられることになった。

サンフランシスコ地裁において、Java APIに関するOracleの主張を一部認める判断を陪審員が下したが、その裁判でOracle側の弁護士は、コードのコピーによってGoogleはAndroidを迅速にリリースでき、それがわずか2日程度の短縮だったとしてもコピー行為から600万ドルから700万ドルの価値を得たと主張した。これに対しWilliam Alsup判事は、Oracleが提訴してから侵害されたとするコードを自ら100回以上も書いてみたことを明かした。それぞれの作業は5分とかからなかったという。「私にもできた。あなたにもできる。とてもシンプルなことだ」と述べ、そうした主張(数行のコピーで2日短縮)で、Oracleが法廷損害賠償を引き出そうとするなら心証を害する可能性を指摘した。

Alsup判事はOracle側の弁護士に「あなたは米国で最も優秀な弁護士の1人だが、なぜそのような(根拠のない)議論に持ちこもうとするのか?」と尋ねたという。あたり前のような質問だが、ソフトウエアの著作権関連の訴訟においてすべての裁判官が、この一言を即座に繰り出せるわけではない。近年のモバイル分野における特許訴訟の混乱ぶりが、それをよく示している。Alsup判事は自らコードを書いてソリューションを作り出したりはできないだろうが、裁判官としてコードを習得し、使いこなしたと言える。

かつてはコードを書けるようになるのがコードを学ぶ目的だったが、今はそれがすべてではない。コードはすでに我々の生活や文化に浸透しており、コードがどのような役割を担い、どのようなソリューションを生みだせるかを知るのもまたコードを学ぶことだ。大事なのは、すべての人がコードについてまず知るべきは、後者ということだ。だから同じ「コードを学ぶ」という表現でも、前者の"学ぶ"を指すAtwood氏は「Please Don't learn to Code」と述べ、後者の"学ぶ"を意味するGreif氏は「Please Learn to Code」と主張する。

コードの役割を知るだけでは実用的ではないし、ビジネスの匂いもしない。それをコードの習得と認めない人も多いだろう。しかし今やコードはプログラマーだけでのものではなく、それぞれがコードとの接し方を考えるのがコードを学ぶはじめの一歩である。そこから、コードでの表現に邁進する人も出てくる。外国語の習得だって、ビジネス英語から翻訳者・通訳レベルまで様々である。才能がある人はプロを目指すべきだし、自ら書く必要のない人はコードの役割を把握できる程度に習得するだけでも十分なのだ。

いまAlsup判事をコード習得者と呼ぶ人はいないが、同判事のようにコードを使いこなせる人が増えるのならば、Codecademyのようなプログラムが登場した意義は大きい。