プログラミング教育」カテゴリーアーカイブ

子供にプログラミングを教える時に気をつけている〇〇のこと

こんにちは。石川大貴です。

今日は、プログラミング教育に関するお話です。

どちらかと言えば、教える先生側寄りのお話です。
ですが、子供に習い事をさせたい考えている親御さんにとってもどこか参考になるかもしれません。

僕は最近、小中高生向けにプログラミングの家庭教師をしています。

僕の場合は、この仕事で食っていこうと思っているわけではなく、ただ好きでやっているだけですので、個別指導の家庭教師というスタイルでマイペースにやっています。

対面のマンツーマン家庭教師なので非常に効率が悪いのは難点ですが、そのぶん目の前の子供の成長を見守ることができる個別スタイルなので、毎回教える僕自身も楽しくさせていただいています。

子供にプログラミングを教えている中でいくつか思ったことがあるので、まとめておきます。
さて、それではいきなり本題に入っていきます。

■できない子はいない。できる分野とできない分野があるだけだ

小学生であっても、もう子供によって能力差は全然違います。これは、認めたくないかもしれませんが、紛れもない事実だと思います。実際に教えていて、如実に感じます。
(そしてこれはただの予想ですが、おそらく東京などの都市圏ほど能力差が大きいんだろうなと思います)

ただし、いわゆる「できない子」というのはいない。と僕はそう思っています。このマインドは大事です。

確かに、「理解が悪い」「なかなか覚えられない」「進みが遅い」などの事象はあることにはあるのですが、それら多くの場合は、突き詰めて言ってしまえば単なる「集中力」の問題だと思っています。言い換えると「向き不向き」「好き嫌い」の問題ともいえます。

以前なんかのテレビ番組で(ダーツの旅だったかな・・)田舎の小学生にインタビューしたのがありました。
インタビューした子供たちの中に、「引き算が苦手」という男の子がいたのですが、彼は本当に引き算ができなかったんですよね。スタッフが引き算の問題を出しても、答えられない。

それが今度は、スタッフが機転を聞かせてその男の子が好きだという「戦車」に掛けて問題を出しました。

「戦場に8台の戦車がいました。そこから3台の戦車がいなくなりました。さて、今残っているのは何台?」

すると、男の子は即答で「5台!」と当てました。

同じ容量で、今度は難しい二桁の引き算を戦車で出してみたら、男の子は「ん〜ん〜」と考えつつも、正解を出したんですよね。
この問題には周りにいた小学生も悩んでいたから、一瞬にしてこの男の子は「できる」側になってしまった。

これも、結局は「集中力」の問題だと思います。

子供というのは、教えている側が思っている以上に集中していない(話を全然聞いていない笑)時が往々にしてあります。集中していない時は、マジで話を聞いてません。マンツーマンですらそうなんですから、集団授業になればもっとそうでしょうね。

少し話がそれますが、「人の話を聞ける子」というのはそれだけで優秀だと思います。
話が聞けない子は本当に多い。

だから、まず1つ言えることは「集中力」のコントロールがめちゃくちゃ重要です。

では、「集中力」を高めるために何をしたら良いのか。
オーソドックスではありますが、ポイントを3つ挙げます。

■興味分野を見極める。好きなことを掛ける

1つ目は、興味のあること、好きなことを掛けることです。

例えば、プログラミングを学ぶ場合にしても、実は分野はいろいろあります。

「スクラッチ」を教えるのか、「HTML・CSS」を教えるのか、「javascript」を教えるのか。
ひとえに、プログラミングといっても、方向性は様々です。

受験勉強やテスト勉強など、何か近い将来に得られる利益のためにいま我慢してでもやらなければいけないこと、避けることがどうしてもできないことであれば、興味があろうがなかろうが取り組む。そういうことも人生においては時に必要でしょう。

しかし、プログラミング教育に関してはその類いではありません。
まずやってみて、トライしてみて、好きなんだったらやればいいし、嫌いなんだったらやらなくて良いと思っています。やるにしても、まず興味を持てるところから始めれば良いのです。

「できることが増えていくのが面白いな」とそう素直に思えることからやれば良いと思っています。

ですので、そもそも「何を教えるのか」自体もその子供の好き嫌いによって僕は変えています。

小学生だから。中学生だから。頭が良い悪いとか、勉強ができるできないとか。そういう区切りは無意味です。テストの点数とか偏差値なんて関係ない。そんな固定概念で分けるのではなく、「興味が持てるか持てないか」だけを基準にして、何を教えるのかを決めています。

スクラッチが面白いと思う子にはそれを中心に教えていく。
HTML、cssなどのプログラミング言語に楽しく取り組める子には、それを中心に教えていく。といった具合です。

そして、さらに「それにできるだけ好きなことを掛ける」コンテンツにしていくこともやっています。

例えば、スクラッチを教える場合でも、野球をやっている小学生なのであれば、まずは野球の簡単なミニゲームを一緒に作ったり、ナルトに興味があるのならばナルトのキャラクターを使って動くプログラムを一緒に作る。といった具合です。

要するに、その子の興味分野、好きなことに寄せていくのです。
これで集中力は格段に変わります。

まあ、個別指導だからこそできるスタイルではあります。

個別カスタマイズというのはどこまで行っても、労働集約的な仕事になりますので、余裕のない現場の場合は難しいのでしょうが、本来ならば教育はこうあるべきだと僕は考えています。

多様性の裾野がますます広がっている現代では、尚更です。

■難易度を合わせる

2つ目も、個別指導だからこそできることですが、シンプルにその子の力と教える内容の難易度を合わせることです。

