子供を育てていると、何かを教えるにあたってまずLv1から伝えようとするわけだが、すぐにその"Lv1"は親のエゴだったことを痛感させられる。
例として、子供が言葉を発するようなるためのLv1はなんだろうと考えてみる。
「これは『り・ん・ご』だよ」と言ってみるのをLv1だと考えたとしよう。
実際はこれだけの段階が存在する。
本当のLv1は「規則正しい生活をする」なのだ。
このような経験を無数にしてきた。
そして一つの考え方を思いつく。
「Lv0を考える」だ。*1
自分がLv1だと思っているものは、100%思い込みである。
もっと手前のステップはなにか。もっと簡単にできないか。もっと階段を低くできないか。これをひたすら考えていくのが、何かを教える者の役目だろうと思う。
この考え方をプログラミング学習にも当てはめてみる。
「テンプレートエンジンを自作する」ことを目標にしたとしよう。
ここでいきなりオリジナルのテンプレートエンジンを書き始めるのはレベルの高い行為である。
高すぎる壁にどうしていいかわからず挫折してしまい、何も学べずに終わるリスクがある。
ではこのLv1はなんだろうか。例えば「既存のテンプレートエンジンを写経する」のはよさそうに見える。
そうすれば「写経したものを改造する」などのステップを踏める。
ここでさらに『Lv0は何か』と考える。
そもそも既存のテンプレートエンジンを触って使ってみる段階があることに気づく。
さらに、これから記述する言語・組み込みライブラリ等について学んでおくことが更に手前にあると気づく。
これから学ぶことのLv0は何か。最も優しい次のステップは何か。これが適切にわかると、行き詰まったり挫折するようなことが減るんじゃないかと思う。
これからも注意していきたい。
*1:Lv0は「何もしない」ではないか、というツッコミには「Lv0.1だと語呂が悪い」と返しておく