「技術的スキル以上の何か」を教えてくれる ‐ 米の中高生が語るプログラミング4つの恩恵

昨年、オバマ大統領は、Computer Science Education Week にて、「 Don’t just play on your phone, program it! 」という言葉をのこした。しかし、なぜ、エンジニアを目指す人以外にも、プログラミングが必要なのだろうか。その問いへの1つの答えとして、以下の本文で語られていることは、参考になるかもしれない。「技術的スキル以上の何か」とは何か?ぜひ、読み進めてみてほしい。

プログラミングはどこか特定の場所を目指すものではない

あなたの地域の学校がコンピュータサイエンスのコースを提供しているとしよう。しかし、そのコースは、科学や数学の単位としては考慮されない「選択科目」であることが多いだろう。つまり、コンピュータサイエンスのスキルは、生徒の将来にとって重要となるかもしれないが、代数や生物のような「多くの職業に応用可能なスキル」だとは思われていないのだ。

しかし、全国STEMビデオゲームチャレンジ2012の優勝者であるサム・ブレイゼスとウィルフリード・フンヨは、次のように語っている。

コンピュータサイエンスへの情熱は、今後、幅広い職業へとつながる可能性があるだろう。プログラミングによってできることは多種多様で、どこか特定の場所に向かっていくというものではないんだ。プログラムによってできた成果物を利用すれば、何だってできるんだ。

プログラミングは「言語の学習」である

そのような発言をするのには、理由がある。プログラミングは、単なる技術や機械以上のもの、「言語の学習」とも呼ぶべきものなのである。そして、その言語を扱えるようになると、プログラマーは、コンピュータが関与するあらゆるものの機能をコントロールすることができるようになるのだ。

サムとウィルフリードは、プログラミングを追求してきた結果として、アカデミックな分野あるいはカリキュラム外の分野において、様々な恩恵を受けたという。以下では、それらの恩恵を4つを紹介しよう。

1.扱うテーマに熟達することができる

プログラミングの主な利用ケースとして、ユーザーが知識を身につけながらストーリーを進めていくというものがある。伝統的なレッスン形式によるものもあれば、サムやウィルフリードが作った教育系ゲームのような新しいものもある。さまざまな選択肢を適切に表示するためには、すべての選択肢とその関連事項を十分に理解しておく必要がある。たとえば、サムはゲームを作る前に遺伝学の基本原則をマスターしなかればならなかったし、ウィルフリードは電気学の原則を学ばなければならなかった。

2.システム思考を身につけることができる

ゲームでプレイヤーを動かすためのコードだとしても、ロボットでピラミッドを積み上げるためのコードだとしても、プログラミングの過程では、「どのようにインプットがアウトカムと相互に影響し合っているのか」を理解する必要がある。さらに、最初に習った言語から次の言語へと移るときには、どの要素が「一般的なもの」で、どの要素が「その言語特有のもの」であるかを学習していくことになる。

サムは自らが学んできたコンピューター言語について次のように語っている。

すべて同じ文法構造を持っているんだ。そして、その中に、ちょっと違った方言や、キーワード、あるいはクセのようなものがあって、それらを学んでいくんだ。

3.プログラミングでコラボレーションを学ぶ

ほとんどのプログラミングプロジェクトは、各々が自らの専門分野に取り組めるようにするために、複数人で行われている。たとえば、生徒たちが教育系のゲームを作ることを想定してみると、ある生徒は教育に対する理解が特別深いかもしれないし、他のある生徒は優秀なエンジニアかもしれない。また、別の生徒は、ビジュアルに秀でたアーティストかもしれない。実際、このような協働的な環境に魅力をかんじ、プログラミングの世界にのめり込んできた生徒もいるくらいである。

ウィルフリードは次のように言っている。

僕は、学校のロボット工学のチームに入ったんだ。そこで、最高のシーズンを送ることができ、それ以来ロボット工学の虜になってしまったんだ。一緒に取り組む友達やメンターの方々がいる中で、基礎から応用までの色んな作業をして、ロボットのプログラムを作っているんだ。

4.情熱を追求することができる

サムもウィルフリードも自らの興味関心からプログラミングの道に進んだわけであって、すべての生徒たちがコンピュータプログラミングに関わっていくというわけではないだろう。しかし、彼らいわく、プログラミングは構造的な性質を持っているため、、情熱のあるものにとっては、その関心を磨き、情熱次第でどこまででもいけるものなのだという。

サムは次のように言っている。

プログラミングは楽しいよ。ちょっとしたときに始められてすぐに楽しめる。そして、何かに取り組み始めたときや何かを終えたとき、達成感のようなものを味わえるんだ。

おもったこと

プログラミング学習の恩恵として「コラボレーション」が挙げられているが、これは個人的にも大きく共感するところである。プログラミングの世界、あるいはハッカー達のコミュニティは、コラボレーションに満ちている。世界中のプログラマーが顔を合わせずして同じプロジェクトに取り組む「オープンソースのプロジェクト」などは、その典型であろう。「ブランチを切って編集してレビューをしてマージしてという仕組み」は、コラボレーションをまさに具現化したものであると思う。

もちろん、プログラミングが全てではないが、コラボレーション、協働的な学習を進めるうえで、プログラミングは1つ面白い切り口であり、そこから学ぶことは多いだろう。

[原文: Why Programming Teaches So Much More Than Technical Skills ]
[参考: 米大統領「全ての人よ、プログラミングを!」(オバマ大統領演説本文) ]

この記事を書いた人:
  • 最近の投稿

  • カテゴリー

  • アーカイブ

  • おすすめの記事

    コメントを残す

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

    次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>