僕たちはなぜアニメやドラマ、音楽を楽しむのだろうか。あるいは、技術書を楽しんで読める層と、苦労して読む層と、全く読めない層があるのだろうか。
カギは「予測可能性」にあると思う。
例えば、アニメやドラマは、ある程度展開が予測できるが、予測できないところもある。音楽もそうである。あまりにも予想外のことは起こりにくいかもしれない。
つまり、コンテンツを楽しんで(自走力を持って)読むためには、ある程度、展開や先の予想がつく必要がある。で、多少は予想外のことが起きても良い。
では、技術書はどうだろうか。最初はあまり楽しんで読めないと言うか、最初は結構苦労することが多い。単純に、予測不可能な文字が並んでいるのでそうなる。
ある程度慣れたら、自走力を持って読むことができる。ある程度予想がつけられるのである。技術に対する理解が深まったと言っていい。
で、「生まれながらにして技術者」は存在しない。最初はどんなコンテンツも予測不可能なのである。
例えば、働き始めると、ソースコードをひたすら読むことが多いと思うが、それもある程度予測可能と言うか、理解可能だから読み続けることができる。でも、難易度の高い、やる価値のあるものに限って、予測不可能性が高い。
「自走力のない人」を「自走力のあるエンジニア」に変換することは可能である。今エンジニアとして働いている人も、どこかで変換したか、変換されてきたのである。
問題は、企業は基本的に営利追求と価値創造の場所なので、普通の人をエンジニアに変換する作業をやってくれるとは限らない。つまり、問題はコストである。結構なコストがかかって、コストをかけた主体がそのコストを回収できるとは限らない。才能や素養の問題ではない。(才能や素養の問題にしておけば学校も企業も責任逃れができる。だって仕方ないよね?本人の才能がないから、教え方の問題ではない)
なので、企業は基本的には自走力のある「才能ある」エンジニアを求める。
で、解決策は、結局、「理解できるまで読む」しか無いんじゃないかと思う。どうせ、仕事では理解の難しいソースコードを読むのである。
「プログラミングは才能」論には問題がある。なぜなら、ソフトウェアの課題において、やる価値のあるものは、だいたい難しいということだ。「才能」を証明したいなら、簡単で目立つものをたくさんこなせばいい。こうして、世界には難易度の高い課題が手つかずで残る。みんな手を付けることもしない。「才能」が否定されるからだ。「才能がないことはやるべきでない」という思想には問題がある。
理解できないことによる苦痛には、根本には「プログラミングは才能」という思想があるように思う。理解できないことは才能がない証拠になる。才能がないなんて嫌だろう。
結局、「プログラミングは才能ではない」ことを肯定することから始めるべきなんじゃないかと思う。「プログラミングは才能」という論は有害でしかない。
ということで、理工学勉強会でJavaやってます。「才能のない」人を歓迎しています。