転がしておくのが最も安全?
パッと見「触らぬ神に祟りなし」っぽいけど全然違う気もする。しかし何が違うのか明確に説明できない。それはそうと、考えなしに立ち上がらせてまた転ぶ危険を考えたら、たしかに転がしておくのが良い気がする。何を?
いやはや、読解力のキワキワを攻めてくる見出しだ。
…
Rails Tutorialという、Ruby on Railsの無料教材でめちゃくちゃ有名なやつがある。これの勉強会を週1でやることになった。僕の提案で。
気づけばすっかり「プログラミングができる人」扱いになっていて、なんだか不思議な気分だ。実際それなりに勉強してきたから、それなりのことはできるようになった。一年前とは見える景色がずいぶん変わってしまった。
はて、なぜ僕は勉強してるんだろう?
建築学科にいた頃は意地でも建築の勉強なんかしなかったのに…。
…
多分、突然「教える」立場になったのがデカい。
僕も知らないことがたくさんあるのに、遠慮なしに質問が飛んでくる環境。この環境で鍛えられた感じがある。質問に答えられるよう、勉強しなければならなかった。言外の圧力は強い。
建築学科の卒業制作では、四年生が後輩をヘルパーとして雇い、自分の作品作りを手伝わせる。ここでは、おそらく四年生自身に最も学びの効果がある。僕はヘルパーを雇わなかったのであくまで推測ですが…。
話はもどって…。
教える立場になって得られたのは単にプログラミングの知識だけではなかった。
例えば、たくさんの「わからない」に触れたことで、「なにが理解を妨げるのか?」に敏感になり、教え方をデザインできるようになってきた(気がする)。
せっかく得たノウハウ。ちょっとずつでも言語化した方がいいなと思って、短くふんわり「教えること」について書いてみる。
ここで、『エンジニアの知的生産術』より一文だけ引用。
一人の人だけから学んでいると、その人の部分集合になります。
だからよくないよ、みたいな内容(雑だな〜)。詳しくは買って読みましょう。
(プログラマではなくエンジニア。「作る」人全員に激おすすめの本)
ふむ、では僕だけとの「教えるー教わる」関係はよろしくない。
じゃあ僕はどうプログラミングを「教える」か?
ここで浮かぶのは、プログラミングを学ぶ上では、「文章で概念を掴む学び方と、コードを読む学び方があり、どちらも必要である」という直観だ。
概念の説明だけ読んでも実際にコードを書けるようにはならない。逆に、元になっている概念がわかっていないのにコードの一部を読んでも、何がしたいのか全くわからない。コードは概念をもとに組み立てられるものだが、その概念は実際にコードの形で利用可能でなければ意味を持たない。
コードを行動と読み替えても通じる(コードと行動は似ているので)。すると、概念は何と読み替えられるか?僕は言葉だと思う。概念とコードの関係は、この意味で、言うことと実行することの関係に似ている。
僕は、たとえば、親が子にいくら勉強しろと言っても子は自発的に勉強するようにはならないと思っている。
自分が勉強しないのに、それを知る人に「勉強しろ」なんて言っても響かない。人は言葉のみによって学ぶのではないから。子は勉強する人を見て勉強を学ぶ。かといって、勉強ばかりしていても自分の頭が太るだけ。「勉強すること」を人に伝えるには、やはり言葉は必要不可欠だ。
人は、言に学び、行動に学ぶ。だから、教えることとは、有言実行することだ。
言葉と行動が時間的に直列ではなく並列の関係にあるという点で、有言実行の本来の意味とは異なっているけれど、僕にはこの表現がしっくりくる。
僕は、ただ自分の言葉と行動を他人に学ばれるものと認識し、高めていけばよい。
僕が教えるときは、相手の横に座って自分でコードを書く様子を見せながら説明するようにしている。すぐにはわからないことでも、隣で調べる様子を見せる。そうして「プログラミングを(学ぶ/する)とはこういうことなんだ」と学んでもらう。
経験に依拠するガバガバな論理だし、偉そうに書いておきながら結局何度も先人に聞いたような結論ではあるけれど、ようやく自分の言葉と行動で理解するに至った。
…
自分が勉強している姿を見せているから「勉強っていいよね」と言える。子に「勉強っていい」と思わせられる。
僕が子にできることはそれだけ。
行動の伴わないことは言わず、子は転ぶ方に転がしてやろう。
…
そういえば、建築家がどうやって建築を作り上げるのか、僕は全然知らないな。
建築について、いよいよ何も学んでない。