プログラミングスクールのフィヨルドブートキャンプを運営しています。
プログラミングに限らずですが、メンターの役割の人が、
「生徒の人から質問がきた時になぜすぐに答えを即答してくれないのか」
について書きたいと思います。
質問している人にとっては、「なんですぐ答えを即答してくれないんだよ、ヒントとかいいからさ。ウゼェ〜」と思っちゃうかもしれません。
そこでプログラミングのバグを殺人事件、バグの原因を犯人に例えて書いてみたいと思います。
プログラムが動かない殺人事件
新米プログラマー「このプログラムが動きません、なぜでしょうか?」
新米捜査官「この殺人事件の犯人がわかりません、誰でしょうか?」
ベテランプログラマー「15行目のiの変数が原因ですよ。」
ベテラン刑事「吉田が犯人だ。」
〜次の事件〜
新米捜査官「この殺人事件の犯人がわかりません、誰でしょうか?」
ベテラン刑事「おい!毎回俺に犯人を聞くつもりか?捜査の仕方を覚えろ!」
ベテラン刑事「まず関係者に事情聴取をしろ」
ベテラン刑事「そしてアリバイを調べろ」
ベテランプログラマー「まずエラーメッセージとログを確認してください。」
ベテランプログラマー「まずはprintデバッグをしてみましょう。」
犯人だけわかっても意味がない
多数の事件を経験してきても犯人だけ知ってるだけでは意味がありません。次の事件を解決できる捜査方法を知っている必要があります。
スクールで課題をやるのはそのためであって、答え自体に意味はありません。
あらゆる推理小説の犯人だけ知ってても推理することが出来ないのと同じです。
課題を通して(プログラミングの問題の)捜査方法を学び、習得することが目的です。
プログラミングの捜査方法
プログラミングの捜査方法を身につけるとは、下記を指します。
- デバッグ方法を身につける
- わからない情報の調べ方を身につける
それを学ぶにはまず基本的な用語・概念を学んでおく必要があります。
例えば、
「アリバイってなんですか?」
「事情聴取ってどうやってやるんですか?」
「警察が守るべき法律には何がありますか?」
などを知らないと捜査方法を学ぶことが出来ません。
プログラミングでいえば、
「Terminalの使い方」
「Linuxの使い方」
「HTTPの理解」
などがそれにあたります。
そして自走へ
基本的な知識と捜査方法を覚えればあとは自分で新しい事件を経験していけば一人で成長していくことが出来ます。
プログラミングでも同じです。常に新しい技術が出てくるので誰かに教わるのではなく、自分で技術を習得する必要性が出てきますが、基本知識と捜査方法さえ分かっていれば自分で調べて学んでいくことが出来ます。