これは、基本中の基本なんですが、意外とバランス感覚が必要でもあり、とても重要なことです。

子供が「集中力を失う」原因はさまざまあると思いますが、多くの場合は「難易度が合っていないから」だと思います。

そもそも興味がある / ない、というのももちろん大きい要素ですが、たとえ興味があることでも、今の自分のレベルと、扱う問題の難易度が離れていると人は集中力を失います。そして、(本当はそれが興味の持てる内容かもしれないのに)その教科に興味がなくなり、やがて嫌いになります。

これは、大きい機会損失です。とてももったいない。

単純に、「難易度を合わせてあげる」だけで、その子の集中力が上がり、ひいては興味を持ち始める場合は多いんじゃないかと思います。プログラミングだけじゃなくて、他のことなんでも言えると思いますが。

どうしても子供は集団で学習する機会が多いはずですので、この「難易度が合っていないから」という原因で、消極的になってしまうことはとてももったいな〜なんて個人的には思っています。

ですので、その子の今のレベルをよく観察して難易度を合わせる。これは強く意識したほうがいいです。

ちなみに、この点をもう少し掘り下げると「難易度を合わせる」とはもっと具体的にいうと「すでにできることを解かせつつ、今の実力よりギリギリ上のこともやらせる」という意味です。
つまり、興味と自信を持たせる機会を与えながら、負荷もかけなさいということです。

これは大人も一緒ですが、すでにできることばかりやらせていても成長はありません。
今できないギリギリのことをやらせないと人は伸びません。しかし、扱うレベルがあまりに難しいとやる気を失います。

ですので、できるかできないかギリギリのところを狙ったレベルの内容に挑戦させます。
簡単にはできないけど、頑張ったら、粘ったらギリギリできそう。そういう内容です。

学校ではこういう経験もあまりできないと思うので、良い訓練にもなるでしょう。

ただし、例外として「興味を持たせる・集中力をあげる」ことをまず第一の目的とする場合があり、その時はあえて「できる問題」ばかりをやらせたりもします。これは、自信を付けさせて楽しくさせるためです。

子供の性格やタイミングなども考慮しながら、「できること」と「できないこと」のバランスを取っていくことが重要です。

■集中力をそぐ環境は改善する

話を元に戻します。集中力を高める3つ目のポイントは「環境」です。

集中できる/できないは、その子の能力うんぬんの問題だけでなく、環境も非常に大きいです。

中でも一番影響する要素だけ一つ挙げるとズバリ「スマホ」ですね。

東京ですと中学生以上はほぼ持っているという現状かと思います。

最近アメリカで麻薬中毒などを研究している研究者が本を出しました。
スマホというのは、誕生したのが2006年ぐらい?ですので、まだたかだか15年ぐらいの歴史しかありません。

仮に2006年に生まれた子供は、生まれた時からスマホが存在していて、今は14歳前後ということになります。

スマホにはもちろんたくさんのメリットがあるわけですが、子供時代からデジタル機器を持つことに関してどんな悪影響があるのか?それがいま研究されています。

例えば、これは大人が対象の実験なのですが、
スマホというのはただ横に置いてあるだけ、カフェで相手と向かい合って話をしている時、机の上にスマホが置いてある、ただそれだけで会話の質がぐんと下がるんだそうです。

スマホが目線に入っているだけで、無意識的に気になってしまう。これは抗えない本能的なものなのでしょう。スマホが「目の前にいる相手との良好な人間関係」を築くことの妨げになりうることが実験でわかっています。

僕も教えていて、これには完璧に同意します。

家庭教師でレッスンをしている時、横にスマホを置いている生徒さんも多いのですが、100%気がそれます。LINEでブーっと音がなる。休憩時間や、少し手が空いたらさっとスマホを手に取り通知を見る。その子がどうこうではなく、人間にはこういう性質がある、というレベルの話です。

ですので、僕の場合は、スマホは禁止までにはしていませんが、あえて子供が一緒にいる目の前で、親御さんに上記のお話を伝えします。その後どうするかは、親御さんのご判断に完全に委ねますが、まあ知っておくと人生損をする機会が減るんじゃないのかな〜とは思っています。

もちろん「スマホ」だけではなく、「ただそこにあるだけで集中力を削ぐもの」というのはたくさん身の回りにあるはずです。

それらを排除していくだけで、環境は整っていき集中力は格段に上がりますのでぜひ実行してください。

■ビジュアルプログミング「スクラッチ」はやって意味あるの?

次はトピックが変わりまして、少しエンジニア向けのお話になるかもしれません。

僕は家庭教師を始めた当初、本格的なプログラミング言語(真っ黒な画面に文字をカタカタ打ってプログラムしていくやつです)を教えていました。

その後、お客さんから要望が多かったのでスクラッチも教え始めました。

最初は、スクラッチはあくまで練習、勉強のための勉強というぐらいに(ある意味バカにして)思っていたのですが、実際に教えているとそうではないことがわかります。

スクラッチというのは、本質的には「ストレスポイントを削ぎ落としたプログラミング教材」と言えると思います。どういうことか説明します。

「ストレスポイント」と僕が呼んでいるのは、子供が集中力を落としてしまう、わからなくて、できなくてストレスを感じてしまう、そういうポイントのことです。

もちろん難しい問題を扱って、それが解けないこともストレスポイントになり得ますし、例えば、パソコン画面端っこの方でドラック&ドロップがうまくできない(これ意外でしょうが、子供に多いです)などもストレスポイントの一つになります。

