始めに
2023年11月にCA Tech JOB NEXTという形でシロクでインターンをさせていただきました、大阪大学大学院の榎本東悟と申します。
シロクでのインターンのなかで自分がやったことや収穫、学んだこと、見つけた自分自身の課題、その他部署内の雰囲気などについて総括できればと思い本記事を執筆しました。
また、私が就業させていただいたシロクという部署はCAの中でもIUという呼ばれる管轄組織に分類され、主に自社で化粧品ブランドを確立しこれをEC展開しているといった部署になります。就業最終日にプレゼントしていただいた美容液、乳液、パックは関西に帰ってからしっかり使わせてもらいました!!
やったこと
私は就業期間中に大きく分けて2つの取り組みを行なっていました。
プロダクトへのFirebase Remote Config(以降RCと呼ぶ)の導入と、公式サイトの足元施策の機能追加です。本記事では特に前者について記載することとします。
RCの導入について
RCの導入は、公式サイトの売上を伸ばしたいという文脈で行った具体のアプローチになります。公式サイト内におけるバーナーのコンテンツの表示順番をセグメントごとに最適化させれば全体としてCTR(Click Through Rate)の向上に繋がり、ひいては売上の向上につながるのではないかという魂胆の元行いました。RCの特にPersonalizationという機能を用いて、動的にセグメントを定義し、Firebase側で表示コンテンツの制御の責務を担わせることでこれを実現しようとしました。
「バーナーのコンテンツの表示順番をセグメントごとに最適化させる」というWHATを達成するためにFirebaseを使うようにした選定理由としては次のものがありました。
– ネット上のdocumentの充実性
– GA4との連携
– 部署内で過去にRCの導入を検討した経験があったこと
– RCの利用料金は0であること
– DBが識別できるユーザー以外の新規ユーザーも対象にして制御を行えるという点
これまで「30代女性」とか「関東圏にお住まいの方」のようにアプリケーションで定義されたセグメントの棲み分けをしていました。これはあくまでDBにレコードとして存在しているユーザーを対象にしており、言うなれば「管理下にあるユーザー」のみのデータを参照できていませんでした。しかし、これに加えてサインアップをしていない「チラッとサイトを覗きにきただけ」とか「なんとなく広告リンクからリダイレクトされてきたユーザー」といった初めは購入確度が低かったユーザーの動向や興味関心まで追えるようになるとよりマーケティングの観点から戦略を立てやすくなったり、あるいはそれらのセグメントに対するアプローチをかけることにも繋がります。この点で、RCの導入はシロクの公式サイトにとって非常に有意義になると判断しました。
しかし結果的には導入自体は見送るという形になりました。
シロクの公式サイトにおいてバックエンド言語として採用されていたrubyに対して、firebase SDKが用意されていなかったのが課題としてありました。javascriptのSDKは用意されているので、当初はjavascriptのSDKをフロントエンド側で実行してうまいことやろうと考えていたのですが、環境変数がブラウザを通してエンドユーザーに筒抜けになってしまいかねないと言う観点からこのアプローチだと厳しいという結論に至りました。また、RCのためのAPIサーバーをたてると言うアプローチも考えられましたが、試験的に導入しようとしているRCに対してそのコストを考慮すると導入するに値するかと言うことも不透明だったため、こちらのアプローチもpendingとなりました。そして、自分の就業期間である1ヶ月の間で確実に成果を残すためにこれ以上深追いする必要があるかを改めて考え直し、この施策自体は諦めることになりました。
学び
シロクの就業期間中に主に2つの面で大きな学びを得ることができました。それは定量面と定性面におけるものです。
定量面については上述のRCの調査やその導入の検討を行なったことです。結果的に導入することは期間までに叶わないと判断し断念しましたが、その過程の中で(理解が不透明な部分も多いですが)RCがどういう機構であるかをたくさん調べることができ、これをプロダクトに導入することがビジネスの粒度でどれだけの意味をなすかということについて議論をすることができました。
もちろん定量的、つまり技術的な収穫もたくさんあり非常に充実した終業となりましたが、矢はり自分にとって最も良い収穫となったのは定性面でした。定性面については
– 目標(WHAT)とその達成方法(HOW)
– 自己開示
– 成果
について強く意識しており、就業が終わった今でも開発現場においてこれらの教訓を生かしています。
目標とその達成方法
RCの導入に際して、これは何のための施策なのか、どういう嬉しいことがあるかということについて就業期間中は常に意識していました。これまで参加経験があった開発現場では「チケットにある開発内容に沿って実装を進め、レビューを受けてデプロイする」というようにビジネス的な観点にはあまり思考を巡らすことがありませんでした(これは単純に自分の思考の浅さを思い知らされますが、、)。
しかしシロクのエンジニアリングにおいては、「プロダクトに対してエンジニアリングを通してどれだけ成果を上げられるか」というところに最も重心をおいていました。そのためには、目的意識とその実現可能性について十分に考慮する必要があり、私も就業初日に「OOOをOOO%向上させるために」という具体のWHATを設定するところから始めました。また、実現方法については「OOOができるような機能を追加する」や「リクエストを送ってOOOというレスポンスが返ってくることを確認する」といったように本番運用に向けてミニマムにタスク分解していくことで実現までの過程の解像度を高く保つようにしました。
このような意識づくりや思考プロセスはシロクに限らずどの開発現場でもエンジニアが最低限持っていないといけないものだと就業期間中に思っていたので、現在の就業先でもチケットにある要件に対して、どのような背景や意思決定があってこの要件として固まったのかについてできるだけ意識を傾けたり、自分が施した実装が誰にとってどういう嬉しいことがあるのかということについては最低限認識するようにしています。こうしてプロダクトに対する解像度をあげることで、「ただプログラミングができる人」から「プロダクトの成長の一助となる人材」になるのだろうなと考えています。
自己開示
特にシロクの企業文化として強く感じたのは「自己開示」でした。今やっている施策についてのこと以外にも、他の人とのMTGから学んだこと、部署内でランチに行った時に話題に上がっていたことなどとにかく知らなかったことはなんでも文章化してslackにガシガシ書いていくというような感じでした。
そしてこのような自己開示はプロダクトの成長スピードにつながることを学びました。メンバーの考えや学び、やっていることをslackを通して知ることで、例えばその人と近い仕事領域の作業をするにあたってすでにキャッチアップした状態で着手できるからです。
また社長の飯塚さんも書籍「20代が仕事で大切にしたいこと:ありのままの自分で成果がでくる3つのルール」でおっしゃっていますが、「自分が今何をしているのか」ということは「同じ部署内のメンバーにも意外と知られていない」ということがあります。例えばメンターがついている状態でインターン生が何かしら施策に取り組んでいても何も発信しなければメンターからすると進捗についての管理がしづらいですし、進捗状況についてキャッチアップするのにいちいち同期的な会話が発生してしまいます。この点、自分の「今」を自己開示し続ければメンターは非同期的にメンティーの状況を把握することができたり、メンティーにとってもわからないことを尋ねるときに逐一状況説明をする手間が省けるという利点があります。
成果
先述の内容と重複するところがありますが、目的意識をはっきりとさせている状態だからこそ、「成果」についてはその如何を常に問われていました。これは成果主義ということではなく、シロクの一員として働いている以上、プロダクトや企業にどのような形で貢献できたかを都度明示する必要がありました。私の場合は「RCの基盤を公式サイトに導入することでできるCTR等の数値の向上」でした。これは常に退勤直前に振り返りのタイミングで再認識するようにしていました。
「成果にこだわる」という姿勢を学んでから主にシロク以外の現場で仕事に対する取り組み方が大きく変わったように思います。現在はスタートアップ企業にてエンジニアインターンとして就業させていただいていますが、それまでは振られたタスクを期日などは特に設けずできたらPRにあげる、レビューの修正が終わったらマージするというようなある意味機械的な取り組み方をしていました。しかしシロクでの就業が終わって開発現場に復帰してからは、成果として「より大きなタスク量」と「企業全体のバランスを見てプラスになるもの」を実現するために行動を起こすようになりました。前者は単純に就業時間を以前よりも確保したこともありますが、レビュー依頼待ちなど自分の持ちタスクの手が空いたタイミングでバグの起票や他起票済みのタスクの完遂といったところを行動に移すようになりました。また、後者については顕著な例として「新規インターン生の面接」を自分が担当するようになったことがあります。現場エンジニアが手を止めて面接の時間を取るよりも、未経験からインターンに参加した経緯や、就職活動で幾多の面接を直近で経験した自分だからこそvalueを発揮できる機会だと捉え、年明けから挑戦させていただいています。
このように就業中に肌で感じ、学んだことを今に生かすことができているという点で、シロクでの定性的な学びは自分にとって大きな意味をなすものだと考えています。
課題
上記にて学んだことをさも全て自分の血肉にできたような書き方をしていますが、インターン期間中に発見した自分の課題で、今もまだ改善できていないものがあります。それは「コンフォートゾーンの広げ方」です。
未経験のドメインにほぼ知識0の状態で現場に飛び込むとなると(当たり前ですが)、すでに所属されている先輩方よりも事業やプロダクトについての理解はだいぶ浅い状態でのキャッチアップのフェーズから始まります。
こうした状況だった時自分はというと自分でslackを漁るなりプロダクションコードを読み漁るなり「自分で調べる」ことを主にしていました。それは忙しそうにしている他のチームメンバーに気軽に「これってなんですか?」と程度の低い質問をすることがナンセンスだと考えていたことと、単純に人見知りということがありました(飯塚さんの著書で「人見知り」という単語を仕事現場でわざわざ持ち出すことにメリットはないと書かれていましたが、、)。しかし自分がとった行動は成果を出すための最短ルートかと言われると決してそうではないと、同時期にシロクにジョインした24内定者の方の行動とその成果量を見ていてよく感じました。「わからない」ことについて何も調べず真っ先に人に聞くような姿勢自体は良くないですが、やはり新入社員としてその企業にジョインした以上、知らないことがあって当たり前だし自分よりも詳しい人に直接聞く方が早いということを学びました。めちゃくちゃ浅い結論ですが。
直接人に聞く行為に対して私には多少なりとも感じた「対人ハードル」があり、シロクでの就業後、これは何かということと、これの克服について調べたり考えてみたりしました。
結論、自分がハードルだと感じていたことを言い換えると、「コンフォートゾーン」の拡張が遅いということでした。ここでの「コンフォートゾーン」は何もハードルを感じずに行動に移すことができる心理状態を指しています。コンフォートゾーンを業務を円滑に行うための一定ラインまで拡張することができないと、その期間は就業に対して自分にかかる負荷は大きいものとなってしまいますし、出せるパフォーマンスも単位時間あたりに換算するとより小さいものになってしまいます。1ヶ月という短い期間の中で成果を出さなければいけないという特殊な状況であったとはいえ、自分の与えられた状況下で能力相当のアウトプットが出せたかというとそうではないと今になって感じます。この心理的ハードルも相まって今回自分が行おうとしていた施策(RCの導入)の実現が叶わなかったのは少なからず原因の1つにはなっていると思いました。
この課題については環境を自分から変えに行くという訓練が今後必要なのかなと感じています。
最後に
シロクでの就業を経験して、1ビジネスマンとしてどうやって企業に貢献していくかということを考える訓練をすることができました。これまで、与えられた要件やタスクをどうやってプロダクションコードに落とし込むかや、どれだけ綺麗なコードをかけるかということがエンジニアに求められるもので、エンジニアの仕事はビジネスとは一線を画したものだという勝手な思い込みがあったのですが、そうではなくあくまでエンジニアは企業の売り上げに貢献することが大前提求めれていて、その方法としてプログラミングがあるのであって、「ビジネスサイドだからOOO」とか「エンジニアだからOOO」とか考えるのは本質ではないということをシロクの現場を見ていて肌で体感することができました。また、自分の現状を発信し続けること、成果にこだわることなどどの現場でも当たり前に求められるであろう姿勢についても自分の体に叩き込むことができました。
末筆ながら1ヶ月間インターンとして私を受け入れくださったシロクの皆様方、特にトレーナーとして1on1や多方面での相談にも随時乗ってくださったけいさん、ありがとうございました。