どうすれば自分の身に付く技術ブログになるのか

この記事は write-blog-every-week Advent Calendar 2019 の24日目の記事です。ポエム枠です。

adventar.org

2016年12月のアドベントカレンダーからスタートして、週1投稿を3年間継続してきました。投稿を通して技術的なトピックを幅広く学んできました。また継続するためのテクニックにも習熟しました。一方で、ここ半年くらい、このブログが果たして本当に自分の技術力の向上に役立っているのだろうかという疑問を感じていました。

この疑問を深堀りして問題を洗い出し、どうすればさらに自分の身に付く技術ブログになるのかを再考しました。

経緯

ブログの立ち位置を再考するに至ったきっかけが2つあります。

テーマ選定

ブログを書く時間として土曜日を割り当てていたのですが、テーマ選定にかなりの時間がかかるようになってました。どうかすると午前中ずっと選定にかけることもしばしばしありました。テーマ選定の流れとしては概ねこんな感じです。

  1. 仕事などを通して今週学んだことは何かあったか?を復習
  2. 今後 (数週間〜数ヶ月先) 仕事で使えそうな技術は何か?を想像
  3. 1.と2.で挙がった候補について今日の記事に書ける内容へ落とし込めるかを精査 -> 不可と判断したら1. or 2.へ戻る

3.では記事のアウトラインまで描くのですが、1.はともかく、2.で挙がった候補については調査前の段階ですので見込み違いが多分に含まれます。そのため、不可判断の割合が高く、どうしても手戻りが多くなります。

加えて、3.では1エントリ内で説明・実装・評価を完結できるかどうかを重要視してました。説明だけ・実装だけのように分割する場合ももちろんあるのですが、言いっぱなし・やりっぱなしは、読者にとっても自分にとっても利用しにくい情報になってしまうので、できれば避けたいと考えてます。

手戻りで時間的リソースを失っている中、完結を担保しようとした結果、小さく・散発したテーマ設定を繰り返すようになってました。

小さく・散発したテーマ設定自体は問題ではないです。検索されやすいですし。それよりも、インプットに大きな時間がかかり、アウトプットを細かい単位で出しづらい、基礎知識の吸収が疎かにしやすい構造を作ってしまっていること対して危機感を覚えました。これは特に新しい分野のことを学び始めたときに強く感じました。

採用活動

私の場合、週1更新を始めたきっかけの1つが SOFT SKILLS でした。そこでもブログを勧める理由の1つに、面接官へ情報提供して採用活動を有利に進められることを挙げてました。

昨年下期からエンジニアやデータサイエンティストを採用する側の人間として本格的に関わり始め、書類選考 (70+回) と面接 (30+回) を行ってきました。ご自身のブログをアピールされる方も多くおられ、中には僕のように定期的に更新されている方もいました。ただ、書類選考の判断材料としては見ていたのですが、面接で大きくプラスに働くケースは少なかったように思います。

書類選考の時点ではまだコンタクトが無い状態です。職務経歴書でこれまでのご活躍をイメージするのですが、書ききれない背景やストーリーなどもあり、それだけで判断しきれないケースが多くあります。そのため「技術的には何に興味を持っておられるのか?」「その興味をどの程度深堀りされておられるのか?」を知る補助的なツールとしてブログを参考にしてました。

他方、面接では双方向のコミュニケーションができますので、お仕事の話を深堀りして、弊社でも成功を再現できるか (マッチしているか) どうかをジャッジすることになります。この時点でブログの話題はほとんど出ません。

この体験から、よっぽど技術的に尖った内容で無い限り、アウトプットの最終目的地がブログとなってしまうのは、自分のコマーシャルという意味ではコストパフォーマンスが低い悪手になりやすいということに気付かされました。

問題

改めて問題を整理すると以下の2点です。

  • 問題1. 時間のかかる基礎知識のインプットを疎かにしやすい
  • 問題2. ブログでのアウトプットはコスパが悪くなってきた

ブログという一応パブリックな場でアウトプットするためには、少なくとも自分はきちんと納得できるように調査・整理する必要があります。そうやってアウトプットを通してインプットの質を担保し、技術力向上をサポートするためのツールとして週次投稿というルールを導入したのですが、投稿するためにインプットを制限してしまっているという問題構造が浮き彫りになってきました。手段の目的化と言えるかもしれません。
一応の基礎ができているWebエンジニアからだんだんデータサイエンティストや機械学習エンジニアという未経験領域へシフトしていった結果、インプットの質が積み上げベースからゼロベースへと変化し、上のような不都合が顕在化したのだと思います。

またブログを更新しているだけで評価されるということもなくなってきました。20代の最初の転職であればブログだけでも良いのですが、ミドル以上の役割を期待されるようになってくると、ブログだけでアピールというのはなかなか難しいかもしれません。

