新卒研修の一環として生産性向上チームの体験に行ってきた

びきニキ
·

サイボウズの新卒社会人ことびきニキ(@BkNkbot)です。弊社では開発研修コンテンツの一つに「気になる部署の体験に行ける(※1)」というものがあるのですが、3ターム目で生産性向上チームに受け入れていただきました。

※1) 2週間で1タームとして、これが3ターム分用意されている。絶対に希望が通るわけではないが、配慮はしてもらえるぞ!

これまでの体験レポはこちら。今回で最後です!

この記事について

  • 書く)生産性向上チームでどんなことを体験したか

  • 書く)私がそこから何を学び、何を得たか

  • 想定読者)生産性向上チームに興味を持っている人(社内外問わず)


生産性向上チームとは?

一言でいうと「サイボウズのエンジニアがつらいと思っている部分を最高にしていく」ために活動しているチームです!主に次のような業務を行っています。

  • 組織を横断した開発基盤の整備

  • 開発基盤を活用した改善活動の支援

  • 生産性向上技術のキャッチアップ・共有

> 生産性向上チームの紹介 より

なんで生産性向上を選んだのか

候補には入っていたけど(実力的に怖くて)選べないでいたら、配属先のマネージャーが背中を押してくれたので選びました。

"組織を横断した開発基盤の整備"という面から、エキスパートが集まっている気がしていて「メチャ難しそう!自分とは見えてる世界が違う!」と勝手に感じてビビってたんですよね...。同期がインターンに行った時のレポートを公開しているんですが、それを読んでもメチャ強そうだし....。

でも興味自体は強くあって(体験記読んでるとかなり面白そうだし)、この機を逃したら配属後に悶々としそうだったので、腹を括って希望を出しました。

この期間の目標

この期間の目標として、配属前に以下の2つを考えていました。

  • 基礎基本から逃げない

  • 質問をしまくる(疑問を残さない)

生産性向上チームのメイン技術としてはterraformやAWSがあるんですが、正直私はどちらもちゃんと触った経験がありませんでした。

また、実力的にも何か他の言語に特化しているわけではない(むしろプログラミングに苦手意識を持っていた)ので「技術力激弱の自分と向き合う」「どんなに基礎基本のことでも、わからないことはわからないと伝える」という気持ちを持って体験に行きました。

何をやったのか

今回私は、生産性向上チームの中でも「GitHub Actionsのセルフホストランナーの基盤を運用するチーム」のタスクを体験させていただきました。

セルフホストランナーってそもそも何?という方は、ぜひこちらをご覧ください!

修正- terraformで管理しているアラートの設定を変更

アラートが飛ぶSlackのチャンネル先を変更しました。別の通知とゴチャゴチャになっている状態だったので分けたかったみたいです。

terraformで管理していたので、.tfファイル上で通知先のチャンネルを変更しました。私からすると「そんなものにもterraform使うんだ...」という気持ちになったんですが、IaCで管理することで人為的ミスを減らす + 変更ログを残すという目的があるらしく、企業ならではの考え方だなあと学びになりました。

調査 - 長時間起動しているインスタンスが存在するよ!というエラーの原因を探る

弊社では、GitHub ActionsのセルフホストランナーにEC2を利用しています。本来はジョブ終了と共にEC2も終了するように設定しているのですが、意図せずに長時間起動していたのでその原因を調査しました。CI/CD実行時に立てているインスタンスのMAX稼働時間を見るために、新しくDatadogのヴィジェットを作って眺めたりした。

最近同じようなエラーがバージョンアップ直後に発生したのですが、今回はバージョンアップから日が空いてから問題が発生したため、他のインスタンスも影響を受けていないかを確認したかったという背景があります。

この調査では原因の特定をするまでに至らなかったのですが、そもそも「調査を諦める」という選択肢があることや、調査時の観点などについて学ぶことができました。

実装 - セルフホストランナーの利用ライブラリをv5に上げる

セルフホストランナー内で利用していたphilips-labs/terraform-aws-github-runnerをv4からv5にバージョンアップしました。このタスクに取り組んだことで、生産性向上チームで用意しているセルフホストランナーの仕組みを理解しながらterraformに入門できたのがマジで最高でした。

作業の中でstaging環境やproduction環境なども触れてドキドキしたけど貴重経験だったし、企業ならではのAWSの金額規模感も知ることもできてよかったです。

作成 - OSSにissueを立てる

philips-labs/terraform-aws-github-runnerをv5に上げる過程で、その中で使っているOSSのバージョンアップの影響によりterraformのapplyが終わらないという状況になりました。

それをチーム内で話した結果、この事象はIssueとして報告しても良いのではないかという話になり、業務時間内でOSSにIssueを立てるところまでサポートしていただきました。

これまでOSSにIssueを立てたことはあったんですが、初めてリアクションをもらったのでめちゃ嬉しかったな〜!チーム体験の期限などもあってその後の対応はお任せしているのですが、OSSに対して親近感を持てるような良い機会になりました🙏

検討 - Ubuntuのバージョンが異なるランナーを共存させるか考える

セルフホストランナーで異なるバージョンの Ubuntu(20.04 と 22.04)をそれぞれ使いたいという他チームからの依頼が来て、バージョンの違うランナーを共存させることができるかをチームで検討しました。

あまり手を動かしたりするタスクではありませんでしたが、要求事項を再確認したり「生産性向上チームが受け入れられるレベル」と「依頼しているチームの最低限の要求事項」を突き合わせたりしました。

