2018年7月14日に開催されたさくらじまハウスの最初のセッションは「秩序や混沌とどう付き合えばいい!? 夢を実現するために、技術の変化と組織を考える」というタイトルで、技術の変化とエンジニア組織をテーマに扱う。 地元シナプスの中野 龍氏のモデレートの元 さくらインターネットの江草 陽太氏、はてなの渡辺起氏、アラタナの月岡 誠治氏など、エンジニア組織に関わるリーダーが闊達に持論を語った。以下、質疑応答という形でセッションを振り返る。
Q:寿命の長いサービスを続ける秘訣とは?
「当分使い続けなければならない技術とあとから変えられる技術をどう使うか、バランス感覚を個人・組織で持つことが重要」(さくら江草)
「はてなも15年近いサービスがあるが、技術は移り変わるので、とにかく手を加え続ける。あとは失敗しやすいところで失敗しておく」(はてな渡辺)
「10年近いECサイトを運営しており、プラットフォームや運用は変わってきているが、秘伝のたれ化しているスクリプトはまだ使っている」(アラタナ月岡)
Q:技術をどのタイミングで換える?
「お客様の体験や利便性が変わるのであれば、作り替えるべき」(さくら江草)
「サービスは変わっていくのが前提。変更できないのはむしろよくないという認識を作っていきたい」(はてな渡辺)
「刷新するのは目的ではないので、きちんと動いているモノは変えなくてもいい」(アラタナ月岡)
Q:システムの効率化のために取り組んでいること
「最近のメンバー同士の共通見解としては、1つの大きなシステムではなく、機能ごとにマイクロサービスで作っておくこと。マイクロサービスで作っておけば、交換や拡張も容易だし、他のサービスでも使い回せる」(さくら江草)
「サービスごとの多様性も重視している。共通基盤を厚くしすぎると開発スピードが落ちることもあるので、全体を考えていくと、むしろ薄くしていこうかなと思っている」(はてな渡辺)
Q:自社でも作れるという会社がアウトソーシングする基準
「自社で作れるという文化が強いので、今日のイベント会場のネットワークも自前で敷設してしまった。みなさんはどういう基準でアウトソーシングしているか知りたい」(シナプス中野)
「われわれも作れるものは作ろうという文化が強い。でも、スイッチとか、コモディティ化したものはイチから作らない」(さくら江草)
「世の中にある便利なものを積極的に使っていこう思想がある。クラウド系のサービスもそうだし、さくらインターネットさんに物理インフラの運営をお任せしている。その方が事業に集中できるから」(はてな渡辺)
「クラウドサービスが進化しているので、それらをインテグレーションすることで事業を展開している。すでにあるサービスをあえて作ることはしない」(アラタナ月岡)
Q:新しい技術の導入で失敗したこと
「ハードウェア周りで先進的なことをやると大変。われわれも出たばかりのホワイトボックススイッチを導入したら、アップデートや継続的な利用が難しかった」(さくら江草)
「データストア系のミドルウェアを導入した際、メンテナンスが個人に依存してしまい、バグが起こったときに撤退が難しかった。自身でメンテナンスできるか、コミュニティサポートを得られるソフトウェアを選ぶべき」(はてな渡辺)
「もはや物理ハードウェアをいじっていないので、クラウドをいち早く触って、ダメなところにいち早く気がつける状態にはなっている」(アラタナ月岡)
Q:新しい技術のためのエンジニア組織とは?
「入社したばかりのときはすべてサービスごとに開発と運用がいたが、3年くらい前からすべて技術本部に所属し、どのチームに参加するのか流動的になった。いずれにせよ尖ったサービス開発とレガシーな部分を置き換える作業は、組織的にバランスをとってやらなければならない」(さくら江草)
「はてなはエンジニアが半分くらい。各メンバーは事業部単位に所属しているが、横軸にエンジニア組織があり、採用や育成、活動支援などの活動をやっている。エンジニアが入れ替わることも多いし、入れ替わるべきだと思っている」(はてな渡辺)
「アラタナも基本は事業単位だが、案件によってはおのずとチーム構成になって進めていくこともある。エンジニアが別の仕事にジョブチェンジすることもできる」(アラタナ月岡)
Q:メンバー同士のコミュニケーションの取り方
「社員全員がSlackを使っているので、メールよりもコミュニケーションはとりやすくなった。趣味のチャンネルがあったり、普段顔合わせないけどフォローし合うみたいな関係も生まれている」(さくら江草)
「昔はエンジニア中心にIRCを使っていたけど、今は社員全員でSlackを使ってる。とはいえ、テキストだけだとニュアンスが伝わりにくいので、Google Hangoutでつねに話せるようにしている」(はてな渡辺)
「うちも基本的にはSlackだけど、この会場にいる人もほとんどそうじゃないでしょうか? とはいえ、チャネルの作り方やコミュニケーションギャップを生まないようにするルールを運用している。一方で、部門同士は特にオフラインのコミュニケーションも重要だと思う」(アラタナ月岡)
Q:エンジニアの成長のために進めていること
「勉強会に参加すること、登壇すること、スタッフすることは推奨している。好きな人にはインセンティブになるし、成長につながる」(さくら江草)
「規模が大きい会社でもないので、エンジニアが自ら学び取ってもらいたいと思っている。そのためのインプットとアウトプットは重視していて、出張や会場提供も積極的に行なっている」(はてな渡辺)
「最近、よく話しているのはやはりアウトプット。ブログでもいいし、イベントでもいい。あとは社員でこうしたアウトプットに対して、感謝したり、褒め合う文化が作れるとインセンティブになると思う」(アラタナ月岡)
「エンジニアが12人いるが、今年は年10回はイベントで登壇することにした。今までまったくイベント参加がなかったので、ノルマ化してもいいのかなと思った」(シナプス中野)
Q:エンジニアのためにやって失敗したこと、成功したこと
「完全にフラットにし過ぎるのもよくなかったのかなと。自由すぎて効率が上がる人もいれば、上がらない人もいる。両極端に寄せないことが重要だと思っている」(さくら江草)
「毎週、技術勉強会をやっていて、持ち回りで登壇してもらっていたけど、必殺技を繰り出すために準備が必要だったり、プレッシャーが高まってしまった。最近は中途で入ったエンジニア同士で話すとか、テーマを設定して集まっている」(はてな渡辺)
「逆にうまくいったケース。新規事業でスキルの高いメンバーでチームを構成してみたら、新しい技術でパフォーマンスが出る人、黙々と開発する人、業務知識の豊富な人、設計が得意な人などバランスをとったらうまくドライブした」(アラタナ月岡)
Q:エンジニア組織のゴールとは?
「個人プレイをしているけど、外から見ると組織力がすごい。好きなことをやっているのに、全体がきちんと回っているみたいなのが理想」(さくら江草)
「『知る、つながる、表現する』という会社のミッションをスケーラブルに実現することを役割としてもっている。個々の能力は高いのだけど、組織としてスピードを上げていけるのを目標としています」(はてな渡辺)
「アラタナはまさに立ち上げから成長時期に移行しているところなので、そこの仕組み化みたいなのは短期・中期のミッションかなと。そのためにエンジニアが自走できること、どんな立場でもユーザー目線を持ってもらうことを意識している」(アラタナ月岡)
Q:属人化を防ぐための工夫があれば教えて
「新しい言語は5人はわかっておこうみたいなルールがあった。運用に入るまでには、少なくとも2~3人はその技術について知らないと怖いとは思う」(さくら江草)
「最近だと機械学習、出始めの頃のスマホエンジニアとか、特定の人しかわからない技術を扱っているエンジニアもいた。そこで技術本部ではサブ会という会合を行ない、知見の共有や業界動向をキャッチする努力はしている」(はてな渡辺)
「属人化はタイミング化によるかなと思っている。やはり新規事業やサービスの立ち上げ時期はスピードも求められるので、リードエンジニアが推進することになるので、ある程度属人化してもよいと思う。でも、運用フェーズに入って障害や問題が出てくると、誰かじゃないと対応できないはよくない。組織としては他の人でも対応できるようにしていく必要がある」(アラタナ月岡)