メンターの安藤です!
先日、広島県内に三つある道場の一つ、CoderDojo福山に出張メンターとして参加してきました。
普段の道場とは違う立場で参加したことで発見した、”あること”について報告したいと思います。あることとは、「基礎の大切さ」ということです。きっかけは、とあるニンジャからうまくいかないと悩んでい課題について質問を受けたことでした。
そのニンジャは、Hour of Code の Minecraftに取り組んでいました。
ステージはかなり進んでおり条件分岐を使うところまできていましたが、うまくクリアできないと言います。悩んでいるステージは条件分岐とループをうまく使わないと、ゴールにたどり着くことはできません。
CoderDojo福山の当日レポートにもあるように、実は、ループや条件分岐の概念はじっくりと説明しないとなかなか理解できないポイントです。特に小学校低学年のニンジャには少し難しいところ。
解き方の様子を見ていると、どうもブロックの意味を十分に理解しないままやみくもに繋げているようです。それぞれの動作ブロックを繋げては外し、新しく追加して実行してみるという操作を何度も繰り返していました。
聞いてみると、これまでのステージもこの方法でクリアしてきたとのこと。楽しんで遊んではいるものの、論理的に問題を解くというより、先に進むことを単純が単純に楽しいようでした。もちろん、これはこれで楽しみ方として問題ないのですが、壁を越えるためには、ループと条件分岐を適切に使いこなす必要があります。
Hour of Code の Minecraftだと、手当り次第にブロックを配置して偶然クリアできた場合も次の面に進みます。でも、この方法で進んでいくと、複雑なステージで壁に突き当たってしまいます。
そこで、クリアするための方法は一旦置いておいて、ブロックの繋ぎ方やループ、条件分岐についてじっくり説明をしようと話してみたものの、早くクリアする方法を教えて!といった様子であまり話を聞いてもらえません。。
そうこうしているうちに、道場の時間がタイムアップとなり時間内に解決することができませんでした。
帰り道、どうしたらよかったのかなーと考えてみたのですが、ループや条件分岐が登場する最初のステージに戻って、ブロックの意味をじっくりと理解してもらうのが一番という結論に達しました。
基本に戻って原理原則をしっかり理解する、ということが単純なことですが重要なステップなのだと私は思います。難しいことをするためには、しっかりとした基礎体力と準備が大切です。
ところで、この話はよく考えると、プログラマーを本職とする人でも同じなんです。
フレームワークやユーティリティの意味がわからないまま、インターネット上のサンプルコードを切り貼りして結果的に動いているだけ、という状態のコードを見ることがたまにあります。特に納期に追われる傾向にある巨大SIプロジェクトではあるあるな話です。そのようなコードで「動いたからいいや!」とやってそのままにしてしまうと、プログラマとしての技術の成長はなくなってしまいます。
基礎をちゃんとやることってやっぱ大切だよなぁ、と改めて気がつくことができ、自分自身、新鮮な気持ちになりました。
ニンジャたちに教えることで、自分自身の学びになることはすごくたくさんあります。このあたりの発見ができるという点も、私自身がメンターをやっている理由の一つです。
ニンジャからいろいろな発見をもらいながら、彼らが将来、素晴らしいプログラマーに育っていけるように背中を押すことを続けていきたいなと改めて思うことができた、道場の一幕でした。
この記事を見てメンターに興味を持たれたエンジニアの方は、ぜひお気軽にメンター体験にお越しください!