CADDiに入社して半年が経った
2021年12月に入社し、半年が経ちました。もはや入社時のブログとは何もかもが違う状況でびっくりしていますが、一応記録として活動や学びを残しておこうと思います。
入社時の投稿は以下です。参考まで。
やっていたこと
AI Labの立ち上げ
入社時点で「AIのチームを立ち上げます」という話は聞いていました。
まあ、ベンチャー企業らしく実際入ってみると何もない状態でした。
「CADDi AI Lab」という名前を決め、まず採用基準とフロー作りを行いました。ペルソナ、レジュメの評価項目を全て言語化したドキュメント最初に作り、面接のフローをJD分岐毎にmiroにまとめ、構造化面接の質問集、コーディングテストの設定を段階的に行なっていきました。
AI Labという名前は、20個程の候補の中から選んだものです。
私自身が国内でもMLチームを事業、研究、開発のバランス良く行えていると感じている、Cyber AgentさんのAI Labが元になっています。いつか追い抜きたいものです。
ペルソナ等を作るにあたって、まずどういったチームにしたいか、既にCADDiに居た@maimai0や@srt_takaと相談したり、CTOのアキさんやビジネス職のメンバーにも1on1を申し込む形でヒアリングしていきました(その時期を振り返るの@typeインタビュー)。
明確にAI LabのMissionを定め、それらに必要な要素技術を決めた上で、どういった専門性に特化したMLE/DS/AlgorithmEng/DataEng/MLOpsEngを何人いつまでに採用するかプランニングしていきました。
採用自体は上手く行ったり上手く行かなかったりでした。
CADDi全体で見れば、techが50人強な状態で、Kaggle Grand Masterや競プロ赤コーダーと働けている点で良い感じなのかもしれないです。
機械学習基盤作り
どれだけ良いエンジニアが来ても、何もない状態では困ってしまうので、とにかく開発体制作りと基盤になるコードを沢山書きました。
AI Labが自由に利用できるGCP sandbox Projectを作ってもらったり、GitHubのPython用Project Templateや共通で扱えるbase imageを書いたりしてました。GCP Vertex Workbench/Pipeline/Models/Endpoint等の検証も進み、データ加工から、モデリング、deploy、ホスティングまで通してGCP上で少しずつ見れる環境になっています。
入社時の私のブログの通り、CADDiはRustを使っている会社なんですが、
流石に機械学習エンジニアにいきなりRustを使えというのもまあ酷な所があるなと思っています。
なので、Rustで書かれたCLIツールをwrapして便利に扱えるようにしたり、データ取得ツールをゼロから書き直したりしました。
LightGBM Rust wrapperを作った経験が生きてる気がちょっとする。
画像検索プロジェクト
入社して最初の顔合わせMTGで@maimai0が「今Qと来Qで画像検索、やりたいんですよね〜」と言い出して「画像検索システムのモデリングやホスティング、ビジネス化の大変さ分かっとんのかこの人」と思いました。
振り返った時に聞いた感じでは、@maimai0さんはあんまり分かってなかったらしいですが、まあ何とか形にしました。
要素技術についてはAI Lab アルゴリズムチーム/MLチームからそれぞれ寺田さん、中村さんらの外部登壇資料があるのでそちらをご覧下さい。
やってよかったこと
AI LabのMission決め
最初にヒアリングとMission決めをしておいたのは、基本的な軸がブレない要因になっており良かったです。究極的にはCADDiのMissionである『モノづくり産業のポテンシャルを解放する』を達成するためのチームなのですが、そのためにAI Labが出来る事まで落とし込む事で、採用方針や各タスクなどのシーンで説明責任を果たしやすくなりました。
中でもMissionから逆算して環境が充足した、不要である、といった判断をする時にはかなり有用でした(個人的には、こういった取捨選択に一番時間を使った気がします)。外部登壇で出すコンテンツから社内での戦略まで一定の軸でしっかりNoと言えたのが良かったです。
日々の議論の中でも「より事業をブーストする物はないか」といった会話が生まれた瞬間があり「作っといて良かったな」と感じました。
ベンチャーあるあるな気もしますが、基本的にエンジニアのための環境改善を行なったり、組織や人を見る事に集中し責任を追うVPoE的な人はCADDiには現状居ないです。techの人数に対してサービス数も多いので、とにかく何でもやる必要があります。
そういったカオスな中で方針がブレないのは、自分のメンタルにとっても大事だなと実感した半年間でした。
ちなみにMission作りはとあるCTOの受け売りです。
社内外の人との1on1
チーム作りは、前職で@m_nishibaの「事業成果を出すための動き」を見ていたので、それを思い出しつつ模倣しながら進めていました。
昔のm_nishibaのエムスリーAIチームの紹介のスライドを見たりして、これなんで必要なんだろう、やってみようかな、そういえばこんな感じだったな、というのをなぞっていました。
ただ、それだけでは前職の素晴らしいAIチームを超えられないので、自分が更に出せる価値って何があるかなと考えた時に、「技術ベースでの繋がり」が多いという側面を思い出しました。
TwitterやMeety経由で著名なIT企業のCTO/VPoE/AIチームリーダー/テックリードと話す時間を作ってもらい、良かった施策や今後起きうる課題のヒアリングを週2ペースでやりました。
この辺りは一定ばんくしとしてのタレントパワーを使った気もしますが、結果的にMission策定や採用、基盤作りの方針が最初の2ヶ月でまとまったのはこの取り組みのおかげだったなと思います。最近は、こういった取り組みをよりチームに還元する方法を模索しているところです。
https://speakerdeck.com/nishiba/m3-ai-team?slide=69
上記のように私も最初に依存課題に対するfuture workの図や、それに伴った専門家の人数比、必要な技術、プロダクトを設定しました。自分でやってみて始めて価値に対して必要な物事がわかるものだなあと思うなどしました。
demo画面作り
偶然にもフロントエンドを3ヶ月くらい集中してやった事があり、画像検索用のdemoアプリケーションを最初の数日で作り活用しました。
MLモデルの結果というのは、ビジネス側から見ると定量では常に分かりにくいものなので、ビジュアライズが即席で作れるのは意外とビジネス上の強みになるなと思いました。AI Labの中でもNext.js程度であれば書ける人が数人居るので助かっています。
ありがたいことに、モデルもすごいスピードで評価されました。
業務PC Linux
これまで業務PCとしてWindows、Macと使って来ましたが、CADDiではUbuntuになってGPUも載った手元環境になり、簡易コードの検証までが超早くなりました。
オンラインMTGツールを切り替えてたらたまにカメラ/音声ドライバが壊れるのがネックですが、開発の快適さ、早さは何よりも優先されるという事がよく分かりました。これからずっとそうしたい。
英語
12月入社時点でCEOの加藤さんが「半年後社内で英語を使うようになる」と宣言していたので英会話をやりました。
6時に起きて娘の世話をして遊んで8時から2時間英会話に行ってから1日仕事のコースはなかなか大変でしたが、まあ一定英語面接が出来る程度にはなったと思います(不安はあるので面接は毎回複数人設定しています)。
(今はどうか知らないですが)高専という英語が非常に弱い教育機関で学生時代を過ごして大学に入った故、高校大学の英語の積み上げというものがない事を実感しました。技術文書や論文に触れている分、読みはまだ何とかなりますが、英会話は中学英語からでした。
まあ何事もやってみると何とかなり、何だかんだで良いメンバーに巡り会えている感覚があるので、AI Labないし、CADDiの海外展開にご期待頂ければという感じです。
失敗したこと、学び
結論の出にくいボールのハンドリング
「ばんくしです」と名前の入ったスカウトのメールがHRチームから飛ぶ、というエンジニア界隈から嫌われがちな採用ムーブが意図せず起こったりしました。返信したらHRからメールが来る、というやつですね。
メールの送信先は私が精査した一緒に働いてみたい人リストからだったのですが、結果的に多くの方から心配のDMや投稿を貰う結果になりました。各位申し訳ないです。
案に対してネガティブな見識を示す、という形で止めていた施策ですが、ハンドリングし切れておらずGoになってしまいました。
「結論が出ない時もネクストアクションを明確に」という当たり前の話を徹底する機会にもなりました。これもまたリーダーシップ。
最近では技術ベースでも、とにかく今出来る最良の決断をする事、そして決断に説明責任を持つ事をチーム内でも言い続けています。決断しないより、決断して後からごめんなさい出来る方がリーダーシップ。
何度でもGoogleのソフトウェアエンジニアリングを読み返そう。
No MLOpsエンジニア
機械学習エンジニアやアルゴリズムエンジニアの採用は進みましたが、MLOpsに従事するメンバーは0のまま来てしまいました。
一定以上開発が出来る/やりたいMLEのメンバーが多い事や、GCPのマネージドなサービスの利用で現状は何とかなっているのですが、3年後のスケールを考えた時にボトルネックになるなと今頭を悩ませています。
今思えば、エムスリーのAIチームが5, 6人だった頃もMLOpsを進めるメンバーが半分居たので、大きく成果を出せる要因の1つにAI部署の中のMLOps Eng、チーム内SREなどがあるのかなと思い始めています。
以下辺りから必死にJDを設定し、採用に取り組みはじめました。
いつか何とかなるだろと思ってましたが、今考えれば手遅れの極みです。
Twitterやる時間がなくなった
無くなりました。
無くなって悲しいです。
愛すべきTwitterをする時間をもっと増やしたいです。
仕事がTwitterになるイベントでもお仕事でも何でも募集中です。
おわりに
最後に本記事で最も大事な本題なのですが、CADDiではMLOpsエンジニア、データエンジニアを超積極的に募集しています。
2022/05/26時点で、PdM/EMが3人、データエンジニアが1人、アルゴリズムエンジニアが3人、機械学習エンジニアが7人、海外チームもまだonboard段階ですが始まっています。
NTT研究所、PFN、ベンチャーCTO経験のあるPdM/EMをチーム内に据えて、とにかくCADDiのミッション、事業に貢献する事を目的に開発するチーム体制を目指しています。
チーム紹介資料やHPもあるのでどうぞ。
ちなみに、図面解析や3DCADでワイワイしたい、競技プログラミングの知識を存分にプロダクトに活かしたいという方にアルゴリズムエンジニアもオススメしています。
その他にもPdMやフロントエンド、プラットフォームチームもオススメしているらしいです
つまり全部!!!!!!!!!!!!!!!!!!!!!
よろしく頼む!!!!!!