社会人のメモ帳

忘れたくないことアレコレ

【エンジニアの独り言】何かを教えるという行為について

何かを教えるという行為について

人に何かを教えるには、その何かについて深く理解している必要がある。その理解は生半可ではいけない。個々に暗記しているだけの知識という名のなんちゃって理解ではなく、関係性を体系的に学んだ生きた知識としての理解であることが求められる。

現在、業務ではJavaを主に使っているのだが、自分の抱えている案件とは他にJavaの経験が浅い新人に教えることが多々ある。聞かれる内容として多いのは、「なんか良く分かんないけどエラーが起きてしまったんです……」という問題だ。

さて、この問題を解決するには、エラーログを見て、該当箇所を見て、修正すれば良い。とはいえ業務未経験な者にとって、この三段階を辿ることが難しいようだ。

エラー改修の第一段階で壁となって立ち塞がるエラーログは英語で吐き出される。

NULLにアクセスしてしまった場合、NullPointerExceptionという例外処理が走る。他にも配列の範囲外にアクセスしてしまった場合、ArrayIndexOutOfBoundsExceptionという例外処理が走る。

「こういった例外が発生しているので処理を止めてますよ」と教えてくれているので、その情報は有り難く頂戴する。次は「どこで発生しているか?」であるが、これもエラーログに記載してある。大抵、ファイル名と行数が記載されている。

いよいよ第二段階、該当箇所を見る。

NullPointerExceptionであればNULLのインスタンスにアクセスしてしまってないだろうか? メソッドの戻り値がNULLでないか? とにかく対象のインスタンスがNULLになってしまうケースかどうか(まぁ、必ずあるのだろうが)をチェックする。

この第二段階をすっ飛ばして、第三段階の修正方法を教えるだけならば簡単だ。無論、エラーの難易度にもよるが(NullPointerExceptionの場合はそれほど苦戦しないように思う)、大抵の場合はしょうもないミスなのである。

この時、先輩としてできること、ブログ主としてしてあげたいと思うこと、は下記の2つだ。

  • エラーログの見方、検索方法
  • 修正方法の答えは一つではないこと

 

何を教えるべきか

エラーが発生した時の解消方法は、ケースによって異なる。NullPointerExceptionが発生してしまうので解消しようとしたが、実際のところ仕様通りかもしれない(……いや、さすがにNullPointerExceptionの発生が仕様通りはないと思うが)。

なので最終的な答えだけでなく、自分がどのようにしてその答えに辿り着いたか?を教えるように心がけている。そのために自分がエラーにぶち当たった時の経験を、感覚ではなく理屈を説明できるようにメモをするなり記憶するなりといったことを日頃から心がけている。

自分が過去に同じミスをしていた場合は、その理屈を説明していけばいい。逆に自分が経験したことのないエラーだった場合、経験則に基づいて、一緒に原因を特定する。その際、エラーログの見方なども教えていけば、次に繋がっていく。

良く教育で言われている「魚をあげるのではなく取り方を教える」ということを目標にしている。

また、バグを修正するにしても方法は一つではないということも教えるようにしている。先輩は絶対にミスをしない、先輩の言うことが絶対という関係性はよりも、「こっちの方が良いんじゃないですか?」と指摘しやすい関係性を築きたいという意図がある、

教育というのは後輩を戦力にするために行うというのもあるが、自分が働きやすい環境を作るという意図もある。今助けておけば、自分が困った時に助けてくれるという打算は、誰も損をしない良い打算だと思う。

 

資格勉強記事について

資格勉強で学んだことや、書籍を読んで学んだことをまとめた記事を、日頃から作成している。

資格勉強の記事に関しては、備忘録的な側面が強く、読者の知識レベルはあまり考慮できていない。これは大きな反省点ではあるものの、あくまで自分の勉強の理解を言語化すること、そしてモチベーションを保つことの方を優先し、記事更新が滞らないように努めている。

……とはいえやはり、読んでくれている方の理解を助けられるようにしたい。

そんなことを考えつつ記事を更新していて思うのは、知識の言語化の難しさである。

いずれJava Goldに合格した暁には、改めて学んだことを体系化し、学習を進められる記事を書きたいと思っている。勉強記録記事については、学習で詰まったことや、「こうすれば覚えやすいのでは?」と思ったことをまとめていければと思う。

改めて、これからも本ブログをよろしく!