「プログラミングは簡単に学べる」という嘘

Quincy Larson

Free Code Campの講師です。Free Code Campではコーディングの学習を、非営利活動を通じて支援しています。

この記事はFreeCodeCampからの翻訳転載です。配信元または著者の許可を得て配信しています。

One does not simply learn to code

プログラミングを学ぶことは簡単なことではありません。それは誰でも知っていることです。

ですが、残念ながら「プログラミングは簡単!」といった文句でビジネスをしようとするマーケターはたくさんいます。彼らのプロダクトを使えば、あるいはそうなるのかもしれませんが。

WWDCキーノートで「プログラミングは難しくない」と言っているのは本当に腹が立ちます。ものすごく難しいですから。初心者を騙してがっかりさせるだけです。

誰かがあなたに対してプログラミングは簡単だと言ってきたのであれば、それは非常に迷惑なことです。下記の三つのシナリオの内どれかに当てはまるのではないでしょうか。

シナリオ1

Aさん「プログラミングを学ぼうとしたことがあるけれど、とても大変で挫折しました。煩わしくなったので、もうプログラミングを学ぼうとは思いません。」

マーケター「プログラミングは簡単です!」

Aさん「えっ、そうなの。一般的にはプログラミングは簡単なのでしょうね。私が馬鹿なだけで。」

シナリオ2

Bさん「プログラミングを勉強してみたいけれど、難しそう。」

マーケター「プログラミングは簡単です!」

Bさん「本当?」

マーケター「ええ。弊社のコース/プログラム/電子書籍をご購入いただければ一ヶ月以内に優秀なプログラマーになれますよ。」

キャプチャcode3

Bさん「わかった、金を持っていけ!」

一ヶ月後

Bさん「プログラミングは簡単だと持っていたけれど、どうやら僕が馬鹿だっただけみたいだ。」

シナリオ3

Cさん「プログラミング学習になんて興味がわきません。管理職として成功していますし、開発が必要なときはそれができる人を誰か雇います。」

マーケター「プログラミングは簡単です!」

Cさん「なるほど、そうなんですね。それなら、そうした開発者の報酬も安く見積もっていいし、そこまで高く評価しなくてもいいですよね。」

脳手術は簡単じゃない

「プログラミングは簡単」と言うのは「脳手術は簡単」とか「小説を書くのは簡単」と言うようなものです。

とあるディナーパーティの席にいた外科医は小説家のマーガレット・アトウッドにこう言いました。

「私はずっと小説を書きたいと思っていたんです。引退して時間ができたら、小説家になろうかと思っています。」

マーガレット・アトウッドはこう答えました。

「偶然ですね、私も引退したら医者になろうと思っているんです。」

それでもマーケターは「プログラミングは簡単です!」「プログラミングは難しくありません!」と言い続けるでしょう。私のお気に入りは、「プログラミングは簡単です!『プログラミングを難しくする何か』が難しいのです!」という言い回しです。

マーケターがこれらの言い回しを多用することによって成し得ることといえば、プログラマー志望の人たち自身に劣等感を感じさせることだけなのです。時に、お金をむしり取りながら。

知識の呪い

残念ながら、プログラミングが簡単だと吹聴するのはマーケターだけではありません。同じことをのたまうベテランの開発者もよく見かけます。

なぜ何千時間もプログラミングに費やしてきた人が、プログラミングは簡単だと言えるのでしょうか。「知識の呪い」と言う認知バイアスに悩まされているからです。

この人たちはプログラミングを知らない状態というのを思い出せなくなっています。もしできたとしても、おそらくは最初にプログラミングしたときの大変さを忘れてしまっているでしょう。

知識の呪いによってベテランの開発者は、初心者に共感できなくなってしまいます。誰もが一度は見たような「プログラミング入門」のGoogle検索結果はその共感の欠如の最たる例です。

大体のプログラミングのチュートリアルはこんな感じ

