「第一回プログラミング教育について話し合う会」に参加しました。
私自身は、どちらかと言うと、初学者にプログラミングを教える側の立場で仕事をしています(もちろん、詳しくない領域では、ほかの人に教わることもあります)。今回の会には大きな刺激を受けたので、発表の中からいくつかピックアップして感想を書くことにしました。
2年目に入った小学校プログラミング教育 -その現状と課題-
2020年4月,プログラミング教育を含む新しい小学校学習指導要領が実施された。しかし,新型コロナウイルス感染症の影響もあり,プログラミングを体験する授業はあまり行われていない。そうなった経緯について,過去の小学校のプログラミング教育を振り返り,産業界や官邸,文科省の思惑,新しい教育や学校の在り方などが交錯する中で進められた取り組みから読み解く。そして,それを受けて移行期間中に多くの学校で実施されたコンピューターを使わない「アンプラグド」を用いた授業を紹介し,その問題と背景にある「プログラミング恐怖症」に対する解決法を提案する。
小学校の先生方は、プログラミング教育として「正解のあるアルゴリズムの穴埋め問題」を作ってしまうという話が印象に残りました。
古い話ですが、私がセンター試験を受けた頃は、数学の選択問題に「数値計算とコンピュータ」というものがありました。しかし、これはまさにアルゴリズムの穴埋め問題でした。
このような穴埋め問題は、確かに、アルゴリズムを読み解く力をテストすることはできるのだろうと思います。しかし、「プログラミング的思考」を育てるためのものにはならないはずです。
このような問題を解く体験をプログラミング体験だと勘違いしてしまったら、本当にもったいないと思いました。
プログラミング的思考を育てるために重要なのは、「正解」のアルゴリズムを作り上げる体験ではありません。「ここの記述を変えたらどうなるのか」というような、好奇心や偶然に基づく実験・試行回数を高め、即座にその結果がフィードバックされるような体験です。そのような体験を大事にしないといけないのだと認識しました。
意識的な学習につながる仕掛けのつくり方
よりよい学習をするためには、学び手が次の3項目を身につけることが重要です。
- 意図をもって取り組めること
- 学習のための基礎体力があること
- 未来の姿をイメージできること
本発表では、上記項目の必要性を確認し、それらを実現するための具体的な取り組みや実践する上での悩みについて説明します。
発表の中では、「慣れてくると進んで壊しにいくようになる」という話が印象に残りました。
聞いている中で、私が大学の授業でプログラミングを学んだときの思い出を連想しました。たしか、for文を使って指定された文字列を出力するという課題を解いていたときのことだったと思います。
↓こんなイメージ
*
**
***
****
*****
私は課題をこなしていたのですが、おそらくコードの記述を間違い、無限ループが発生してしまいました。
その結果、コンソールが高速にスクロールしながら文字列の小さな塊が瞬間移動し続けるという結果になりました。しかし、それがあまりに予想外の動作だったため、静かな授業中に一人吹き出してしまいました。
そのバグを直した後も、再現できないものか、もっとおもしろい挙動にならないものかとしばらく試していた記憶があります。
プログラムの破壊を試みるのは、おもしろい体験です。
最近は、ふと思い立って、部屋のGoogle Homeに「OK, Google。 2 割る 0 は?」と試してみたりしました。ゼロ除算エラーが起きたらどうなるのかを試したかったのです。
プログラミング教育をする際には、そのような体験を意図的に増やしたいと思いました。
初めてエンジニアインターンの育成に取り組んで考えたこと
会社として初めてエンジニアインターンを受け入れることになり、2ヶ月ほど育成に取り組んできました。育成すると口で言うのは簡単ですが、実際にやってみると想像以上に大変なことの連続です。今回はその内容や考えたことについてざっくばらんにお話しします。
プログラミング初学者に「例外処理について理解してきて」と指示をすると、調べてきたことを真面目にノートにまとめてくる。しかし、その状態で「じゃあ例外処理を書いて」というと1文字も書けないという話がありました。
そう。手元で動かさないと、プログラムを書く能力は身につかないのです。
自転車の乗り方の理論を知っていても、実際に自転車に乗れるわけではないのと同じです。
私は、必ずしも「ゼロイチで作りたいもの」は必要ないと思っているのですが、自分のアイデアを試した結果、フィードバックがもらえるフィールドは重要だと感じています。
20年前の私の場合は、それがCGIゲームの改造でした。今は何が良いのでしょうか。
感想まとめ
これら3つの発表に共通していたのは、「とにかく自分の手で自分のアイデアを試し、試行回数を高める」ということだったと思います。
教える側は、それを実現するために「教わる人(または集団)を取り巻く環境」をデザインしなければなりません。しかし、意図的にそのような環境を作り出すためには、どうすればよいのでしょう。
私自身は、それを実現するためのアイデアが浮かんでは消え、浮かんでは消え・・・を繰り返しています。そのため、とっさの場面でそれらのアイデアが浮かばず、応用ができていません。
アイデアをすぐに引き出せるようにするには、それらをどこかにまとめておく必要があると感じました。そのアイデア集については、また別の記事で・・・。
関連記事