読者です 読者をやめる 読者になる 読者になる

タオルケット体操

サツバツいんたーねっと

「プログラミング初心者」にもなれない人の特徴を考えてみた

駄文 プログラミング

photo by CollegeDegrees360

曰く、プログラミングという技能は素質に大きく左右されるもので、出来る人間と出来ない人間の間には大きな溝があるという。
これは僕の(大して長くない)経験からしても納得出来る話で、また下記のエントリーなどを参考するに世間のプログラマーたちにしても同様のようだ。

参照: カレーなる辛口Javaな転職日記: プログラマの適性検査

(他にもJoel on Softwareという書籍では「Javaスクールの危険」というタイトルでプログラマーの適正と、そのふるい分けの問題について扱っている。)

教養としてのプログラミング講座 (中公新書ラクレ)

教養としてのプログラミング講座 (中公新書ラクレ)

この話題は有史以来定期的に繰り返されているわけだが、上に挙げた書籍(教養としてのプログラミング講座)がちょびっと話題になったり、めでたく社会人四年目を迎えて何人かの新人達が成長する様を比較したりしなかったりしてきたのでそろそろ僕も参加する。
ちなみに僕はといえば、いい加減な独学で通してる割にお勉強としてのプログラミングの習得 'には' あまり苦労した覚えがないので「自分には適正があるのだ」と勝手に思っている。程度の多少こそあれ、職業プログラマーはみな自分のことを適正のある人間だと思っているだろう。傲慢はプログラマーの美徳であるらしいし。

なお本稿では『「プログラミング初心者」にもなれない人の特徴を考えてみた』というタイトルどおり、いわゆるfizzbuzzを通過出来ない系の人たちについて言及する。

コンピュータの知識ではなく、自然言語の才能?

じゃあとりあえず日本語で表現してみよっか

初心者に割り当てられるようなプログラミングの課題といえば、数学的なものかフローチャート的なものだと相場が決まっている。前者だとフィボナッチ数列の生成とか、後者だとfizzbuzzあたりだろうか。

この手の課題は、数十分と待たずに書き終える人種と、延々時間をかけた挙句に白紙、あるいは苦し紛れの解答を出す人種の二つに分かれる。中間というのはあまりいない。

彼らがコードを 書き始める ことすら出来ずに10分を無為に過ごすのを眺めてた時、僕が最初に想像したのは
「ああ、彼らは○○(ここに君の好きなプログラミング言語の名前をいれよう!)の、条件分岐といった文法をまだ把握出来ていないのだな」
ということだ。

つまり、「もし偶数だったら」というのを○○言語でどう表現するかを把握出来ず、キーボードを叩き始める事が出来なかった、と解釈したわけだ。
なので次にかけてあげる言葉は、
「オーケイ、オーケイ。慣れない言語じゃ大変だよね。じゃあとりあえず、必要な要素と条件を日本語で書いていこうか?」
もちろん彼の筆が進むことはない。何故だろう?

思うに、彼らは言語を通じて情報のやりとりをすることそのものが不得手なのではないか。そもそも日常生活において、言語能力が要求される状況というのは極めて少ない。
例えば、学友との会話であればウェーイでだいたいなんとかなる。

日本語の読み書き自体は出来ても、文章を理解出来る人間は普通の人が考えているよりもずっと少ないというのは皆の思うところだろう。この、文章を理解出来ない、あるいは理解する能力が高くない集合に属する人間が、イコール プログラミングの適正に欠ける人間なのでは? 簡単にまとめるならば僕の考えはそんなところだ。
ちょっと論理の飛躍がある気がしなくもないが、他にも色々と思うところがあってとりあえず上記のような結論に達した。経験上、彼らの多くは著しく英語力が低い(This is a penレベルですら視界に入れたくないレベル)というのはその一例である。

エラーメッセージを読まない

とりあえずだましだましで教育を進めていくと、たびたび目にするのがこれだ。
無論、高度なデバッギングフェーズなどではエラーメッセージの解読自体に、センスや当該言語の知識を要求されることもあるし、世の中にはエラーメッセージが貧弱な言語などもある。
だがこれはそういうレベルの話ではない。例えば

AttributeError: 'Klass' object has no attribute 'moee'

のようなエラーであっても、メッセージを全く読もうとせず闇雲にググるか人に聞く。
この傾向は前述したような、そもそも母国語の時点での、言葉への感受性の低さに一因があるのではないだろうか。ゆえに文章が持つ情報を軽視してしまうのであろう(名推理)。

ニュースを見ないのでよくは知らないが、プログラミングの授業が義務教育化するらしい。
こんなこと、誰かがもう何度も言っているだろうが、学校の教育レベルであればプログラミングの授業なんぞは無意味だ。むしろ、読みと書きを中心とした文章表現の機会と、暗記に依らないまともな数学教育を実施して、適正ある人間の地力をあげるように努めたほうがあらゆる方面で有意義であろう。

まとめ

思ったよりも否定的なニュアンスの文章になって我ながらビビってるけど、プログラミングできるから優れた人間かっていうとそうでもないというか、むしろプログラマーって人格破綻者とかコミュ障率クソ高いし、向き不向きってどうしようもないもんだから、プログラマーとして就職したけどオレ向いてねぇなーっていう人はさっさと見切りつけて環境変えたほうが、本人のためにも周りのためにも良いですよという、春らしく優しさなエントリです。

合わせて読みたい(手動)

以下は理系文系とか情報系学科とかってプログラマーになれるかどうかと関係あるのっていうことについて新しく書いた日記です。
時間が経ってから書いたせいかまたこの日記ともニュアンスが違う感じになってますね。

文系プログラマーの罪悪感 - タオルケット体操