このストレスポイントというのは、適度にあるのであれば良いのですが、あまりにストレスが多すぎると子供は集中力を落とします。我慢してやり切る力が高い子はそう多くないですから、子供の場合は特に気を付けねばなりません。

そして、スクラッチとは、「余計な部分を全部削ぎ落として、思考力(プログラムを組むこと)だけに集中できるもの」だと僕は捉えています。だから、ビジュアル(文字を打つのではなくブロックを使って)でプログラミングなんです。

ここでいう「余計な部分」とは、「プログラミング言語を書く」という行為です。

一応付け加えておきますが、でも本来はそれが「プログラミング」ではあるんですよ。

スクラッチを使って実際の仕事しているのは、教育関係者だけです。
つまり、スクラッチはあくまで学習教材であり、実際に世の中で働いているエンジニアは何かしらのプログラミング言語を書いて仕事をしています。もちろん、将来本当に働くのであれば、プログラミング言語は覚えなきゃいけません。スクラッチじゃ現実のものは何も作れません。

しかし、「プログラミング的な訓練をすること」つまり、あくまで「論理的な思考力を鍛えること」が目的なのであれば、プログラミング言語を覚えることは全部余計なんですよね。書き方のお作法とか、どんなメソッドがあるだとか、そんなことは全部必要ない。

ですので、思考力を鍛える場合には、むしろスクラッチの方が上です。

下手にプログラミング言語を教えて、最初のとっつきにくい書き方のお作法とか、覚えなきゃいけないことの多さとか、それで嫌になる子もいます。

それよりも、視覚的にできるビジュアルプログラミングで「考える」訓練が楽しくできるのならばそちらを使ったほうがいいと僕は思っています。

■何のために教えているのか?

僕は、プログラミングを教えるのは、「子供の将来を広げるため」だと思っています。

そこが、本質です。

教育には、「コンテンツ」と「トレーニング」という二つの側面があります。

ぶっちゃけ「コンテンツ」としてのプログラミングなんてどうでもいいんです。

将来本気でやりたくなったのならば、自分で勉強していけばいいですし、逆に今たとえ有用なプログラミング技術を身につけたところで、10年後は結局また新しい技術を学ばなければいけなくなります。いまの世の中では、同じ労働であればその労働の価値はだんだんと下がっていきますので。

ですので、大事なのはむしろ「トレーニング」の方です。

そして、「トレーニング」の観点で大事なことが何点かあると思っていますので挙げていきます。

■「作る側に回る」その体験をする

プログラミングとは、何かを生み出す行為に他なりません。

ぼくたちの身の回りには、プログラミングによってできているものでありふれています。

お店でよく見かけるようになったペッパーくんや、お掃除ロボットのルンバなどもそうですし、もっと身近な炊飯器や電気のon/offのスイッチ、今見ているこのwebページなどもプログラミングが使われています。

普段私たちは、これらを「使う側」でしかないので、それが一体どのようにしてできているかを意識することはないでしょう。

しかし、それらは確実に誰かの手によって作られています。誰かが作ってくれたモノによって私たちの生活は豊かで、成り立っています。

日本における教育とは、何かと「受け取る」ことが多いものであるとぼくは思っていますが、ここに質的な転換をもたらせるのがプログラミングの醍醐味の一つです。

消費するんじゃなくて、作る側に回る。何かを生み出す。自分で組み立てていって、アウトプットを作る。

今の学校教育では「受け取る」ことのほうが圧倒的に多いでしょう。何かを生み出す、作るという経験は少ないんじゃないかと思います。

しかし、世の中に出た後、社会に出た後に大事になってくるのは、こうした「作る」ことです。

特にこれからの時代はもっとその色が強くなってくるでしょう。人に言われたことだけやる人間では、働いていくことも「メシを食うためだけ」と割り切って「つらい」と感じるかもしれません。

「作る側」に回ることができれば、人生を面白く、楽しく生きていくことができるかもしれない。

別の言葉で言えば、「自主性」です。
「受け身」でいるのではなく「自主的」になること。そういう自主学習をする。

学校時代から、こういう体験を刷り込んでいくことは非常に大きな財産になると僕は信じています。

■失敗を良しとする。何度も試した先に、できるようになる

「むしろ、たくさん失敗した方がいい。」これもプログラミングによって磨ける大きな姿勢です。

プログラミングの世界では最初から正しいプログラムを作ることはできません。
まず作ってみて、実際にどうなるか動かしてみて、意図と違ければどこに原因があるのかを探して、また考えて直す、そしてまた動かしてみる。

こういう試行錯誤の連続の世界です。むしろ、たくさん間違った者が遠くに行ける世界です。

今の世の中、トライ&エラーを繰り返せる人材の方が生命力は高いと思います。

そして、これも学校ではなかなか「失敗しろ」という文化はない気がします。(そういう学校なのだすれば、良い学校ですね)

いきなり100%の完成度を目指すのでなく、とりあえずやってみる。作り始めてみる。手足を動かしてみる。1%でも2%の進捗でも良いからまずやってみる。

そうして、粘って粘ってコツコツやっていくと、完成度が10%になり20%になり、50%になり、100%の完成度に近づいていく。

これは大人になってから、実際の仕事で行うプロセスに等しいと思っているので、そういう体験を今のうちからできることも大きいと思います。

できなかったことができるようになる。わからなかったことがわかるようになる。こういう経験は好奇心を刺激して面白いものです。

■できるだけ「教えない」こと

先生としては、「失敗をさせる」ために重要なことがあります。

それは、「あまり教えない」ことです。