Googleの検索結果で見つけたようなチュートリアルで、謎めいたエラーやあいまいさに脱線させられることなく最後まで行けたことがあったでしょうか?

最悪なパターンは著者が無意識のうちにチュートリアルの文中に「言うまでもなく」「簡単に」「単に」などの表現を使うことです。

30分間チュートリアルに没頭した挙句「単にSalesforceのAPIと統合するだけ」や「ただAWSにデプロイするだけ」などと書かれたステップでつまづくことほどイライラすることはありません。

そしてこういうことに出くわしたときこそ、脳裏に無数のマーケターの声が響き渡るのです。「プログラミングは簡単です!」と。

数週間前に会ったベテランの開発者たちがあなたを勇気づけようと「プログラミングは簡単だよ」と言っていたのを思い出すことでしょう。

プログラミングを簡単にやってのけるハリウッド映画のハッキングシーンなどの悪例もフラッシュバックしてしまうでしょう。

そうなる前に、自分自身の叫び声を聞き、立ち上がって

(╯°□°)╯︵ ┻━┻

としたくなる気分になるでしょう。

大丈夫です。深呼吸しましょう。プログラミングは簡単ではありません。プログラミングは難しいのです。みんな知っています。

1-obdzffpvhb6gk3_2nylneg

映画などでのプログラミングと現実でのプログラミングの違い

それでも、あなたはエリートハッカーのようなスキルをご所望かもしれません。黒地に無数の緑色の光が浮かぶモニターを前に、自分の知恵だけでバグを処理してやろうと意気込むかもしれません。

キャプチャcode5

いいでしょう、ではその夢を追ってみましょう。ハリウッド映画のエリートプログラマーのようになってみましょう。ちょっとの時間でもそれがどのようなものか実感してみましょう。

ステップ1:電気を消し、襟を立て、パイロット用サングラスをかけます

ステップ2:エナジードリンクをがぶ飲みし、缶を握りつぶし、肩越しに投げ捨てます

ステップ3:このサイトを開き、出来る限りの早さでキーボードを叩きましょう

力に満ちたファンタジーの完成です。

少しは気が晴れたでしょうか? 私たちが築き上げてきたソフトウェア開発が馬鹿馬鹿しく思えたでしょうか?

さて、このような幻想を取り払った上で、英語の中で最も狡猾な単語について語ることにしましょう。

何事も単純ということはない

チュートリアルで「簡単に」といった言葉に出くわした場合、そこではある一定の知識が前提とされていると思ったほうがいいでしょう。

おそらくチュートリアルの作者は、あなたが同じようなプログラミングをしたことがあり、チュートリアルを参考程度に使っていると想定しているのです。作者は自分たちと同じような読者を想定しつつ、チュートリアルを作成したのでしょう。

どちらにせよ、そのチュートリアルがあなたのようなスキルの人のためにデザインされていない可能性が高いでしょう。

ゆえに、以下のようなことをルールとしましょう。

「簡単に」という言葉をチュートリアルに使わないこと、「簡単に」という言葉を使うようなチュートリアルを使わないこと

これを学び、知り、肝に銘じましょう。

しかしそれでも、Google検索に時間を費やしていると、作者がうかつに「簡単に」などという言葉を使っているようなチュートリアルページを踏んでしまうこともある思います。

そのような人のために、Albert Meija氏はチュートリアル内の「Simply(簡単に)」という言葉を発見し、このチュートリアルは初心者向きではないと警告を出すChrome拡張機能を開発しました。

キャプチャcode6

このChrome拡張機能はことわざで言うところの「坑道のカナリヤ」のように、ユーザーがチュートリアルの中に深く入り込んでしまう前に、「簡単に」と言う言葉の存在を知らせてくれます。厳しいプログラミングの道を進むには、このような便利機能などを使うのも手かもしれません。(中略)

まとめ

次にお会いするときまで、弱気にならず、妄言を信じないようにして下さい。プログラミング学習は難しいものです。ノイズを排除し、食らいついて、結果を得ましょう。


イベント