新米エンジニア修行中(3):飛躍的成長、OSS メンテナになるまで
¶ はじめに
「半年に一回更新する」と言っておきながら、気づけば 1 年も空いてしまいました。Mujin に入って 2 年。ここで生き残る術にも少しずつ慣れ、いわば“古参”になりつつあります。この半年は特に、自分の実力が急激に伸びたと感じています。会社で 2 年磨かれたこともありますが、それ以上にオープンソースコミュニティから学んだ多様なスキルに助けられました。今では会社のコードは大体把握できていて、開発自体に困ることはありません。コード規模は拡大していますが、開発スピードは落ちず、全体としてますます手に馴染んできました。
本シリーズ(継続更新中):
- 新米エンジニア修行中(1):旅日ソフトウェアエンジニア、Mujin での職場初体験
- 新米エンジニア修行中(2):職場の社会化とサバイバル
- 新米エンジニア修行中(3):飛躍的成長、OSS メンテナになるまで(本記事)
- 新米エンジニア修行中(4):中堅エンジニアに昇格、退職して起業(完結編)
¶ PcapPlusPlus の OSS
前回の記事で、会社でネットワーク系プロジェクトを開発していると書きました。そのプロジェクトで PcapPlusPlus ライブラリを使う必要があり、開発の過程で PcapPlusPlus の改善点やバグをいくつも見つけました。そこで Issue と Pull Request を出し続けました。作者の seladb はとても辛抱強く、1 つの PR に 100〜200 件の議論がつくこともあります。PR をマージしてもらうには、1〜2 カ月かかることもあります。半年ほど継続して貢献していたところ、seladb が私の熱意を見てくれたのか、正社員経験が 1 年ちょっとの新米エンジニアにもかかわらず、PcapPlusPlus のメンテナに招待してくれました。
招待を受け取ったときは本当に嬉しかったです。PcapPlusPlus は 3K 近いスターを持つプロジェクトで、GitHub で 1K 超えのプロジェクトは十分“強者”です。何より「認められた」と感じられたことが大きい。この種の達成感は会社では得にくいです。
OSS の世界は基本的に平等です。正社員経験が 1 年ちょっとでも、10 年選手のエンジニアと対等に議論できます。見識が広くなくても、たまに「なるほど」と言ってもらえるアイデアを出せることもあります。反対に会社だと、いろいろな制約があり、上司も意見を歓迎してくれるとは限りません。最初は自分の考えを共有しようとしていましたが、だんだん諦めました。職場のサバイバルは「余計なことをしない、ミスを増やさない」。それは“考えていない”という意味ではありません。むしろ間違っていることは全部心にメモしている。でも言わない。自分を守るのが最優先です。
エンジニアとして伸びるには大量の学習が必要です。正直、会社はそれほど多くを教えてくれません。OSS 貢献はその欠落を補ってくれます。継続的に OSS に貢献することで新しい知識が入り続け、OSS の世界にはさらに強いエンジニアがいて、会社のシニアよりも教えてくれることも多い。この 1 年で、私のコーディング能力は目に見えて伸びました。
OSS コミュニティは温かいこともあります。例えば少し前に台湾で大きな地震があった時、会社の同僚はあまり気にかけてくれなかったのですが、seladb はすぐに DM をくれて「何か必要なら言って」と言ってくれました。その瞬間は結構感動しました。seladb とは OSS のネット友達に過ぎないのに、現実世界の人より温かい。だから私は OSS を書くのが好きなのだと思います。
COSCUP 2024 の sciwork トラックで PcapPlusPlus を紹介:
Thanks to everyone's enthusiastic participation over the past two days at @coscup . Whether participating in the career roundtable, project sprint, technical speeches, or communicating with us, everyone's enthusiastic participation made every part so exciting and successful! pic.twitter.com/fQ5dRtIAVB
— sciwork (@sciwork) August 4, 2024
¶ 職場のメンター
入社前、社内の外国人に会社の印象を聞いたことがあります。彼は「幸運だった。上司がすごく教えてくれた。修士に行っていないけれど、上司がメンターみたいだった」と言っていました。正しいタイミングで入社し、教える意思のある上司に当たれば、きっと多くを学べるのでしょう。
ただ、私が入社した頃には会社はすでに大きくなりすぎていて、手取り足取り教える仕組みはありませんでした。上司たちも忙しすぎて余裕がなく、新しく昇格したリーダーたちもまだ実力が追いついていない。
つまり、拡張後の Mujin は基本的に“放牧”モデルで、学習は自己責任。自然とメンターも存在しません。だからこそ、yyc が継続して教えてくれていることに心から感謝しています。私の過去の話を知っている人なら、彼の名前を何度も見たはずです。修士のとき、彼が交大で兼任講師をしていて、その授業で私が TA をして以来、ずっと指導と助言をくれています。職場で得にくいものを補ってくれる存在で、まさに私の“職場メンター”です。
人生で自分を助けてくれる人に出会えるのは本当に幸運です。卒業後から働き始めて 2 年の間、私は職場の悩みや人生の方向性を yyc に相談し続けました。彼はいつも惜しみなく指導してくれます。しかも対象は私だけではなく、交大で教えた学生やコミュニティで出会った人も含めて、誰に対しても助ける。尊敬できる先輩です。
yyc には教育目的のプロジェクト modmesh があります。この半年は私もかなりコードを入れました。主に NumPy のような低レベル配列の実装です。このテーマは後に PyCon JP 2024 の発表 にもつながりました。修士を卒業してからも少しずつ貢献していましたが、当時は実力不足でした。今は力がつき、より広い視点で理解できるようになったと感じます。PcapPlusPlus と modmesh は、私のプログラミング力を押し上げてくれた最大の功労者です。
¶ 職場
働き始めて 2 年強。Google のレベル感で言うと、L3 から L4 相当になったと自分では思っています。社内コードの掌握度、独立開発力、協業力、コーディング力など、各方面で大きく成長しました。Mujin にも似た職位制度があり、2 年経てば昇格すると思っていましたが、結果は同じ職位のままで、正直がっかりしました。自分の不足を振り返るきっかけになりました。
この 2 年で比較的大きな機能をいくつも作りましたし、規模の小さくない独立プロジェクトも 2 つ抱えています。それでも「影響力が足りない」と評価されました。これはかなり辛いです。というのも最初の 2 年は、どのタスクを担当するかは自分で決められないことが多いからです。ただ 2 年経った今後は発言権も増えるはずなので、価値が高く影響力があると見なされるプロジェクトを自分から取りにいくしかありません。職位や昇格に関する記事はネットにたくさんありますが、実際に形にして成果を出すには、まだ試行錯誤が必要だと思います。
純粋なコーディング能力だけなら、私は基準に達したと思っています。OSS 側のコードはほぼ毎日レビューしていますし、会社のコードでも自分が詳しい領域なら同じように有益なレビューができます。ただし、さらに伸ばせる余地はあります。本当にベテランのエンジニアに比べればまだ青い。だから書いて、読んで、次の境地へ進みたい。一般に「3 年」がシニア条件の 1 つの節目だと言われるので、次の 1 年で足りない部分を埋めたいです。
¶ 執筆
この 1 年は本も書きました。1 月から 11 月までずっと。修士の頃に撮った「資工系学生の基本素養」という動画シリーズを、ずっと本にしたいと思っていて、博碩出版社に相談しました。話はスムーズに進み、執筆計画を提出してアウトラインと内容を詰め、契約後に執筆を開始しました。
私は書くのが遅いので、8 カ月で書き上げる計画にしました。A4 で 300 ページ超、一般的な書籍サイズにすると 400 ページ前後になる分量です。1 日の進捗は 1〜2 ページが普通でした。内容を考えるのに時間がかかり、方向性が決まっても、調査・資料集め・図の作成・サンプルコード執筆など、各工程がとにかく重い。書籍は 2024 年末に出版予定で、正式に出たらまた感想記事を書きます。3〜4 カ月で原稿を出せる人は本当にすごいと思います。実際に書いてみて初めて、1 冊完成させる大変さが分かりました。
¶ まとめ
(単純に美しい妻を自慢しているだけです)
この 1 年は他にもいろいろありました。日本人の彼女が日本人の妻になったり、スキーがかなり上達したり、たくさん旅行したり、COSCUP と PyCon JP で登壇したり、人脈が増えたり…。多すぎて全部は語れません。書いているうちに面倒にもなる。本当は半年に一度更新のつもりでしたが、影響を実感するには時間が必要なことも多いので、今後は年 1 回くらいで十分かもしれません。この記事では、この 1 年の「人としての成長」部分は一通り書けたと思います。
気づけば 28 歳になろうとしています。本当に信じられません。ずっと学び続けている感覚があります。少し伸びたと思うと、分からないことがもっと増える。人生は永遠に学習で、止まれない。疲れるけれど、面白い。