こんばんは!
4月が始まり、私の下にもプログラミング初学者の後輩が付きました。
業務ではC#が必須になるので、まずはその勉強の為の課題を出してやってもらっていますが、なかなか苦戦しているようです。 ふと自分が初学者の頃はどうだったろうと思い返すと、ぼんやりとしか思い出せません。
これはきっと初心を忘れてしまっているのでは…?🤔
初心を忘れた人間に後輩の指導が出来るのだろうか…?いや出来ないだろうと思い、まずはしっかりとかつての私の状況を思い出してみることにしました。
プログラマ1年生の頃の自分
基礎知識が無さ過ぎてコードが読めない
当時はRuby, JavaScriptくらいしか言語を知らず、静的型付け言語を書いたことがありませんでしたので、C#の構文がしっくり来ずに理解に時間を要しました。
jsの感覚でこうかな?と思って書いたコードのコンパイルがなかなか通らず、かといってIDEが吐くエラーの意味も分からず、ただひたすらに脳内で「動け!動いてよ!」と叫んでおりました。(シン・エヴァ面白かったです)
今思うとデータ型を明示していなかっただけだったんですけどね。
周りの先輩が発する専門用語を知らないので説明が理解できない
よく飛び交うサーバって何?仮想化って何?という感じでした。
入社当初は仮想環境にUbuntuを立てて、その中でNginxを動かすような構成のサーバが本番環境で動いていたので、その辺りの説明を先輩から受けた覚えがありますが、ちんぷんかんぷんでしたね。
趣味のRaspberry PiからLinuxを触り始め、最近やっとインフラ周りの理解が少し進んできたなという感じです。
ググってもある程度の前提知識が必要な記事ばかりヒットするので分からない
某黄緑色の投稿サイト等は顕著ですが、必要最低限の説明だけしか書かれてなかったりすることが多くて苦労した覚えがあります。
早いところ英語に慣れて、StackOverflowなりGitHubのIsuueなり公式ドキュメントなりを見た方が多分早く解決したんだろうなぁと思います。
勉強することしか仕事がなかった
単純に仕事が無く、参考書を読んで勉強することだけが新人の自分の責務でした。
本を読むだけって個人的に思いのほか身につかないんですよね…。 出来るような気にはなりますが、実際ソース書けって言われても本の内容思い出せなかったり…。
かつての自分を顧みて
思い返すと、新人の頃の自分の教育環境は整っていなかったと思います。 だからこそ、私の後輩には出来る限りの環境を整えるべきだと考え、今現在実践をしてみています。
不足している基礎知識を早いうちに身に付けてもらう
動画やサイト等、手っ取り早く勉強するための媒体は色々ありますが、基礎的な知識はやはり参考書で網羅的に学んでもらおうと思っています。
最初は本を読むのがかったるかったりするんですが、すぐに実務で使わない知識であっても、言語の仕様や思想をぼんやりと理解していると、他の概念に触れる時に応用が利きます。 あとは参考書すら読めないようであれば今後も厳しいだろう…という、ある意味残酷な指標にもなります。
不必要に専門用語は使わない
専門用語は自分で勉強するうちに分かってくると思うので、こちらから説明等する際は平易な言葉に置き換えます。 ただし、語弊の無いようにしないと間違った認識で理解してしまう可能性もあるので塩梅が難しい。 本人の理解レベルに合わせて単語を選んであげようと思っています。
ググり方のアドバイス
この辺りは見ている限りでは私の後輩は得意かもしれません。
検索する時の勘所が分かっていると、知識を忘れてもすぐに引っ張り出せるので、悩んでいるようなら答えを教える前にググり方のヒントを与えてみるつもりです。
勉強と並行して複数の小課題を作る
参考書ばかり読んでいてもダレるので、1ファイルに数十行程度の簡単なコードを書く課題を複数出しています。
書いてほしい処理の内容とコーディングのヒントをいくつか事前に伝えておき、分からない部分はまず自分で調べて書いてみましょうというスタンスの課題です。
あまりに進まないようであれば、追加のヒントを伝える、もしくは基礎知識の勉強に集中してもらうよう誘導し、その後に改めて課題に取り組んでもらう予定です。
あとがき
自分のやり方が功を奏するかどうかはやってみないと分かりませんが、失敗だったならその経験から次の手を考えようと前向きに思っています。 完璧を目指してガチガチにカリキュラムを考えたとしても、相手は人間なのでそもそも上手くいく保証はないですしね。