人にもの教える先生や講師という立場はどうしても教えたがりますし、色々と教えることで変な話安心感が(自分のほうに)生まれたりします。

ただそれで満足していてはダメだなと僕はいつも思っています。

教えるのではなく、一緒に肩を並べて、一緒に考える、一緒に悩む、一緒に学んでいく。それでいいのではないかと思います。

(だから、僕もよく「ん〜わかんないなー。できないなー」なんてことを、生徒の隣でよくつぶやいています笑)

むしろ、できるだけ教えない方がいい。というかその方が難しいんです。教えるのは簡単です。

例えば、生徒が間違いであるプログラムを組み始めた時、もちろんこちらとしては先がある程度読めるので、「そのやり方でいくと多分うまくいかないよ」というのはわかります。

そして、その時点で方向修正をして、正解へと教えていくのは絶対にやっちゃダメです。

これは、「失敗を摘み取る行為」です。その子の可能性を潰すとすら思います。

とにかく自由にやらせてみる。自分のやり方、自分の思う方法でやらせてみる。何かやろうとしているときには先生は見守る。この姿勢が大事です。

だから、僕のレッスンでも例え扱うカリキュラムが同じだとしても、生徒によって途中のプロセスは異なっています。違うものができることもあります。

でも、それでいいんです。その子のやり方、その子の特徴を尊重する。
「自主性」を持って進めて、自分で間違いに「気づく」ことも1番の学びになります。

そういう可能性は、先回りして潰しちゃいけない。

ただし例外として、学びはじめの初心者の時などにはある程度のことは教えてあげる必要があるでしょう。

何も知らない初期の状態では、当然「はい、どうぞ。自分でやってみて」といったところで「何をしたらいいのかさっぱりわからない」という状態になりますから、ある程度の武器は与えてあげる必要があります。

何事もそうですが、ある程度の道具があり、武器があり、基礎があって、そこからやっと自分で動き始めたり、思考ができたり、応用ができたり、オリジナリティーが生まれたりするのです。

ですので、「教えなきゃいけない部分」と「教えずに見守る部分」の範囲を自分で考えながら指導していくのが良いのではないかと思います。

そして、そもそもプログラミングにおいては、正解は一つではありません。

「正解はひとつじゃない。いろんなやり方があるよ」ということは、レッスン中も僕も口をすっぱくして繰り返し言います。

学校の勉強は基本的にテストに向かってやりますし、最終ゴールは「受験」ということになりますから、どうしても正解があり、それを学んでいくというスタイルです。

しかし社会では、正解が見えなくて自分で見つけていかなくちゃいけないし、やり方も一つではありません。それが大人になってからの仕事です。厳しい世界です。

そういう経験もプログラミングを通してできることは大きな糧になるでしょう。

■「いま学んでいること」と「現実世界」をつなげる

これも大事な視点です。僕はレッスンの節々でたまに脱線した世間話をチラッと入れます。

例えば、今日Aという内容を勉強したのだとしたら、Aという技術は身の回りのこんなことに使われているよ、Aという技術を使ってこんな仕事をしている人がいるよ、いくらぐらいお金になるよ、などです。

できるだけ学習と現実世界のリアルを繋げていく作業を意識します。

こうすることで、「自我に目覚めさせること」にもつながるのかななんて思っています。

教えているのはあくまでプログラミングという一つの世界、しかもそのほんの一部でしかありませんが、いま学んでいることと現実世界がつながり始めると、「外の世界」につながると良いなと期待しています。

子供というのは、通常接する大人は親と学校の先生ぐらいでしょう。
そこに親でも先生でもない、僕のような人間が話をする機会というのは手前味噌ですが、影響があるのだろうなと思いながらやっています。

「社会にでたら、こうして働くのか」
「この技術が、世の中のこんなことに使われているのか」

こういったことがリンクしはじめると、他のことにも興味を持ち始め、ゆくゆくは「自分は何をしたいのか」といったことを考えてくれるようになったら嬉しいですね。

学校という世界は、とにかく狭い宇宙の中です。
でも実際の世の中はとてつもなく広い。

社会に出てから、いろんなことを知り、自分の興味を探るのではなく、今のうちから、「世の中ってこうなってるんだ」「あ、面白そうだな / つまらなそうだな」「自分は何が好きで何が好きじゃないか、それがよく分かった」とか、そういう感性を育てることが大切だと思います。

以上、かなり長くなりました、今日はおしまいです。

結局は、教えるに当たって大事なのは本質を忘れない、ってことなのかなと思います。

未来の可能性を広げようと思ったら、個々が持ってる原石を見つけて、信じて、伸ばす方法を考えて実行してみる。外の世界も見せてあげて、新しい視点を与えてあげる。

そんなことを試行錯誤しながら、僕も探っているところです。

多様性時代には、集団学習よりも個別学習を選べ

こんにちは、石川大貴です。

今日は、最近僕がプログラミングの家庭教師をしている理由について書いていきます。

僕がなぜプログラミング家庭教師をしているのかという理由ですが、
一番は「好きだから」の一言に尽きます。今は、正直自由なことをしているだけですね笑

web系の仕事はずっとしていましたが、プログラミング自体を覚えたのはごく最近のことです。プログラミング自体も好きですし、子供に教えるのも楽しいので、趣味みたいな感じでやっています。

生徒の反応が見えて、目の前の子供の成長を見守ることができるのは、もうシンプルに楽しいですね。

マンツーマンなので、その子供によって教える内容や教え方も変えながらやっています。

勉強や習い事系はなんでもそうですが、習う方法として「個別学習」か「集団学習」かという選択肢があります。

