60%の人間はプログラミングの素質がないという話
2012年の記事なので古いですが、60%の人間はプログラミングの素質がないということです。
プログラミングをしたことがない学生を対象に次のようなテストを実施した。
int a = 10; int b = 20; a = b;
aとbの新しい値は?
生徒は、全員プログラミングに触れたことがないが、少なくとも皆、=が数学では等号記号を意味することを知っているだけの数学の基礎的な教育は受けているはずの者たちであった。
もちろん、プログラミングについて何も知らない人間なのだから、Javaのコードとして解釈した場合の代入の挙動を正しく回答したことが正解になるのではない。=は変数の値を変更しないのかもしれない。代入だとしても、右から左ではなく、左から右への代入かもしれない。代入ではなく、移動なのかもしれない。つまり、代入した後の変数は0になるかもしれない。あるいは、値の交換なのかもしれない。
この問題では、解答群の「新しい」という言葉の使用によって、値がなにか変化するものであると推測することを期待している。
どのような規則で回答するかというのは問題ではない。このテストでの評価は、ひとつの規則を、複数の似たような問題に首尾一貫して適用できたかどうかをみた。つまり、=は値を交換するという規則を推測したとしたら、ほぼすべての問題に対しておなじ交換の規則を適用した結果を回答した場合のみ、一貫したグループ(consistent group)とした。問題毎に違う規則で答えたものを、一貫していないグループ(inconsistent group)とした。何も書かずに提出したものを、空欄グループ(blank)とした。
割合としては、一貫したグループが44%、一貫していないグループが39%、空欄グループが8%であった。
その後プログラミング教育をした結果、一貫したグループが高成績だったという話です。それが60%の人間はプログラミングの素質がないという結論になったようです。
プログラミングの素質がある人間の割合は、年齢や性別や教育レベルでは変わらないようだ。プログラミングの素質のある人間は、40%ぐらいであろう。つまり、残りの60%は、プログラミングの素質がないのだ。
つまり、コードが書けるとしたら、その時点ですでにエリート階級に属しているのである。もし、良いコードが書けるとしたら、指折りのエリート階級に属しているのである。
コードが書ける時点でエリートというのは言い過ぎかもしれませんが、悪い気はしませんね(笑)そもそもプログラミングをするにはパソコン操作をしなければいけないので、まずはパソコンが使えて、その上でということでしょうか。
このテストとプログラミング素質について
この記事を読んで興味深いなと思いました。確かに一貫性があるほうがコードを見ても多分いいコードのような気がします。同じループでも色々な書き方をせずに一貫している。コーディングルールとかもきちんと守りそうですよね。まぁあくまで想像ですが。
余談ですが自分が上記のテストをしたとしたら、一貫性がないに分類されると思います。わからないけど規則性がありそうな問題が続いている場合、0か10を狙うのではなく5を狙うために回答を散らすタイプなので…。そういう意味では私にプログラミングの素質はないですが、家族を養うためにプログラマーになった覚悟とプログラミングが好きという気持ちでなんとかやっております。