ひょんなことから、最近同僚にプログラミングを教えています。
元々ITとは関係なかった人なので、どこからわからないか探り探りです。
プログラミングを教えるのってけっこう大変ですよね。これできる人は限られるのではないかと思います。
プログラミングを例えば1年程度教えることは可能ですが、もちろんいつまでも教え続けるわけにはいきません。
どのようになれば一人前(=放っておいても継続的に成長できる状態)になるできるでしょうか?
そこらへんを少し考えました。
エンジニアとういうシステムの機能要件みたいなもんです。
- 最低限のプログラミング知識と、IT知識
- 問題を解決するための情報源を確保
- 調べて分からなかったときの解決法を持つ
- 手動テストスキル ・デバッグスキル
- わからないものを論理的に一歩ずつ「わかる」にしていくスキル
- 解決できるまで諦めない根気とモチベーション
- 今は全部あれば詰むことはない時代
最低限のプログラミング知識と、IT知識
最低限、これがないと話が通じないので仕事になりません。
ここらへんで脱落する人が多いと思います。
そこらへんの大学の情報科でも半分くらいは脱落しますよね。
IT知識の方は基本情報技術者試験の参考書が手っ取り早いです。
問題を解決するための情報源を確保
StackOverflowでも、公式ドキュメントでも、本でも先輩でもYoutubeでもいいです。解決のために調べる先が無いといけません。ググり力でもいいです。
もちろん研究レベル・先端技術などはこのようなソースがないので話が違います。
これはあくまで「他のエンジニアと同様に調べることができる」という捉え方です。
調べて分からなかったときの解決法を持つ
上記の情報源で解決できなかった時、それでも仕事は目の前に存在するわけで、どうにかしなければなりません。
- 自分で調査・研究する
- モックを作る
- 仕様の変更を求める
- 他のできるひとに依頼する
など色んなパターンがありますが、選択肢は多いほうが良いです。
手動テストスキル ・デバッグスキル
エンジニアが自分で実装したものに対してきちんと動くことを確認できなければなりません。
テスターや受け入れテストがちゃんとしているところではこのスキルが漏れている人も見かけますが、そうではない組織では実装したものが他者の確認なしにリリースされるかもしれません。
きちんとテストできる必要があります。
わからないものを論理的に一歩ずつ「わかる」にしていくスキル
問題をピースに分解する、また解決したピースを合わせて大きな問題を理詰めで解決する。
科学研究では当たり前に使われている科学的手法群です。
なぜか誰も教えてくれないので、案外ここで躓く新人がいるかも知れません。
参考(ちょっとわかりづらい)
解決できるまで諦めない根気とモチベーション
これは短期的な根気と、長期的なモチベーションです。
エンジニアをやめてしまった知り合いを思い出すと、エンジニアリングの継続自体をどこかで諦めてしまったように思えます。
そもそも苦しいとか、楽しくないとか、興味が他に向いたとか。
私はプログラマー以外にキャリアが考えられなかったのでどれだけ苦しくても続けましたが、もし別にやりたいことがあったらやめてしまったかもしれません。
今は全部あれば詰むことはない時代
今はIT業界はある程度仕事が存在しているので、上記のことができていればまあ詰みはしないのでは?という感じがします。
なにか詰んでる感じがするのであれば、おそらく上記のどれかでしょう。
※ほかにもあるかもしれません、思いついたら書き足します