僕の場合は家庭教師ということで個別指導の形でやっています。

実際に自分でやってみてよく分かりましたが、「効率」という観点だけでみると個別指導、しかも、生徒のご自宅まで訪問して直接マンツーマンで教える対面式の家庭教師スタイルはめちゃくちゃ効率が悪いです。

1件稼働するだけでも、まあまあ時間と手間がかかります。おまけに個別カスタマイズなので、準備も毎回かかりますし、行き帰りの時間もかかりますからね〜。いや〜、、、なんて非効率。でもまあだから良いんです。直に会ってレッスンする方がなんか人間味があって僕は好きです。

もし仮に、この家庭教師だけでお金を稼ごうと思ったら勝手が変わると思います。

何件も受け入れをして過密に忙しく稼働するか、1件あたりの単価を大きく上げていかないと成り立たないでしょう。準備にしても、そう1件1件個別に用意するよりも、できるだけ統一化して使いまわせるものばかりを用意しておく方が合理的です。

幸いなことに、僕の場合は一応メシの種が別にあるので、これでお金を稼ぐ気は全くありません。これに関しては、好きだからやってるだけです。

なので、マイペースに楽しく没頭できる範囲に調整しながらやっています。

そして、なぜ個別指導を選んだのかの理由ですが、それは「子供により影響を与えられる形だと思うから」です。

教える内容を個別にカスタマイズできるのもそうですし、もっと言えば、直接会って教える、親や学校の先生以外の大人と密に触れられる経験というのも子供にとっては大きいじゃないかなと思いながら、普段接しています。

だから、プログラミングの内容は当たり前ですけども、レッスン中の言葉遣いとか雑談とか立ち振る舞いとか、そういうことも大切にしています。個別指導の良さがここにありますね。すごい非効率だけど、体温があるというか。

■「集団学習」と「個別学習」

実は教えている生徒さんの中には、プログラミング教室に通っていたのちに、僕の個人レッスンを受けた小学生もいます。

「プログラミング教室」というのは集団で学習する形式です。

一番最初の個別レッスンでその子を見た時に、確かにパソコンの使い方も慣れているし、プログラミングの内容も色々と知ってはいました。賢いな〜という印象でした。

ですが、1年間通われていたそうですが、その割には「自分でできる」ところまで理解し切れていないかもな??という感じがありました。

試しに、即興でとても簡単なプログラムの問題を自分で書かせてみたところ、正解までたどり着けませんでした。

逆に小難しい技まで覚えている分、自分が知っているいろいろなパーツを組み合わせてしまって、正しく動くプログラムが作れなかったわけです。

まっさらな状態で、イチから自分の頭で論理的に考えていけば、すぐにできるプログラムなのにです。

付け加えておきますが、そのプログラミング教室は有名どころです。お世辞抜きにしても、内容も制度もしっかりしていると思います。さらに、その子自身もプログラミングの素質は高く、理解力や集中力も間違いなく高いタイプです。

なぜこんなことが起きるかといえば、やはり、「集団学習」と「個別学習」の性質の違いだと僕は思っています。

この集団学習か個別学習かという点は、教育に関してはとても重要な要素ですので、親としても先生としてもよく理解しておくと良いかと思います。

プログラミングの場合は特にそうですが、積み上げ方式で1つ1つ学んでいかないと前に進めなくなります。最初は特にそうです。

集団学習では、先生1に対して生徒が8人とかになりますから、どうしても、カバーし切れない部分は出てきます。

プログラミングは、必ずどこかでつまずきます。理解できない、分からない部分が出てきます。それも、個人によってその場所は異なります。

いくら全体でスピードを合わせるといっても、限られた時間内のなかで、今日はここまで進めるというカリキュラムがあるのであれば、「正解を見せる」ことが必ず必要になるはずです。先生としては、それが一番簡単に進められますので。

もし生徒のためと思って、誰かがつまずく度に、その都度ぜーんぶ個別に一緒に考えて、解決しながらやっていたら、多分1時間で全然進まずに終わるでしょう。それはそれで問題ですよね。集団授業が成立していません。

生徒にとっては正解のプログラムが見えれば、とりあえず先生が言う通りに同じプラグラムを組めば意図通りに動くわけですから、楽しい!できた!という状態にはなります。「なぜそうなるかはよく分からないんだけど、その通りに動くから良いか」という感じで授業が終わります。

毎回それが続いていたら、興味や好奇心などは満たされるかもしれませんが、本当の力は実は積み上がっていない、なんてことは普通にありそうです。

これは、誰かが悪いというより構造的な問題です。

集団授業では、抜きん出た才能や個性というのは邪魔になります。

いちいち合わせていたら、全体が前に進みませんからね。誰か1人を不平等に満足させると、他の39人を我慢させることになり、これは先生としては失格になるわけです。集団学習というのは、そういうバーターシステムになっている。

だから、扱う内容も、扱うレベルも、画一的な方へ均質的な方へと自然と向かっていく。そういう宿命にあります。

集団学習は、効率がよく、平等である。だけど、個性は殺してしまう。それが特徴です。

先生が悪いとか、学校が悪いとか、そういう話ではなくこれはシステムの問題です。
学校の先生とかも、きっとたくさんの制約の中でどこか「もやもや」を心に抱えながらも、余裕がない中で生徒の教育に当たっているんだろうなと想像します。現場は大変でしょうね。

まあ、集団は集団で、良さもたくさんありますし、逆に集団でなければできないことだってたくさんありますので、僕は役割の違いなのかなとは思っていますが。

