勉強ができるのに社会で活躍できない人

数学がすごくできるのにプログラミングができない人

東大数学修士や物理博士のように、数学がすごい得意なのにも関わらずプログラミングが上手でない人は少なくありません。

私としてはプログラミングの方が圧倒的に数学よりも簡単だと思うのでとても不思議でした。

これに関して最近一つの答えが出て、それは論理的に演繹的に思考することが得意でも、帰納的に思考することが苦手な人がいるということです。

プログラミングができない人を一言でいえば、デバッグ(つまり意図していない挙動の原因を突き止めること)が下手な人です。

デバッグを効率的にやるには、本来得られるはずの結果と実際に得られる結果の違いから、原因を遡って突き詰めていくべきですが、デバッグの下手な人は自分の書いたプログラムを最初から読み直して問題を探しだそうとします。

しかしそのプログラム自体、自分がそもそも正しいと思って書いたものなので、書いた時と同じ方法で間違いを見つけようとするのは明らかに筋が悪いです。

 

定理を適用して解けるような問題は現実社会にはほとんどない

高校で扱われるようなコンピュータを使わないで解ける数学や物理の問題は、前提条件を受け入れればあとは論理だけで演繹的に解けるものばかりです[ref]余談ですが高校で習う数学的帰納法は『帰納』と名前に入っていますが演繹的なアプローチです。[/ref]。

しかしコンピュータを使わないで演繹的に解けるような単純な問題は、現実の科学や社会問題にはあまり存在せず、多くの問題はコンピュータを使って帰納的に解きます。(そういう意味で、高校数学に出てくる積分や大学学部の微分方程式を、複雑な定理を用いて手で計算するのは実用的にはあまり意味がありません。)

以前新井紀子教授はAIの専門家ではない 『AI vs. 教科書が読めない子どもたち』という記事を書きましたが、当時この本を読んだ時の最高の違和感が『論理的に演繹的に解けない問題は解けないということにしたい』という著者の姿勢でした[ref]純粋に彼女の知識が足りないのか、それともそういうことにしないと彼女が現在広めている読解力テストにつながらないからかその理由はわかりません。[/ref]。

その記事で議論したように、四角形の各頂点からの距離の和が一番小さくなる点を演繹的に見つけるのは難しくても帰納的に見つけるのは簡単です。

コンピュータは、単純な演繹的計算よりも、ディープラーニングに代表されるようにヒューリスティックな帰納的アプローチをとったときにその性能を一番発揮させることができます。

それをしないでコンピュータやAIを語るのは、エクセルを目の前にしてソロバンで計算するくらいおかしなことです。

 

学校の勉強ができること ≠ 帰納的思考ができること

先ほど書いたように高校数学や物理は演繹的にロジックだけで解ける問題ばかりなので、帰納的思考が弱い人でも学校の成績がとてもよいのはおかしくありません

逆に学校の成績があまりよくなくても社会で成功している人は、帰納的思考にいい意味で偏って優れている人なのかもしれません。

帰納的思考に優れていることをわかりやすい言葉に言い換えれば、とりあえずチャンレジして、失敗した際にはその分析をし、その分析をもとにアプローチを修正し、再チャンレジを試みることができる人です。

生きていれば人生は運やタイミングに大きく左右されることは明らかで、論理的に演繹的に手順を踏んでいったら必ずゴールにたどりつけると思っているならば、その考えは早く捨てるべきでしょう。

人生の7割くらいは運で決まります。

厳密で単純な美しい論理の世界は『数学という人間の妄想の世界』の中にしか存在しないのです。

 

このことを考えたきっかけ

1年くらいブログが空いていたのですが、なぜまた書き始めたかというと、自分がやっていたプロジェクトが一段落したからです。

そのプロジェクトとは、ソフトウェアエンジニアの経験のない私のパートナーを、GAFAのどれかに就職させて年俸20万ドルを取らせるという私的プロジェクトでした。

コーディング面接は勉強すればなんとかできます。

あとはシリコンバレーでプログラマとしてスタート地点に立つ方法を考えるで書いたように、実務経験を積めればスタート地点に立つことができます。(彼女はアメリカ人なのでビザの心配はありません。)

1度リタイアしながらもう一度1年間シリコンバレーに行くことにしたのは、その会社が彼女もセットで雇ってくれたからです。

彼女は頭がとてもよいので、あとはコーディング面接の準備を積むだけだと思ったのですが、彼女こそが数学よりもプログラミングの方がずっと難しいと言うタイプでした。

その原因を探った結果が今回の記事です。

正直彼女のマインドを変えるのがすごく大変でした。

プログラミングだけでなく物事を達成するアプローチは、トライアルアンドエラーが手っ取り早いのは間違いないのですが、極端に失敗を恐れるので試行回数が少なく進歩が遅いのです。

失敗は成功のためにやっているので、真の失敗ではないのですが、それを受け入れるのが難しい人がいるというのが発見でした。

どんなことをやるにもいかに実験をたくさんできるかという、泥臭さの勝負みたいな部分があると思っています。

とりあえずやってみて修正していく。無数の失敗をしながら正解に近づいていく。

エジソンの名言に「失敗ではない。うまくいかない1万通りの方法を発見したのだ」というものがありますが、これは失敗してもめげずに次も頑張ろうというような励ましのメッセージではなく、本当に文字通りそのままの意味だと思います。

↑記事をシェアしてください!読んでいただきありがとうございました。

次の記事:

前の記事:


ご質問、ご意見、ご感想等はこちらから!


学費・生活費無料で行くアメリカ大学院留学

Luxury Trips - 無料のマルチプレーヤーオンラインジグソーパズル -


プロフィール

yu. (Ph.D. UC Berkeley)   

慶応大学環境情報学部を首席で卒業。日本のベンチャー企業で働いたのち、アメリカにわたり、カリフォルニア大学バークレー校にて博士号を取得。専攻は機械工学、副専攻はコンピュータサイエンス。卒業後はシリコンバレーの大企業やスタートアップでプログラマとして働いていました。現在はフリーランス。毎日好きなものを作って暮らしてます。

詳細プロフィールはこちら