2012年12月14日金曜日

学習コストを下げるために大切な3つのこと ~エンジニア編~

 子育てエンジニア advent calendar 2012 に刺激を受けて書きます。

世の中のパパエンジニアの人、色々苦労されてる反面、楽しくイクメンされてるようですね。
特に苦労されているところは学習コスト(金銭的・時間的)を払えなくなったというのを見ます。
しかもこれだけ変化が早いIT業界なら尚更です。
しかしながらIT業界で研鑽を止めると言うのは大変リスキーなことです。
私ももうすぐ5歳になる長女と2歳の次女、そして今は妻のお腹の中にいる第三子(長男)がいる子育てエンジニアです。
しかも私はエンジニアを志したときは既に長女がおり、独身時代の知識が0でした。
(最初はコマンドプロンプトからpingも撃てませんでしたw
そんな私が日々行なっている学習の3つのコツを紹介したいと思います。


1 業務を通して知識を研鑽する

これは一番手っ取り早く、かつ確実に行えます。
自分の興味のある技術を導入してみるのが良い例だと思います。
また既存のシステムや技術でも新たな知識を得ることは多々あります。
ただし枯れた技術の運用的な部分では吸収する知識範囲は少なくなることもあると思います。
そこで対策は業務の変更です。
私はエンジニアを志した時の業務はバックエンド(特にインフラ関連)でした。
色んな事情も重なってフロントエンドの知識が吸収したくて今の職場に転職することにしました。
しかし転職や業務の変更はリスクもあります。
(仕事に関しては色んな考え方があると思いますが私の考えはこんな感じです)
またこの方法の大事なところは2つあります。
ひとつめは

・問題意識を常に持つこと

です。
例えばカーネルの値変更一つにしてもそうですしメソッドのカスタマイズ一つにしてもそうです。
「○○さんがこういったから」や「手順書に書いてあるから」と思考停止しては意味がありません。
データ投入一つにしてもそうです。
その時にテーブルが第二、第三正規化されてるかどうかを意識するだけでも違います。
そうしたら外部制約が欲しくなったり、逆に不要に感じたりすることもあるはずです。
プログラミングは特に顕著に問題を感じれます。
他人のソースを呼んでる時にわかりにくいと感じたらその理由を考えてみます。
命名だったり一つのメソッドが長かったり理由は色々ありますよね。
ならば自分が書く時にそこを気を付ければ良いのです。
牛歩であっても成長のきっかけを見つけることが大事だと思います。
ふたつめは

・わからないことをわからないままにしない

ことです。
せっかく「なぜ?」と感じても「まぁいっか」ではせっかくの成長のチャンスが失われてしまいます。
その瞬間では解決方法が無くても後から調べてみる。
これがググる力や調べる力を伸ばすことにも繋がります。
またちゃんと理解してることが増えてくると次の問題にも気付きやすくなります。
こうなってくると成長のスパイラルを感じれるはずです。

2 アウトプットする(自分の意見や知識を他人に伝える)

例えばブログで「なぜ?」と思って知らべたこと、理解したことを書きます。
「なぜ?」は技術本だったり業務だったりキッカケや事の大小はなんでも良いと思います。
すると自分の中で記憶や知識を整理する良い「ふりかえり」のタイミングになります。
また知識を整理すると理解が深まります。
更に「ブログを書く」と言う作業と知識を関連付けることで自分の中に残りやすいです。
これは技術本を写経してみるのに似てると思います。
ただブログはモチベーションが高い時はいいのですが続けるのは結構大変です。
私のこのブログは12月以外は月に1回書くかどうか…
なので他の方法ですが例えばコミュニティやMLに参加です。
その中でただウォッチするのではなく自分の意見を出してみるのは凄くいいと思います。
更にこの方法の良いところはこちらのアウトプットに対して生きたレスポンス返ってくることです。
他人の意見は自分の立脚点を振り返る凄く良い材料になりますし、何よりも生きた会話は記憶に残りやすいです。
しかしMLやコミュニティは内容次第では炎上するので注意です。
(後は教えて君をすると冷たくスルーされたり…)
なのでもっと軽いところではTwitterやFacebook、Google+なども良いと思います。
ただコチラは自分の繋がり次第ではレスポンスが返ってこない話題もありますのでSNS内での繋がりを意識する必要はあると思います。
(私は先日うっかりFBでこちらの記事をリンクしたところプチ炎上しました。)
また勉強会でも同様だと思います。
参加して、さらに質問してみるとより理解と記憶への定着が進みます。
質問することを意識してセッションを聞くと業務と同じように問題意識が生まれやすいので勉強会によく参加される方にはオススメです。
また勉強会のスピーカーに対しては色んな意見がありますが一番経験値を得れるのはスピーカーだと私は思っています。
なので機会があればスピーカーとしてアウトプットするのは凄いチャンスだと思います。
ただ当日駆動資料作りをしすぎると周囲から冷たい視線を浴びるので注意が必要です。
そしてアウトプットをすることで重要な副作用があります。

アウトプットをしていると自然と色んな人とのコネクションが増えてくると思います。
類は友を呼ぶといいますがアウトプットが多い人にはアウトプットが多い人がくっつくのです。
するとその人たちは精度の高い情報収集のアンテナになってくれます。
その人たちがプッシュしてる情報をチェックするだけでも効率的な情報に情報を仕入れることが出来ます。
またSNSなどではそういった人たちから更に良質なアンテナを見つけることが出来ます。
自分が知りたい分野の良質なアンテナを見つけてウォッチすることで自分で情報を精査したり探したりするコストを下げることが出来ます。
つまりよく言われることですがアウトプットを増やすことでインプットが増え、学習のスパイラルが捗ります。
なのでアウトプットの質云々よりもアウトプットをはじめることが大事です。


3 ホットラインを作る

3つ目こそが時間を作れない子育てエンジニアには重要かと思います。
学習コストを下げるもっとも良い方法は高スキルな師を持つことです。
それは明示的な師弟関係ではなくて○○なことは▲▲さんに聞けば大体わかり、その人に聞くことが出来る関係です。
つまり自分の興味のあることに対する詳しいことのホットラインを持つことで学習コストを大幅に下げることができます。
例えばPythonを始めたいとします。
すると詳しい●●さんが「この本を読むといい」と薦めてくれます。
実際にその本を呼んだり写経して理解できないことに直面します。
●●さんに「自分はこう思うんだけどどうなんだろ?」と伝えてみましょう。
(分からないから教えて、と一方的にボールを投げるのではなく自分の意見を伝えるのがコツです)
すると「いやいや、実はこれはこうなんだよ!」と懇切丁寧に教えてくれるではありませんか。
後はこれをまた何らかの形でアウトプットすれば自分の学習が捗ります。
また何よりスキルの高い人が近くにいると色んな刺激が貰えます。
新しい発見だったりモチベーションになったり。
私は職場の左にはプログラミングが大好きな人、右にはフロントエンドが大好きな人がいて凄く良い勉強をさせていただいてます。
(職場でこれを書いてることの免罪符なぅ)
JPUGの方々も疑問点や質問に対して軽快なレスポンスをくれます。 #ステマ


ということでまとめとしては

・ 業務時間を上手く使って学習の機会にする
・ アウトプットをする
・ アウトプットで得たコネクションを有効活用する

と言うことです。
皆さんの何かの参考になれば幸いです。