教える先生側としても、また習い事を受けさせる親としても、この「集団か個別か」はシチュエーションによってよく吟味されると良いかと思います。

今日は「僕が最近プログラミングの家庭教師をしている理由」という内容でした。またね〜。

プログラミング教育は将来使える力となるのか?

こんにちは。石川です。

2020年からプログラミング教育の導入が小学校で始まります。

気になっている方も多いのではないでしょうか?

僕は、プログラミングを2018年に初めてからwebサービスを自分で作れるようになりました。

これまでいろんなことに手を出して勉強してきましたが、中でもプログラミングは当たりだなと思っています。

挫折してきたものが多くある中でも、プログラミングをしてる時間はすごく没入できて、楽しく続けられています。

当記事は、「プログラミング知らないけど興味あるという方」や「自分の子どもにプログラミングをやらせるかどうか悩んでいる方」に向けて書いていきます。

なぜプログラミングは面白いのか?

不思議に思ったので考えてみました。

結論から言います。

「プログラミングは、分からないことが次々と襲うけど頑張れば解決できる」

多分これが1番の面白さだと思います。

僕はまだまだペーペーのエンジニアです。

周りのプログラミング学習者と比べて、深い所まで突っ込んで勉強まではできていません。

僕の場合はトップエンジニアになりたいわけではなく、経営者(事業を作る人)として力をつけていきたいので、プログラミングしてる時間はかなり少ない方です。

それでも、分からないことは次々と襲って来ます。

「あれ、これってどうやったら実現できるんだろう?」

「ん?ネットにある記事を読んでも仕組みが理解できない!」

「えー、これで上手く行くはずなのに、なぜか思い通りに動いてくれない!」

最高ですよねこれ。

プログラミングをやっていると、どれだけ勉強して進んでいってもこういった「詰まる」経験はなくなりません。

挑戦して、調べて、考えて、やっとできる。(できないままの時もあるw)

これの繰り返しです。

永遠の勉強。それがプログラミングです。

プログラミングは、人の学習能力を上げる

そもそも教育には、「コンテンツ」と「トレーニング」という二つの側面があります。

プログラミングの場合は、「コンテンツ」としてはプログラミングスキルそのものですね。

webサイトを作れるようになったり、ロボットや機械を作れるようになったり、ゲームをつくれるようになったり、データを使って解析できるようになったり、色々できるようになります。

「トレーニング」としては、自己解決能力であったり、論理的思考であったり、集中力などが身につきます。

プログラミングの効用として、一番大きいのは「人の学習能力」をあげることだと考えています。

プログラミングに限らず、人生において「どれだけ分からないことに出会えるか」の多さで、人の成長は決まってきます。

分かる事ばかりやっている人は、当然成長が止まります。

心の安定は得られるかもしれませんが、負荷も変化もないので面白くありません。

つまらない人になります。

「どれだけ分からないことに出会えるか」という点において、プログラミングは恰好の教材だと思います。

ちょっとかじってみるとわかりますが、勉強していけばいくほど分からないことにぶつかります。

そして、有り難いのはプログラミングの場合、大体ネットで正解にたどり着けることです。

世界中の誰かが同じ問題にぶつかっていて、その解決プロセスをネット上に書いてくれているからです。

例えば、CSSというプログラミング言語をいじっていて、「あれ、ボタンの形を丸くしたいんだけどどうしたらいいのか分からない!」と思ったら、グーグルで「css ボタン まる」みたいな感じで検索すると正解が出てきます。

つまり、自分で問題にぶつかって、自分で調べながら、解決していくことができます。

これができるのが、プログラミングのとても大きな所です。

ちなみに、日本の学校教育では基本的に「問題も与えてもらって、正解も教えてもらう」形です。

少しずつ変わっている流れは感じられますが、まだまだ「先生1人が喋って、生徒25人が聞く」スタイルです。

だから、学校教育を普通に受けてきている私たちは、教えてもらうことに慣れてるので、プログラミング体験はきつい人もいるのかもしれません。

分からないことが出てきても逃げない。

答えを待たずに、自分で調べて、自分の頭で考えていく。

社会人になるまでそういう経験をしてない人は意外と多いんじゃないでしょうか?

プログラミングと世の中の仕組み

次に、「コンテンツ」としてのプログラミングを考えて見ます。

プログラミングは、将来を生き抜く武器になるのでしょうか?

一旦脱線して、経済の話をします。

世の中というは、生産者と消費者に分けられます。

ほとんど全ての大人は生産者であり、且つ消費者でもあります。

お肉屋さんで1kgのお肉を買う行為。これは消費です。

お肉屋さんがお肉を売る行為。これは生産です。

牛農家さんが牛を育てる行為、誰かが牛を殺してさばく行為、運送屋さんがお肉をお肉屋さんまで届ける行為。これらも生産です。

あなたの身の回りに在るモノを振り返って想像してみてください。

私たちの生活は、たくさんの生産活動によって成り立っています。

♪一息つきながら〜人はもっとはたらく〜、の世界観ですね。

今日買ったおにぎりも、スマホで読んだニュースも生産されたモノです。

その裏には、沢山の人の労働があります。

そしてプログラミングというのは、この「労働」を自動化して「機械」に置き換える行為です。

プログラミングは、「モノやコンピュータなどに自動で何かをさせる」ことです。

玄関脇のスイッチを押したら、チャイムが鳴る。

「O N」ボタンを押したら掃除機が動き出す。

今あなたが見ているこのページ、「タイトル」を押したらトップページに遷移する。

全部プログラミングです。

