はじめに
こんにちは。task4233です。
この記事は私の2021年の振り返りと2022年の目標をまとめるために書かれました。
2021年は研究を控えめにしてインターンシップに注力した年でした。多少の悔恨はあるものの、悩んだ末に決めた振る舞いだったのでこれはこれで良かったのかなと思います。2022年は一心不乱に研究に取り組みたいと思います。
今年もポエム多めなので、興味のあるところだけ拾い読みしてください。
過去の振り返り記事たち
もくじ
2021年の振り返り
2021年1月1日に掲げた目標は以下の3つでした。
#2021年の目標
— Tasker (@task4233) 2020年12月31日
・積極的にインターンに申し込む
・査読付き論文を1本通す
・朝活を継続する
今年もよろしくお願いします! https://t.co/IVqjkRTLch
そのうち、1つを達成しました。
- [x] インターンにたくさん申し込む
- [ ] 査読付き論文を1本通す
- 論文は卒論しか書いてません......
- SecHack365にてポスター発表をしました
- [ ] 朝活を継続する
- してません
- 9月ごろから1時までに就寝するように意識していました。
「え、1つだけ?」と思った方もいると思うので、それについてざっくり述べようと思います。
私は研究者になりたいのか、開発者になりたいのか
結論から言うと、私は研究者よりも開発者になりたいと思ったので、研究は控えめでインターンシップをたくさん経験するという選択をしました。この選択に至った理由は2つあります。
まず、やったことが誰かの役にたって欲しいという思いが私の中にあると気づいたためです。
これは主観ですが、研究の8割は実世界で使われることがないと思っています。もちろん、ある研究にインスパイアされて開発された製品やソフトウェアは五万とあるでしょう。しかし、それが世の中に出るまでに数年〜数十年かかるはずです。私はこの事実を楽しいと思えなかったため、私は研究を主軸に置いた職が合っていないと思ったのが理由になります。
次に、研究を続ける環境が開発を続ける環境よりも整備されていなかったためです。
これも主観ですが、研究は1人で続けるものではないと思っています。もちろん一流の研究者はそれができるのかもしれませんが、私は一介の学生に過ぎません。その点で、私の所属している研究室は放任主義です*1。教授が次の研究テーマについて口を出してくる訳でもないですし、進捗に対して口うるさく言ってくる訳でもありません。必要であれば教授にアポを取って相談するという形になりますし、輪読と進捗報告は月にそれぞれ1回あるくらいです。
私はこの研究室の体制に不安を感じ、同じ研究を続けられるような筑波大学院のとある研究室を受験しました。曲がりなりにも学部時代に人並みにCSを学んでいたため、問題なく試験は通過できました。しかし、その研究室の輪講に参加させていただいたときに、コメントがほとんど飛び交っていない事実に絶望しました。そこで、結局研究室を変えても意味はないのだな、と悟ったのをよく覚えています。
決断をしてきます pic.twitter.com/mWeY9jGpSu
— Tasker (@task4233) 2021年3月1日
それならば、今いる研究室の環境をよりよくする方向にシフトした方が良いと思い、最近はその働きかけに取り組んでいます。
私の力ではありませんが、研究室のSlackがProプランになりました。それと、研究室のGitHubがなかったので勝手に作りました。良いですね。
以上が、私が研究者よりも開発者になりたいと思うに至った経緯です。
後述しますが、計10個のインターンシップに参加して、研究の進め方にヒントを得た気がしたので2022年は実践していこうと思います。
SecHack365 研究駆動コースのアシスタントを担当させていただいた件
閑話休題、そんな私に、3月ごろ研究駆動コースのコースマスターである猪俣先生からアシスタントのオファーをいただきました。私は昨年の研究駆動コースの中では落第生寄りという自己評価をしていたので、オファーをいただいた時は非常に驚きました。しかし、オファーをいただいたからには自分ができることを最大限やってやろうと決めました。
その後、私に求められているものについて熟考した結果、研究時のアドバイス以外に
- 習慣化セッションへの助力
- アシスタント側の企画出し
- 開発系のアドバイス・知見の共有
- 1on1の実施
といったことを僕ならサポートできるだろうと思い、コースワークの他に尽力してきました。
結果として、アシスタント側の企画書は事務局の方に好評でしたし、実施した1on1も良かったと言ってくれたトレーニーもいたので、少しでも力になれたと思いたいです。
研究駆動のトレーニーの方々に「アイツ、研究してないのに何偉そうにコメントしてんだ?」とか思われてたら泣いちゃいますが、アシスタントとして最後までサポートできることはやっていこうと思います。
また、習慣化では本当にお世話になったので、今年も継続しています。毎日の筋トレや1日1コミットを続けています。
個人的にとても嬉しいです。
インターンシップにて得られたもの
一方で、私が今年最も力を入れていたインターンシップでは多くのことを得られました。その中で、特に価値があったと感じているものは、タスクの進める時の質問の仕方とタスクの進め方、図々しさです
タスクを進める時の質問の仕方
ドキュメントから得られないドメイン知識*2に関する情報は、積極的に早めに聞くべきだと思います。逆に、普遍的に得られる情報は、自分で調査する癖をつけると調査する力がつくので、可能な限り自分で調査するべきだと思います。
前提として、質問とは相手の時間を奪う行為だと思っています。とはいえ、質問回数をゼロにすることは、自分のタスクを停滞させる要因になり得るので悪手に他ならないとも思っています。
そこで、可能な限り意味のある質問をしたいです。
では、意味のある質問とは何でしょうか。
私は、質問者がいくら調べても答えが得られない情報を得るための質問だと思います。
そのような質問がドメイン知識に関する情報を問う質問です。そのため、インターン生は、ドメイン知識に関する情報は質問した方がタスクを速く進められるはずです。
逆に、インターン生のメンターは、事前にドメイン知識をドキュメントにまとめておいたり、ドメイン知識の理解に役立つドキュメントの在処を提示すると良いと思います。
ここで、最初にオリエンテーションを設けて口頭で説明する方もいましたが、インターン生は聞くだけでは結構聞き落とすことが多いので、文字にして残すのがオススメです。
更に、こういう時は質問してね、こういう時は自分で考えてね、といったことを共通認識にしておくと良いかもしれません。たかが数分のSyncでその後の進捗が大きく変わるはずです。
タスクの進め方
手に余る大きいPRを1つ作るのではなく、細分化されたPRを小さく複数作ってレビューしてもらった方が結果的に速く終わると感じました。
大体のインターンシップでは、1つのJIRAチケットを切られて、そのタスクに取り組むことが多かったです。
このタスクが十分に細分化されていたならば問題ないですが、実装方針が一度に描けないのであれば細分化した方が良いと思いました。
ここで、タスクを細分化するデメリットとして、しない時と比べてレビュアーの時間を多く奪ってしまうことを、私は危惧していました。
これをとあるエンジニアさんに相談したところ、
- 第一に、君のタスクは"君だけ"のタスクじゃない
- レビュアーも開発メンバーの一員
- 君がそこで小さく切り出すことでレビュアーはレビューごとに解像度が上がる
- レビューはレビュアーを君のタスクに巻き込む手段にすぎない
という話をされたのがきっかけで、小さなタスクで切り出すようにしました。その結果、タスクを進める速度は結構速くなった気がします*3
この小さく作って小さくレビューしてもらうサイクルは研究でもできることだと思いました。タスクの細分化は大事とよく言いますが、細分化した後の進め方として迷ったときにレビューを挟むと言うサイクルを入れていない場合が多い気がしました。そのため、2022年の研究ではこれに気をつけて進めていこうと思います。
図々しさ
そして、図々しさも得られたと思います。 図々しさっていいことなのか?と思うかもしれませんが、開発現場では図々しさが美徳な気がしました。
これは私が一方的に尊敬している方の話なのですが、彼はとてもアクティブで前のめりに発言して、考えるよりも手が先に出るタイプの人です*4。彼の近くで1年間研究を続けてきて、基本的に図々しい方が欲しい情報は得られる気がしました。私もそれに倣って意外と図々しく過ごしてきた方だと思いますが、結果としてより多くのものを得られた気がします。
学部卒で社会人になっている友人に「陽キャはあんま仕事できなくても声が大きいだけで評価高いんだから理不尽な世界だよな」と言われたことがありますが、それができることが凄いことなんだなと思うなどしました。
その他
また、言うまでもありませんが、技術面とコミュニケーション面でも大きく成長できました。下手なエンジニアよりも成長してる気がしますね*5。
技術面で成長できた要素は以下の通りです。
- 実践を通したクリーンアーキテクチャの理解
- Goの内部仕様の理解
- 負荷試験を実施する際の指標・ツールの理解
- A/Bテストを実施する際の指標・ツールの理解
- 既存コードの文法に併せてシュッとコードを書く力
- アプリケーションを設計する力
- ドキュメントを読んでコードに反映する力
- 設計書を書く力
- ユニットテストを意識した設計・コードを書く力
- MVPを意識して設計・実装を行う力
- k8sの基本的なコンセプトに関する理解
- AWSやGCPのリソースを活用して開発に取り入れる力
- OAuth2/OIDCの実例から学ぶ認証/認可の流れの理解
- TerraformのCustom Providerを実装する力
コミュニケーション面で成長できた要素は以下の通りです。
- 自分の施策を他人に構造的に伝える力
- 同期的コミュニケーションと非同期的コミュニケーションの得手不得手
おそらくまだまだあると思いますが、今パッと思い浮かんだのはこんな感じです。
今思うと、インターンシップに行き過ぎた気もしますが、将来を考えるといい選択だったなと思います。インターンシップの話を聞きたい人がいたら*6気軽に話を振ってくれれば対応します。
失敗した朝活
冒頭でも書いた通り、朝活は見事に失敗しました。要因は大きく分けて2つあると思っています。
1つ目の要因は、朝早く起きるモチベーションが続かないことです。 実は、3月ごろまで、はてなブックマークでまとめられている記事について話す会をClubhouseでやっていたのですが、結局モチベが続かずにやめました。
やるなら何か朝やることを作ると良いのだと思いますが、特に毎日やりたいことは夜にやっているので 🤔 という顔になっています。そこで、2022年は夜寝る前にやっている読書を朝やってみることにします。
2つ目の要因は、就寝時間が遅いということです。 当然ながら就寝時間が遅いと早起きできる訳ないですね。そこで、9月ごろからみんちゃれと言うアプリで、1時までに就寝するグループに入って今まで継続しています。意外と時間をオーバーしてしまうことがありますが、これをやっているお陰で徹夜することはないと思います(今日はのぞきます)。
実はとある2daysのハッカソンで徹夜してしまい、2日目で寝落ちした経歴があるのでそこから徹夜はしないようにしています(今日はのぞきます(2回目))
2022年の目標
- 学外発表を1回はする
- 毎朝5分は読書する
- 7月に軽めの振り返り記事を書く
2022年の目標を立てようと思ったのですが、将来のために必要なことを2021年のうちにほとんどやってしまったので、今年の上半期は研究8割、就活2割くらいで頑張ろうと思います。下半期は何をしようか決めていないので、上半期が終わったら軽めの振り返り記事を書こうと思います。
おわりに
以上が、2021年の振り返りと2021年の目標でした。
2021年は目標と異なる年になってしまいましたが、結果として今しかできないことを享受できたので本当に良い年だったと思います。
長くなってしまいましたが、ここまでお読みいただきありがとうございました。今年も1年よろしくお願いします。