はじめに 自己紹介
こんにちは。CAMPFIRE開発エンジニアのishimizuといいます。
ishimizuのCAMPFIREでの社員歴は早いものでもう3年半弱となります。
もともとFAAVOという別のクラウドファンディングサービスの開発を一人でやっていたのですが、2018年7月にFAAVOがCAMPFIRE社に事業譲渡された為、FAAVO運営会社からCAMPFIRE社に移籍することになりました。
普段はFAAVOから引き継いだCAMPFIRE内の地域プロジェクトに関する機能や外部パートナー様との連携システム、経理や管理画面周りのシステムについて開発していることが多いです。
この3年半の間にコロナ禍もあり、また多くの方が退職され新たに入社された方も多いので、気づけば社員の中でも古株になっていました。
今日は、そんなCAMPFIREの開発の歴史について知り尽くしている私がCAMPFIREでの開発体制の特色や独自の文化について書こうと思います。
この記事を書こうと思ったきっかけ
先日、CAMPFIRE開発チームでMTGがあり弊社の開発体制の特色や独自の文化について話す機会がありました。
皆、口々に「社風がいいと思う」とか「皆Slackでのテキストコミュニケーションに長けている」、「PMが頼りになるので開発に集中しやすい」等々、肯定的な話がたくさん出てきました。
その中でも自分が一番、CAMPFIRE独自の文化でメンバーが開発に専念するのに役立っていると思っているaskPM当番制度について書こうと思います。
askPM当番とは
この記事を読んでおられる多くのwebサービスの開発担当の方々にとっては絶対に避けて通れないのが問い合わせ対応・及びユーザーサポート対応だと思います。
CAMPFIREで言えば月数千万PVもあるサイトですので内容も多岐にわたり、問い合わせ数も桁外れに多いです。
もちろんいちばん大変なのは一時受けのカスタマーサポートの担当の皆さんだと思いますが、単純な問い合わせやよくあるパターンの質問についてはここで返してもらう事が多く、おそらく平常時は大半がそうです。
問い合わせの中には技術的な不具合やエンジニアによる調査が必要なものも多くあり、特に大型の機能開発のリリースがあった後などは不具合の報告などが集中することもあります。
技術的な調査が必要な問い合わせはPMに相談が行き、ここで使われるslackチャンネルのことをaskPMチャンネルと言っています。
askPMチャンネルに来た問い合わせのうちエンジニアによる調査が必要なものはここでエンジニアに問い合わせ内容が回されます。これの担当者をaskPM当番と呼んでいます。
PMも同じですが、askPM当番は当然普段の開発タスクを持っていて問い合わせ対応の役割を兼任する事になります。
ishimizuが過去に経験した他のプロジェクトの場合
FAAVO時代も含めishimizuが過去に関わったシステム開発は主に一人でPM業も兼任してやっていたことが多く、インフラ周りも含めほとんど全ての実装について一人で仕様を決めて一人で開発していたので、ユーザー問い合わせの技術的な質問は直接、自分に投げられる事が日常でした。
そのため問い合わせ対応に時間が取られてしまうとスケジュールが押してしまい、度々徹夜で開発をするような事も頻発していました。
ソシャゲ開発現場で割と大きなチームで開発する機会があったときでも自分の担当している分野が広すぎたりして結局問い合わせが自分に集中することが日常茶飯事だったりします。
自分の開発のクオリティが低いからと言ってしまえばそうかも知れないですが、問い合わせ対応に日々翻弄されてしまうともちろん本来の開発スケジュールは延び延びになってしまいます。
開発者も人間ですから運用担当と言い争いになったり、ユーザー目線で不自然な挙動を仕様だと押し通してしまったりシステム全体のクオリティを下げてしまう事態に陥ってしまう事も多々有りました。
そういった経緯もありCAMPFIREに入社する前はwebサービスの開発とはそういうものだと心得て、開発に専念するためにはバグの全くないシステムを作らないといけないという発想でずっと働いてきていました。
今多くのwebサービスの開発担当の方々にとってそのような開発現場はあるあるな話なのではないでしょうか?
ishimizuが入社する前はCAMPFIREでも、今よりもっとエンジニアも少なく、同じように限られた数人がほぼ専任で問い合わせ対応をさばいていたようです。
CAMPFIREでの問い合わせ対応当番制度について
ishimizuがCAMPFIREに入社した当初、PMは一人しか居なくほとんどの技術的問い合わせはその一人のPMに集中し、彼が一人で問い合わせをさばいて、技術的調査が必要なものについて日替わりのPM問い合わせ担当に投げるという運用が自然と出来ていました。(当初は「PMD当番」と呼んでいました)
「PMD当番」のPMDが何の略かは結局ずっと解りませんでしたが、複数のエンジニアでPM問い合わせの対応の負担を分散させるという意味ではユニークな仕組みで、他に適当な言葉が見当たらず新しい言葉を編み出したのではないかと考えます。今でも古くから在籍している社員は「PMD当番」と言ったほうがしっくり来る人も多いようです。
askPM当番制度の誕生
「PMD当番」はその後askPM当番と名前を変え、週替りでランダムに決められた順番で入社年数に関わらず、ある程度経験を積んだエンジニア(管理職とSRE・QA担当は除く)は皆、順番が回るように設定されています。
これによりエンジニア一人あたりの問い合わせ対応の負担が軽減され、また新しく入ったメンバーにも技術的課題や全体仕様を把握しやすくなるというメリットが有り、新人教育の観点でも一役買っています。
エンジニアの数がある程度居ないと出来ないシステムですが、私は他の会社で同様の制度を見たことがないので弊社の独特の文化なのではないかと思います。
何が良いのか
今はPMも複数人に増え、エンジニアも外部委託を含め10数人で回してるので二ヶ月に一度くらい回ってくる計算になります。
弊社の開発エンジニアで「開発に集中できる」という声が上がるのはこういった仕組みが支えているのかもしれませんね。
多少バグが出てしまっても自分で原因究明や修正PR作成まで必ずしも責任を持たなくて良く、askPM担当者とPMも一緒に解決に当たれるので、エンジニアの心理的安全性の確保にも役立っているように思います。
最後に
CAMPFIREでは開発エンジニアの募集を行っております。日々サービスの運用に追われて本来の開発タスクに集中できないという方、CAMPFIREでは完全リモートの自由な社風で好きな開発に集中して思いっきりやることのできる環境が整っています。
私達の職場で一緒に働いてみませんか?
https://herp.careers/v1/campfire/VKCNSqfbebk9