お世話になっております。CircleCI 人事採用担当の江藤です。
今回は社員インタビュー記事第4回です。現在CircleCIのプロダクトエンジニアチームに所属しており、国境を越えたエンジニアチームと様々なグローバルエンジニアリングプロジェクトで活躍しておりますYu さんに現職やCircleCIの環境についてお話をお伺いいたしました!
CircleCIのプロダクトエンジニアとして幅広い分野で活躍し、どのような業務に携わっているかを具体的にわかりやすく説明しております!弊社のエンジニアのグローバルキャリアへ少しでもご興味ある方是非ご参考ください!
自己紹介
Yu Usami (Senior Software Engineer, CircleCI 2年目)
ーーPlease introduce yourself briefly. / 今までのご経歴を簡単に教えてください
日本の大学を卒業したあと、アメリカの大学院でComputer Scienceの修士課程を修了しました。その後OPTという、アメリカ国内での学位取得者が学生ビザのまま就労できる制度を利用して、ニューヨークのスタートアップでソフトウェアエンジニアとして働きはじめました。ちょうどOPTの終わる直前に、サンフランシスコのスタートアップよりリモートで働けるオファーをいただけたので、転職して日本に戻ることにしました。CircleCIには2019年8月にSenior Software Engineerとして入社し、今年で2年目になります。リモート歴はトータルで6年目になりました。
ーーWhat was your turning point of joining CircleCI? / CircleCIに入社を決めた理由は?
自分にはリモートの働き方が合っていると感じていたので、リモートで働ける職場を探していました。また、前職はどちらもEarly Stageのスタートアップでしたので、次はLate Stageの会社にしようと決めていました。CircleCIはどちらの条件にも合っていましたし、ちょうど日本でのエンジニア採用を拡大して各地のプロダクトエンジニアとの橋渡し役を担える人を探しているとのことでしたので、自分の経験が役立てるのではと応募を考えました。
もともと前職にてCircleCIを使っておりプロダクトをよく知っていたので、入社を決める際の迷いは少なかったです。多くの開発者に使われているサービスの開発に携われることは非常に魅力的だと思いました。また、CircleCIには日本支社があることも自分にとっては重要でした。他にもいくつかリモートでのオファーはいただいていましたが、前職も含め全てアメリカ国内にしか拠点がない会社で、雇用形態としては正社員扱いにならず社会保険に加入できないなど様々なデメリットがありました。そうした中で、完全にリモート勤務が保証されながらも日本支社できちんと雇用関係を結べるCircleCIは、安心して転職できると考えました。
ーーTell me about the day to day tasks or projects ?/ 開発エンジニアはどのような仕事内容ですか?1日の業務の流れを教えてください
私が現在所属しているのはCOGSというプロダクトチームです。このチームは、サービス運用に関する全てのコストを可視化し最適化する、というプロダクトチーム内でもちょっと特殊なチームです。私を含め3人のエンジニアにマネージャーが1人という小さなチームになります。
COGSチームのエンジニアには、他のチームのエンジニアよりかなり大きな裁量が与えられています。コスト削減につながりそうなアイデアであれば、プロダクトやインフラの、どの部分であろうとも自由に変更の提案ができます。基本的にCOGSチームのエンジニアは、プロジェクトベースで動きます。各プロジェクトはコスト削減になりそうなアイデアの調査から始まり、その調査結果をTech Investment Briefと呼ばれるドキュメントにまとめ、コスト削減効果が高そうであれば関連するチームに提案を行います。提案が認められると、実際にプロジェクトをリードする形でコスト削減の実現を目指します。時には、新しく代替機能を作ることがコストの大幅な削減につながるということもあり、必要があれば他のチームとも協力しながら実装も行います。プロダクトチームでありながら、実際にコードを書いたりする時間は他のチームより少ないと思いますが、サービス全体を俯瞰して提案を行える面白さがあります。また、コストを年間いくら削減できた、という具体的な成果を出せるので、通常のプロダクトチームにはない達成感があります。
普段の勤務時間は9時から17時の間です。特に何時に何をするかは決まっていませんので、プロジェクトの進行に応じて、やるべきことを順番にこなしていきます。チームミーティングは月に1回だけあります。現在のチームは私以外はEU圏に1人、アメリカに2人住んでいるので、どうしても時間を合わせて定期的にミーティングをするのが難しいためです。普段はチームのSlackチャンネルにて状況をシェアし、マネージャーとは週に1回ミーティングを行って、プロジェクトの進捗を確認しています。そもそもチームで動くというより、個人ごとに異なるプロジェクトを進めていることが多いチームなので、この形式でも特に問題なく成り立っています。ミーティングはこの他に、APACリージョン全体のエンジニアミーティングが週に1回あります。ここには様々なチームに所属するエンジニアが集まるので、各チームで何が行われているかの情報交換ができます。あとは、必要があれば他のエンジニアとZoomで繋ぎながら作業をしたりします。
ーーHow do you collaborate with your team members globally?グローバルチームとどのように連携しておりますか?
CircleCIのエンジニアの大半はEUか北米に住んでいます。必然的に、皆が同じ時間に集まってミーティングをしたりすることは、少人数のチームですら難しくなります。そのため、ミーティング等の同期的な方法ではなく、いかに非同期でコミュニケーションを取り協力するかを大切にしています。
例えば、CircleCIでのタスクやプロジェクトは全てJiraで管理していますが、Jiraのチケットにはなるべく詳しく状況を記載して、他のエンジニアが見た時にチケットの状況がすぐにわかるようにしています。また1日の終わりにはチームのSlackチャンネルにも現状を書き残しておきます。内容はJiraチケットと被ることもありますが、とにかくあらゆる方法で、どんなことをしているのか、何が問題か、等を共有するようにしています。
CircleCIで働き始めて一番変わったことは、Gitのcommit messageの書き方です。コードの変更について、顔を合わせて説明できるわけではないので、必要なことは全てcommit messageで説明するようにしています。変更が必要になった経緯は何か、どうしてこの変更で良いのか、他に検討した方法は何でそれらに比べてどう優れているのか、変更をどうやってテストしたか等々、後から見たエンジニアが前提知識なしでも納得できるように書くことを心がけています。時には変更自体はわずか数行で、commit messageが何十行にわたることもあります。このスタイルはとあるチームメイトが特に丁寧に行っていて、自分も自然とやるようになりました。
ーーHow is your working style? 働き方はどのような感じですか?
CircleCIは子育て世代にも非常に働きやすい職場だと感じています。普段は9時から仕事を始め、17時には一旦仕事を終わりにします。仕事が残っている時には、子供を寝かしつけたあと、21時以降に片付けることもあります。マネージャーは常に家族との時間を大切にしてほしい、と伝えてくれるので、私も気兼ねなく家族を優先することができます。
私はCircleCIに入社してから、すでに2回自分の希望でチームを移っています。どのマネージャーも、エンジニアが自分の能力を一番発揮できる場所で満足して働けているか、ということを常に気にかけてくれます。私がチームの異動を打診した際にも、直接のマネージャーや希望先のマネージャー、さらにはプロダクトチームのトップも親身になって相談に乗ってくれ、全て希望通りにチームを移ることができています。エンジニア個人の希望するキャリアパスを最大限尊重してくれる会社だと思います。
ーーWhat type of technologies you have experienced at CircleCI?/ エンジニアで触れられる技術はどのようなものですか?
CircleCIはmicroservicesアーキテクチャを採用しており、個々のサービスはHelmパッケージ化されてKubernetes上にdeployされます。CircleCIのサービス全体の大部分はKubernetesで運用されていますが、ユーザーからのジョブの実行はNomadで実行されるようになっています。CircleCIといえば、エンジニアの間ではClojureで有名で、コア部分のサービスの多くがClojureで実装されています。新しく作るサービスや機能はGoで書かれることが多くなりましたが、既存機能の修正等でClojureのコードベースに触る機会も多いです。各サービス間はgRPCで通信を行うことにしています。データストアとしてはMongoDBをメインに使っていますが、PostgreSQLやRedisも使っていますし、メッセージキューとしてRabbitMQも多用しています。
プロダクトの重要なコア技術として、Dockerがあります。Docker由来の不具合が発生した際にはDockerのソースコードを読んで原因を探ることもありますし、Dockerのgraph driverを独自に実装したりもしています。ここまでDockerをプロダクトに組み込んで使っているところも珍しいのではないでしょうか。
ーーHow often do you use English and how do you communicate with engineers from other countries? 英語はどれくらいの頻度で使用しますか?またどのように他国のエンジニアとコミュニケーションをとっておりますか?
チームメンバーで日本語を話せるのは私だけなので、必然的に全てのコミュニケーションは英語になります。マネージャーとの毎週のミーティングも英語ですし、APACリージョンでのミーティングも、参加者は日本語話者だけではないので、全て英語で行われます。実は英語を話すよりも、英語を書く機会の方がもっと多いです。Slackでも頻繁にコミュニケーションを取りますし、前述しましたように、Gitのcommit messageも英語で大量に書きます。COGSチームに移ってからは、Tech Investment Briefと呼ばれる1000語程度の文章を月に1本のペースで書いています。
ーーWhat do you like about being engineer at CircleCI? / エンジニアのやりがいを教えてください。
一番のやりがいは、世界中のエンジニアに使われているプロダクトの開発に携われることです。例えばジョブの実行速度を改善できた時には、その世界中のエンジニアの生産性を高めることができるわけです。このように、日々インパクトの大きな仕事をできるということは、とても刺激的で楽しいです。COGSチームという裁量の大きなチームで、比較的自由に働けていることにも満足しています。
ーーHow was the onboarding process when you joined CircleCI? CircleCIへ入社した際のオンボーディング(入社オリエンテーション)はどのようなものでしたか?
プロダクトチームでは、チーム毎にオンボーディングを行いますので、細かいやり方はチームによって違います。基本的に共通しているのは、同じチーム内のエンジニアひとりが、onboarding buddyとして割り当てられ、数週間のあいだサポートしてくれます。チームによってはタイムゾーンの合うエンジニアがひとりもいないこともあり、なかなかミーティングをすることも難しいことがありましたが、内部ドキュメントが充実しているので自分で理解を深めることができました。そのおかげで、実際のコードにコミットするまでにそれほど時間はかかりませんでした。
ーーWhat type of career steps do you want to achieve? / こちらのポジションのキャリアステップはどのような選択肢がありますか。
CircleCIのエンジニアには、エンジニアのままでいるキャリアステップと、マネージャーになるキャリアステップの両方が用意されています。個々人のエンジニアが将来どのようなキャリアを築いていきたいかによって、適切な選択ができるようになっています。
エンジニアのキャリアステップは、具体的にはE1からE6の6段階にレベルが分けられています。E1からAssociate Engineer、Engineer、 Senior Engineer、Staff Engineer、Senior Staff Engineer、そしてE6のPrincipal Engineerというように、職位が定められています。CircleCIには経験を積んだエンジニアが多く在籍しており、自分より職位の高いエンジニアと働けることはEarly Stageのスタートアップにはない経験で、とても勉強になります。
希望すればマネージャーのキャリアステップを選ぶこともでき、実際にチームメイトのエンジニアがマネージャーになったこともありました。またそうやってマネージャーになった後に、やはりエンジニアとして貢献した方が自分には合っているとして、エンジニアに戻ったチームメイトもいます。このように個人のキャリアの選択に関して、とても柔軟に対応してもらえる組織だと感じています。
ーーDo you have any last comments for audience? /最後に一言お願いします。
これまで3社のスタートアップで働いてきましたが、CircleCIはその中でも最高の環境です。現在、CircleCIは日本を中心としたAPACエンジニアリングチームの拡大に力を入れているところです。世界中で使われるプロダクトの開発を牽引してゆく、強いエンジニアリングチームを一緒に作りましょう!
いかがでしたでしょうか。少しでもCircleCIのエンジニアチームの内容についてご理解いただけましたら幸いです。
ご興味お持ちいただけましたら、こちら↓の採用ピッチ資料もぜひご覧ください。
弊社にて新しいプロジェクトチームメンバーを募集しております!下記のキャリアページからご応募お待ちしております!
CircleCI Japanでは一緒に働く仲間を募集しています