チームとして / 会社として、判断する際にどういう考えをしているかであったり、観点としてどこが重要なのかを改めて実感する良い機会でした。

  • 自分たちの理想

  • 自分たちのキャパ

  • 自分たちが本当にやるべきか?

  • 相手側の理想と落とし所

  • 本当にそのやり方が適切か

などは今後の仕事でもちゃんと意識して動いていきたいなと思いました!

その他 - 生産性向上チームならでは!技術の探求

「生産性向上のスペシャリストとして常日頃から知見を蓄えておくべき」という考えのもと、業務時間内に各自が気になる技術や分野を探求する時間があったのも、生産性向上チームの大きな特徴でした。

各自が取り組みたいテーマを毎日1時間もくもく探求する「探求タイム」という時間では、チーム体験期間中に触れた知らない単語について調べてまとめたり、生産性向上チームのおすすめ資料を読んだりしました。

後半の週ではAWSのsandbox環境を借りて、探求タイムでクラウドネイティブ技術実践ハンズオンをやらせてもらいました。EC2の止め方すら分かっていなかった私にとって、この時間で色々とAWSを触れたことは大きな経験です!ありがとうございました。

他にも、開発生産性にまつわる話題を共有してワイワイする「Productivity Weekly」にも参加しました。この時間では週一でソフトのアップデート情報などが共有されていて、その後の時間でWeeklyで出たネタで導入したいものがあるか、他のチームに展開が必要な情報があるかなどの観点で情報をまとめています。

技術キャッチアップの習慣化ってマジで大事なんだな…と改めて痛感した時間でした。

Zennではその内容のまとめが定期的に投稿されているし、#cybozu_productivity_weekly というハッシュタグもあります。

これからも追っていくぞ🔥

目標を達成できたか

達成できたと思います!特に「どんなに基礎基本のことでも、わからないことはわからないと伝える」という部分に関して...生産性向上チーム、めちゃわかりやすく質問に答えてくれるんですよ!!!!!

私としては、毎回基本すぎる質問をしていた自分に対して「小っ恥ずかしさ、悔しさ、自分の弱さ」みたいなものを常に感じていたんですけど、そもそもこれまで分かったふりで逃げ続けていた自分が悪いし、そのツケが回ってきたということで頑張って向き合いました........。自業自得です。

もちろん他のチームでも質問したらちゃんと答えてくれると思うんですが「Lambdaって結局どういうことやってるんですか?」「プロパティってどれですか?」みたいなマジの基礎基本質問に対して、私を馬鹿にすることもなく真摯に回答してくれたのがめちゃ好きで!!

そういった何度か会話を経てからは「基礎基本すぎる質問でも、絶対丁寧に教えてくれる」「私が分かるまで時間を割いて付き合ってくれるんだ」という信頼が生まれてきて、怖がらずにドンドン質問することができました🙏

そして、1日の最後には私の要望で「1日のタスク振り返り時間」を設けてもらいました。その時間を使って作業の振り返りに集中したことで、結果的にタスクの解像度を高めることにも繋がりました。

作業中は基本モブで進むのであんまり深い質問が出てきにくいんですが、この時間を設けていたことで「そもそも何でこのタスクに取り組んでいるのか」を聞くことができたり「これまでのチームの背景」をたくさん聞くことができて最高体験でしたね…。

この期間で得たもの

チーム体験の最後の方は「これ分かりますか?」みたいな質問をされた時にも「××って〇〇みたいな意味だと思ってるんですが、そもそも認識合ってますか?」と毎回認識の確認をするようになりました。

相手から聞くだけだと分かっているように感じるんですが、自分で口に出すと全然分かってないことを実感できるんですよ。あと普通に意味を捉え違えてることも高確率であるな…とチーム体験中に思ったので、意味を分かっていても(単語をどの深さまで落とし込んで理解できているかなどは人によって違うこともあるし)前提の確認・共有という意味で絶対聞くようにしました。

同じように、人から説明されたことに対しても「××は△△というイメージで理解したんですけど、〇〇の部分から理解できてないかもしれないです」などと、自分の理解できた範囲とそのイメージを口に出して伝える習慣がつきました。

それ以外にも、生産性向上チームの温かさや盛り上げる気持ち、会議の進め方や作業ログの取り方も非常に勉強になりました。本部こそ違うけど…私の配属先も生産性向上チームのような動き方をすると聞いているので、個人的には一番得るものが多かった体験期間でした!

最後になりましたが、受け入れてくださった生産性向上チームのみなさん、調整してくださった開発オンボチームのみなさん、本当にありがとうございました!

マジで楽しかった。生産性向上チーム大好き!!!!!勇気を出して体験希望してよかったです!

備忘録 - Tips学びメモ

  • ターミナルで「ctrl+E」すると右に、「ctrl+A」すると左にカーソルが移動

  • VSCodeで単語をドラッグ選択してカッコをつけるといい感じに両端につく

  • VSCode上で「⌘+P」を押すとファイルを検索できる

  • ターミナルで「ctrl+R」をすると履歴コマンドの検索ができる

  • GitHub、SSH接続じゃなくてHTTPS接続の方が今は推奨されている

    • ghコマンドを使うといいらしい

  • VSCodeの左ペインからディレクトリを右クリックして「統合ターミナルで開く」を押すとその階層に入ったターミナルが一瞬で立ち上がる

  • vimのescの状態のとき、「o」を押すと次の行に入って編集可能になる

  • vimのescの状態のとき、「x」で一文字消せて、「u」で1つ操作を巻き戻せる

  • vimのescの状態のとき、「a」を押すと次の文字に入って編集可能になる