子どもがやっているゲームも、皆が使っているアプリも、家庭や仕事場で身の回りにある機械も、プログラミングがあって成り立っているモノはとても多いのです。

ものすごく乱暴な言い方をすれば、もしプログラミングがこの世から消えたら、身の回りのモノはほとんどなくなるはずです。

何が言いたいかというと、プログラミングができると生産活動ができる幅がグッと広がるということです。

つまり、プログラミングができるとお金を稼ぐことに繋がりやすいかもねという話です。

先ほど、世の中は生産活動と消費活動で成り立っていると言いました。

そして大抵の場合は、生産活動(つまり、労働)と引き換えに、対価としてお金を手にすることができます。

生産は消費されることとセットなので、人の役に立つものを生産するほど、手にするお金の額も大きくなりそうです。

子どもは、大人になるまで消費専門の存在と言えます。

「生産活動をするために準備をしている」とも言えますね。

プログラミングとは、何かを生み出すための技です。

近年AIに仕事を奪われると叫ばれていますが、プログラミングで一流まで突き抜ければAIを作る側(つまり、何かの生産活動を自動化するモノを作る側)にまわれる可能性はあります。

だから、消費者から生産者に脱皮するための大きな武器になるかもしれません。

プログラミングは、大衆化するのか?

2020年からプログラミングが必修科されます。

予定はこんな感じです(2018年時点の情報)

2020年度 小学校で必修化
2021年度 中学校で必修化
2022年度 高校で必修化
2024年度 大学入試

先述した通り、プログラミングは様々な生産活動を担うので、エンジニアは実需がとてもあると思います。

「エンジニアが足りない!」と悲鳴をあげている企業はたくさんあります。

これからの時代も、もっともっと増えるはずです。

しかし、プログラミングができれば安泰なのかと言えば、そうではないと思います。

仮にもし国民皆ができるようになったら、それは代替が効くということなので給料は上がりません。

プログラミングは、それほど学習コストが高くありません。(お金をそんなに払わずとも時間さえあれば誰でも学習できます)

ですので、みんなができるようになればコモディティになります。

給料としては、むしろ下がる可能性もあるのかなと思います。

これは単に需要と供給の問題です。

同じ質で働ける人がたくさんいるならば、高い賃金は出ません。

企業のインセンティブは稼ぐことなので、安いエンジニアがいたらそっちに流れるのは自然の摂理です。

労働プールが広がりチャンスが大衆化すると、賃金は上がりにくくなります。

さらにもっと言うと、今後はグローバルでの競争も起きます。

プログラミングのコードは、ユニバーサルなものなので、基本的には、日本人が書こうがベトナム人が書こうが変わりはありません。

ベトナム人やフィリピン人など、すでに優秀な人も少なからずいます。

経済成長率が高く勢いのある国は教育レベルも上がっていくので、良い人材はまだまだ増えていきます。

これまでは場所と言語という物理的な障壁によって守られてきましたが、何らかの形で、コミュニケーションの障壁が限りなく下がる日もそう遠くないでしょう。

もはや、国境はありません。

人件費の安い国の人と勝負したら、どうなりますか?という問いです。

それを考えていかなければいけません。

ここから何が言えるかと言うと、ただプログラミングができるだけではダメで、突き抜ける必要があるということです。

突き抜け方はいくつかあると思います。

①【量をこなす。早く始める】

単純な話ですが、効果は抜群だと思います。

その理由も単純で、コモディティになったとしても量をこなす人は少ないからです。

量をこなす人が少ないので、それだけで希少性が上がります。

希少性が上がると、他に代替が効かないので賃金も上がりやすくなります。

日本でプログラミングが必修になると言っても、「プログラミング」という科目ができるわけではありません。

ちゃんとコードが書ける人はほんの一部になるだろうなと想像しています。

あくまでこれはwebサービスの一例ですが、例えばよく皆さんがみているヤフーさんのサイト。

これらのwebサイトは全てこんな感じの文字列によって書かれています。

乱暴な言い方をすると、コードが書けるというのはそういうことです。

プログラミング教育が必修化されると言っても、「プログラミング」という教科ができて、プログラミングスキルをゴリゴリ教えるわけではありません。

「プログラミング的思考」に触れようねということです。

「プログラミング的思考」とは、「ゴールを設定して、どうやったらそのゴールまで達成できるのかのプロセスを論理的に組み立てる力」です。

まあ思い切りの悪い日本のことなので、プログラミング教育は中途半端になるんじゃないかな〜と個人的には思っています。

実際、英語は6年間やってもあのレベルですからね。

「英語」はコンテンツとしてもすごく実用的なものだと思いますが、学校教育の英語科目は「実学」には程遠いわけです。

僕は東京外大に入っているのですが、入学時はほとんど喋れませんでした。

今はどうなのか分かりませんが、外大にも英語が喋れない人は普通にいっぱいいました。

いわば、試験を通ることがどういうことを意味するのかを端的に表している例だと思います。

学校の勉強だけを一生懸命しても喋れるようにはならないってことです。

ちなみに、プログラミング教育ではイスラエルなんかがすごくて、義務教育でC+とC++(言語の一つ)をやったりして、兵役とかで皆python(言語の一つ)を勉強したりするわけです。

もう敵うわけないですよね笑。

世界的には、そんな人たちがゴロゴロいます。

話を戻しますが、日本でプログラミングスキルが大衆化したとしても、やはり質の高いエンジニアはめちゃくちゃ求められます。

今も正確に言うと、「質の高い」エンジニアがいなくて企業は困っているわけです。

