2014年08月19日(火)

なぜ60%の人はプログラミングが出来ないのか

テーマ:マネジメント
プログラミングが出来る人間からみると、プログラミングが出来ない人の理由は単純に「ちゃんと勉強しないからだ」ということになる。

たしかに、自分達が歩んできた過程は、SDKやIDEの設定を行ってコンピュータの開発環境を整え、全く意味不明なアルファベットを打ち込んで、ウェブサイトや本で言われたとおりの表示が出ることを確認して、また次のステップをやってみて、という「地味で地道な(そして性格まで暗くなりそうな)」ことを繰り返して出来るようになったものなので、その過程から逃れているからプログラミングが出来ないんだろ、というのはごく自然に思う。

このため、プログラミングを教えようというときに、地味で地道で性格が暗くなってハゲて死にそうな学習過程の苦しみを、いかに和らげられるかという試みは数多くなされている。codecademyRails for zombiles: code schoolなど、ゲーミフィケーションやクイズ、パズルなどでハードルを下げてプログラミング入信者を増やそうというのは一つのトレンドにもなっている。

これ自体は間口を広げるためにすごくいいと思うけど、そもそもデキる素質を持つ少数しか対象にならないかもしれない。プログラミングが出ない人は、出来るようになる「素質(natural aptitude)」がないから出来ないんだ、という有名な論文がある。


●プログラミング教育は、どんな手立てをつかっても「かなりできる人」と「できない人」という明確な成績の差が生まれ、中間はほとんど存在しない。(ここから「ふたこぶラクダ」というタイトルになっている。)この差は、年齢、性別、学歴に関係なく起こる。

●電子計算機が発明されて以来、多くのことが変わったが、頑なに変わらないのは「多くの人はプログラミングを学ぶことができない」ということ。コンピュータサイエンス学部に入学するくらいの人でも30%~60%は単位を落とす。なぜこのようなことが起きるのか?

●実験調査の結果、無意味なものでもそれを受け入れ、他にも一貫してその受け入れたルールを適用できるかという、一貫性の高さがプログラミングの適性と高い相関があった

●通常の学力とは独立したプログラミング素質が存在し、プログラミングを学習する以前に決まっている。


今まで多くのエンジニアを見てきた自分の経験からも納得できる。プログラミングの学習コストや難解さが問題だと思われていたが、プログラミングを学習するメンタルモデル(脳の許容性)こそが出来るか出来ないかの最初のハードルになるのは確かだ。

プログラムではa=bはbの値をaに代入することであって、一般的に我々が知っているaとbが等しいという意味ではない。一般的なイコールを意味するためには==とイコールを2つか3つ書かないといけないが、普通の世界で==は意味をなさない。

プログラミングのメンタルモデルは、新しい世界でのルールを意味を考えずに受け入れ、その世界にいる限り一貫して使用し続けることが必要になる。音楽で8ビートとはどういうことなのかを追求しても無意味だけど、8ビートを使ってセッションしたり曲を作ったりしたほうがはるかに良いし、クリエイティブなのと同じで。

つまりプログラミングの素質というのは、無意味なものに対する姿勢だ。無意味なルールを受け入れて、無意味なルールで指示し、コンピュータは盲目的に従い、無意味な結論を出す。

「そういうものだ」としてルールを学ぶ。最初でつまずかなければ、githubなんかで実際に使われているコードを読む、作って試してみるしてるうちに、あっという間にスキルが伸びて世界が開ける。



(追記 2014/8/21)コメントで教えて頂いたところ『何らかの指標を見つけたのは確かだけれど、生得的な素質がプログラミング学習能力を決めている、というのは言いすぎであるとしています』とのことで著者が論文を撤回しています。いずれにせよ、素質がないと出来ないではなく、素質が実世界では無意味なルールでも受け入れることだとすると、受け入れて進んでいけばプログラミングの楽しさがあるという主旨で読んで頂ければと思います。(shirokさんありがとうございます)



AD
いいね!した人  |  コメント(2)  |  リブログ(0)

コメント

[コメントをする]

2 ■Re:その論文は著者が撤回を表明しました

>shirokさん
情報と内容の展開ありがとうございます。本文にもその旨、追記させて頂きました。

1 ■その論文は著者が撤回を表明しました

撤回表明はこちら:

http://www.eis.mdx.ac.uk/staffpages/r_bornat/papers/camel_hump_retraction.pdf

事前のテスト結果と、講座の試験にパスするかどうかの間には確かに相関が見られるのですが、(1)事前のテストで「一貫性」が見られないグループでも多くの生徒が最終的に試験にパスしており、このテストが実際に何を測っているかも明らかでない(2)講座のテストに通るかどうかが、直ちにプログラミング能力の有無を意味するわけではない。プログラミング能力の査定まで踏み込んだ調査では相関があるという結果は得られていない(3)ふたこぶラクダモデルはあるトピックの理解にそれまでのトピックの理解を要する場合に自然に生じ得る、等の理由です。何らかの指標を見つけたのは確かだけれど、生得的な素質がプログラミング学習能力を決めている、というのは言いすぎであるとしています。

コメント投稿

AD

Ameba人気のブログ

Amebaトピックス

      ランキング

      • 総合
      • 新登場
      • 急上昇
      • トレンド

      ブログをはじめる

      たくさんの芸能人・有名人が
      書いているAmebaブログを
      無料で簡単にはじめることができます。

      公式トップブロガーへ応募

      多くの方にご紹介したいブログを
      執筆する方を「公式トップブロガー」
      として認定しております。

      芸能人・有名人ブログを開設

      Amebaブログでは、芸能人・有名人ブログを
      ご希望される著名人の方/事務所様を
      随時募集しております。