ここに至って、投稿を継続するか否かという判断を迫られました。
ですがこれは継続すべきだと考えました。週に1回くらいはアウトプットする機会を持つべきですし、そのためのインプットが全て無駄・非効率というわけではないからです。また、書類選考止まりといえども自分が興味を持っていることに対するアピール材料としては有用だからです。

そのため、問題1.にフォーカスすることにしました。

他の人のブログを見ていると、基礎的な内容でも理論面をぐっと掘り下げたり、あるいは、動かしたり壊したりしてミクロな実装を追っていったり...といったエントリは非常に為になるものです。ゼロベースの学習になったとしても、まとまったインプットさえできていればブログくらいはなんとかなるだろうという目算は立ちました。 また生活サイクルの変化で平日も1.5〜2時間程度の勉強時間を確保できるようになってました。

あとは1本のストーリーに並べることができれば、なんとかなりそうです。そこで方法論的なアプローチで解決を図りました。

解決策

ポイントは2点です。ここまでえらく遠回りしておきながら、ごく当たり前のところに落ち着きました。

  • アウトプットの優先順位を決め、最重要アウトプットからインプットする項目を決める
  • インプットする項目に時間を割り当てるように、毎週計画する

以上をGitHubのプライベートレポジトリのissueで管理してます。

最重要アウトプット

最初に、最も重要な、第1優先のアウトプットを明確に定めました。
私の場合は、仕事に定めました。ここはもちろん人によって異なります。OSS、コンペ、競プロなども熱い選択だと思います。

そして最終目的 = 仕事で必要なインプットを洗い出して、それぞれ優先順位を付けます。この時点で時間がかかったり遠回りするだろうなとわかっていることも、外さずにリストアップしておきます。どういう資料を使えば良いかなども粗く調べておきます。

私の場合、CV + ディープラーニングが直近半年間のお仕事になる見込みが立ってました。いずれも実務では未経験の領域ですので、基礎からインプットする必要がありました。広大なフィールドですが、推論周りの開発を主に期待されていましたので、社内で標準的に採用されているPyTorchの習熟をMUST、各タスクフォースで採用するモデリング手法の理解 (主に論文読み込み) をShouldで優先順位付けしました。

他のアウトプットはこの最重要アウトプットに従属させます。最重要アウトプットを目指す過程にあり、可能な限り追加でかかるインプットのコストが小さいものを選択します。ブログはその中でも最も優先度の低いアウトプットに位置づけました。問題2.も加味してます。ただしこれは、仕事のためであれば投稿しなくても良いというわけではなく、ブログによってインプットする内容が決められることがない、ということを意味してます。

今は 仕事 > データサイエンスコンペ (CV系) > ブログ という優先順位で取り組んでます。

計画的にインプットする

インプット単位 (例えば本、論文、チュートリアルなど) でissueを切ってます。インプットが必要な理由の整理や、アウトプットのマイルストーン、その他メモに使ってます。
参考までに、自分はこんな↓感じで項目立ててます。論文はもうちょっとライトなフォーマットです。分量 (インプットにかかるコスト) に応じます。

加えて、週次のインプット・アウトプットの計画も立ててます。

週の終わりに次週の計画をissueで立て、逐次更新することでトラックしています。優先度の高いインプットイシューから順に、確保している勉強時間 (平日朝と土曜日夕方) へ割り当てていきます。仕事の状況に応じて、急ぎでインプットしたほうが良いことというのも現れますので、週単位で区切ってます。

週の終わりには何がインプットできているのかの目算が立ちますので、ブログのタイトル・内容も計画の段階で概ね確定させてしまいます。ブログはインプットで得られた知識の最初のFIX地点、マイルストーンとしての役割に終始させます。あとは仕事で活かしながら知見を蓄積・更新していくことになります。

結果

運用を開始してから約1ヶ月半が経過してますが、今のところはひとまず大きな不都合なく機能してます。

基礎的な内容にフォーカスしたものになってしまうのですが、まとまったインプットが得られたことで、結果的にブログも書きやすくなりました。このあたりは見込み通りでした。

また、もともと同程度の時間を勉強に割いていたのですが、優先順位を明確にて計画を立てたことで、あとは淡々と消化するだけで良くなり、より腰を据えた勉強に取り組めるようになりました。厚い本や洋書を読むことに躊躇しなくなったのは思わぬ収穫でした。

まとめ

結果的には、時間のかかるインプットを集中・連続して取り組めるように優先順位と計画を見直した、という話に落ち着きました。

ブログを書くことが、本当に必要なインプットへの足枷になっていると感じておられる方へ、少しでも参考になればこれ以上はないです。

ラスト25日目の担当は kj_man666 さんです。

adventar.org