そういう人材にはきちんとお金を払います。

時間をかけて真剣に戦い続けて、積み上げているエンジニアさんはやっぱり次元が違うんだろうなと感じてます。

プログラミングは、かけた時間とスキル技量が比例するものです。

努力した人が報われる世界だと思います。

Facebookを作ったマークザッカーバーグも12歳の時からプログラミングの家庭教師をつけていたのは有名な話です。(この方は天才なので比較にならないかもだけどね)

結論として、悩んでいるならば、早く始めてみた方が絶対に有利です。

自分も子どもには、出来るだけ早い段階で触れる機会は作りたいと思っています。

②【有望な言語に挑戦する】

「プログラミング」と言っても色々あります。

「外国語」と一口にまとめてるのと同じようなもので、中には英語、フランス語、スペイン語、中国語、ラオス語、とか色々あって、できることも全然違います。市場も違います。

ですので、どの言語をやるのかはまず重要になってくるかと思います。

みんなができる簡単な言語だけをやってもコモディティーになるので、あまりみんなが手をつけていない言語を勉強していくのも一つの戦略です。

早いうちに学習して突き抜ければその言語においてポジションが取れるので、希少性も上がり戦いやすくなります。

但し、そうした言語は最新技術でまだ情報が少なかったり、普通に難しかったりするので、当然ながら学習コストは高めです。

また、作りたいものから逆算して言語を選ぶのも大事です。

例えば、ゲームを作りたいのか。ゲームの中でもどんなタイプのゲームが好きなのかによって必要な言語は違ってくる。といった選び方です。

2020年に小学校でプログラミングが導入されます。

現時点で詳細はまだよく分からないのでハッキリとした事は言えませんが、おそらくビジュアルプログラミングが中心になるのではないかなと思っています。

ビジュアルプログラミングとは、パズルにような感覚でロジックを組み立てたりできるものです。ゲームに近い感覚でできます。

ビジュアルプログラミングと、プログラミングの大きな違いは、コードを自分で書くのか、書かないのかです。

ビジュアルの方では、もともと色々なパーツが用意されてあって、そこから「選んで」ロジックを組んでいくような形が基本です。

コードを書く量が少ないので、とても取っつきやすいです。

子どもは初めて触れるので興味を奪わないことが大事だ、との論調でおそらくビジュアルプログラミングが中心になるんではないかと思います。

導入としてはすごく良いです。

ただ、そればかりだと僕が最初に述べた、「わからないことに出会う」経験が減ってしまうこともありそうです。

「何もわからない状況から自分で答えを探していく」

それがプログラミングの真髄だと僕は思います。

ですので、コードを書くことを早くから始めるべきかと思います。

そこに差が出るんじゃないかと思ってます。

③【プログラミング以外の得意分野を作る】

プログラミングだけでは代替が可能になるので、それに何かを掛ける戦略も良いと思います。

プログラミング × 数学
プログラミング × 将棋
プログラミング × 農業
プログラミング × マンガ

まあなんでも良いとは思います。

いろんな分野でプログラミングは必要とされているので、得意な分野が他に作れると、より武器として輝くかもしれません。

要は、興味のアンテナをプログラミングだけに絞らずに、他にも好きなことがあるならばやったほうが良いということです。

AI時代には、マニア力が価値を持ってきますので。

オーナーになるか、社員になるか

最後にもう一つ見落とせない視点があるので、書いておきます。

この間、映画「シェフ 三ツ星フードレストラン」をみました。
とても良い映画でした。

ストーリーはこんな感じです。

古風なオーナーと対立し、自分の好きなように仕事ができなかった有名シェフが、フードワゴンを始め、自分の好きなように自由に仕事をするシェフに変わる物語。

これは、プログラミングをこれから学ぶ人にとっても確実に知っておいた方が良い視点です。

オーナーになるのか、社員になるのか、です。

これは好き嫌い、向き不向きもあると思うので、一概にどちらが良いは言えません。完全にその人の価値観によります。

現実的には、どっちも大変です。

自分でサービスを作って世の中に広め、さらにお金を稼いでいくのはそう簡単な事ではありません。

その代わりイニシアチブは自分が握れます。自分の好き勝手に仕事ができます。

会社の中で働く場合は、組織はそもそも分業で成り立つので、いくら裁量がある場所でも100%ではありません。我慢する時が必ず出てきます。

その代わり、規模の大きい仕事ができたり、教えてもらえたり、そもそもちゃんと会社として既に成り立っているわけだから、安定して給料も出ます。

プログラミングを学んで自分で生きるのか、会社に務めるのかどっちの道へいくんだという話ですね。自分の幸せに直結しますので、経験を積み重ねながら考えたら良いと思います。

最後の結論として、最初に戻りますが、プログラミングによって磨かれるのは、自己解決力だと思います。

プログラミングは分からないことだらけ。

だから、楽しい。

この能力があったら、何でも学んでいけます。最強です。

スキルなんて時代時代によって、すぐ変わっていきます。

だから、もっと根幹的なそういう力がものを言うのだと考えています。

さてプログラミング、やりましょう。

 
【ララボ】
勉強以外の子供向け家庭教師マーケット「ララボ」を運営してます。子供達の将来の選択肢を増やすために日々頑張ってます。
・子供が興味のあることを教えてくれる先生を探せます
・ギター、絵画、ファッションデザインなど自分の好きなことで家庭教師に今すぐ登録できます。
興味がある方はコチラ↓

家庭教師マーケット「ララボ(LeLabo)」

 

ツイッターを楽しみたい方はコチラ↓

イシカワのツイッター