BASEプロダクトチームブログ

ネットショップ作成サービス「BASE ( https://thebase.in )」、ショッピングアプリ「BASE ( https://thebase.in/sp )」のプロダクトチームによるブログです。

リードエンジニアにおけるサービスリードという役割

こんにちは、CTOの藤川です。

これまでエンジニアの肩書において、エンジニア専門職の上級職としてリードエンジニアという役割を設定しておりました。 リードエンジニアと言うと、世間の見方としては「技術力に優れたエンジニア」というやや漠然とした役割と想像しているのではないでしょうか?

Webサービス開発における「技術力」とは

そもそも「技術力とは何ぞや?」というのが曖昧なことが多いです。

というのも、私共が担っているビジネスは、Webサービスを提供しています。Webサービスは24時間365日運用されていますので、必要な技術も多岐に渡ります。毎日新機能を開発していますし、継続的かつ安定的に運用していく必要がありますし、セキュリティ要件は日々変わっていきます。

僕らはコンピュータサイエンスの力の恩恵を受けつつ、特には恩返しを試み、サービス実現としてのソフトウエアエンジニアリングを推し進め、ユーザーさんに使い続けていただくサービスを継続的に開発運用していくことが求められます。

我々の場合は、フリーミアムなECプラットフォームですから、多くのショップオーナーさんのビジネスや生活を支えることを生業として、結果として生まれた流通総額(GMV)という成果に連動してお給料をいただきます。

また、サービスそのものは外部環境に合わせて変化していくことが必要ですので、それをスピーディーに推進する力がエンジニアには求められます。Webサービスで何もしないのはビジネス的にもセキュリティ的にも退化を意味します。常に時代の変化にアンテナを張り、技術を用いて変化を生み出していきます。また、そのような技術的問題点を一切感じさせることなくユーザさんには安心して使っていただけるように良いサービスとして提供していく必要があります。

「良いサービス」とは

f:id:aiyoneda:20180611182645j:plain (Photo by WOCinTech Chat

ここで言う、良いサービスとは、

  • サービスクオリティ (目的に対しavailableではなく、usefulであること。)
  • プロダクトクオリティ(UIを通じた高い品質のサービスを安心、安定して使えること)
  • サイト信頼性 (変化と継続)
  • スケーラビリティ (何が起きても困らない)
  • セキュリティ

などで構成されます。

「良いサービス」を提供するために、エンジニアに求められるスキル

これらを元に私共が提供するサービスを実現することに関して、エンジニアに求めるスキルについて軽く想像するだけでも、結構たくさん思いつきます。

  • Webアプリケーションの技術開発力(PHP等のサーバサイド言語、JS、動画アプリケーション)
  • よいWebサービスを作るサービス開発力(UI/UX、ビジネスフロー、サービスを実装に変える力)
  • HTML5、iOSやAndroidアプリケーションのアプリ開発力(主にパフォーマンス、安定性、OSの知識等)
  • Webフロントエンド、iOSやAndroidアプリケーションのUI開発力(クリエイティビティの実現、UI安定性)
  • サーバインフラの実現力、DevOpsの開発力、AWS等のクラウドの知識
  • セキュリティをしっかり維持する力、もしくは過去の問題の発見力
  • サービスの継続的運用に関するコミットメントを持てる力 (なにげに、これは特殊技能だと思います)
  • 機械学習やAIなどを実現する技術力、統計的知識
  • 変化するフロントエンドをキャッチアップし、クリエイティビティと結びつける構築力
  • 要件をチームにわかりやすく翻訳する翻訳力、ドキュメント力
  • 未来に向けたアーキテクチャ設計、変化を実現する力(これはスキルだけあってもできない)
  • プラットフォーム開発力、外部パートナーを巻き込むAPI開発力など
  • プロジェクトマネジメント、アジャイル等工程設計力と実践力
  • テストやQAなどプロダクトクオリティを実現する方法論に長けていることと、チームメンバーを引っ張る力
  • PHPそのもの、フレームワークそのものの成長性維持に貢献する知識、人脈、コミットメント、コミュニティ活動ができる力

Webサービス企業におけるエンジニア属性:「テック」と「サービス」

ここに挙げた通り、一つのWebサービスの成長に必要なスキルへの関心について、一人のエンジニアがすべて満たすのは現実的に不可能です。

Webサービスのエンジニアに期待される能力のわかりやすい事例として、深夜に起きていること(障害などではなくアラートなど)の適応力は、何より我々のビジネスそのものへの関心がなければ、到底できるものではありません。「このアラートは今は気にしなくても大丈夫」の一言をSlackに投げるためのバックグランドにある技術知識と当社のサービスの経験こそがWebサービスのエンジニアとして求められる部分です。

もちろんやることはそれだけではないですから、エンジニアそれぞれ特技にあわせて役割を定義し、貢献、成果を評価できる体制をつくり、その総体としてエンジニアチームを構成していくことになります。それに必要な貢献を期待できる能力に、投資的にお給料を先払いするのに必要な肩書を上級技術職として割り当てていくことになります。

それに必要な能力を抽象的にまとめていった時に、Webサービス企業のエンジニアに求められる能力属性には「テック」と「サービス」という括りがあることにたどり着きました。

f:id:f-shin:20180611171044p:plain

テックのスキルが優れているだけで良いサービスが作れるほどWebサービスは甘くありません。一方で、良いサービスを作るためにはテックの適応力は不可欠です。また時間軸と共に変化していく技術に対する適応性、応答性は、テックのスキルが優れている人材が得意とする分野です。

「テックリード」と「サービスリード」の役割

今回、テックとサービスにおける理想像をまとめて、それらを達成している模範となるべきエンジニアを「リードエンジニア」と定義し、更に細かい属性として、「テックリード」と「サービスリード」という肩書を定義しました。

Webサービス企業のエンジニアはテックへの適応力とサービス開発力は不可分です。しかし、その人の魅力の出自はテックなのかサービスなのか、どちらに立脚するかで肩書を変えています。今回、その役割定義を行いました。

その定義が以下になります。まずは、リードエンジニアの役割です。

リードエンジニア

事業に配属され、事業の中での開発やサービス運営をリードする以上の成果を期待されたロール。 サービスの継続的発展を実現するための技術力や、BASEのサービス哲学を具現化するためのサービス開発力などを兼ね備え、圧倒的な主体性でサービスの成長に取り組む模範となるべき役割を担う。

「圧倒的な主体性」こそがリードエンジニアにとって重要なポイントです。

そして、テックリードです。

テックリード

高い技術力を持ち、時代の変化を読みながら、適切な技術を、適切なタイミングと適切な方法で自社サービスに取り入れ、スケーラビリティの実現や高いセキュリティを通じてサービスの進化に寄与することが期待される。サービスの継続的進化を担い、メンバーの技術的成長の模範となる役割

「適切な技術を、適切なタイミングと適切な方法」を模索することを強く求めています。技術変化の激しい業界だからこそ、タイムラインに日々流れてくるような素敵な技術ありきではないということです。また、チームに変化を生み出すスキルがテックリードには重要です。それが「サービスの継続的進化を担う」という部分に期待されています。

該当職種はWebアプリケーションエンジニア、フロントエンド(Web、App問わず)に加えて、SREのようなDevOpsエンジニアや技術基盤を担うアーキテクトなども想定しています。

そして、今回追加したのがサービスリードです。

サービスリード

BASEのサービス哲学を熟知し、高い顧客体験を実現するサービスを開発することで、体験の質を通じたサービス信頼性を実現する。 顧客に支持され続けるサービスの継続的発展に寄与し、サービスづくりの模範となる役割。

当社のサービスでビジネス要件をサービスとして設計する際に、ユーザーへのベネフィット実現を前提としてすべてを再構築する必要があります。つまり「本当にその要求はユーザベネフィットが提供できるのか?プロダクト側で全部洗い直せ」という工程が必要なのですが、そのあたりのアレンジをエンジニアという役割の中で期待できる人材がサービスリードです。

例えば、ついつい受託出身だと(僕自身がそうなのですが)、ビジネス要件は実現すべき前提条件として盲目的に受け入れてしまいがちですが、そのまま無理やり実装したところで戦闘力のある良いサービスが提供できないのであれば、すべての話をひっくり返さなくてはいけないかもしれません。そこへのサービス思考力が「高い顧客体験」の実現には不可欠です。その視座を元に高いプロダクトクオリティを実現することがサービスの継続的発展に繋がります。

また、顧客ニーズに耳を傾け、時には己の判断で即座に修正を行える信頼というのも必要です。その修正の粒度や判断力が顧客ニーズや会社のOKR達成に対して不適切であれば、その行動を誰かがマネジメントする必要があります。例えば大技主義のアーキテクトであったり、スキルが高いがゆえに過剰に作り直したくなる病などを持っている人は、サービスリードには適していません。目の前で困っている人、その裏側にいる人を想像し、適切な粒度の修正を行うという判断力は、テックを中心とした思想とは少し違う価値観が求められることが多いようです。

この役割は基本的にはWebアプリケーションエンジニアやフロントエンド(Web、App問わず)などを想定していますが、もしかしたらフロントエンドを担うデザイナー職もこの範疇に入るかもしれません。(デザイナーとデータサイエンティストは違う役割構造を定義することになるとは思いますが)

「サービスリード」とは、その一文字を直す作業に意義、喜びを感じられること

サービスリードという肩書は検索してみると、いくつかのWebサービス企業の記事で見つかり、参考にさせていただきました。

しかしながら、なかなか一般的なエンジニアの評価スキルとして見えないことが多いです。世の中の判断軸が技術偏重とまでは思いませんが、技術系メディアが書籍等を作るのに必要なテクニカルな部分にアテンションが集中しやすいというのがあるのかもしれません。テックへの貢献は、GitHubで言うPublicリポジトリにおける貢献や活躍が多くインターネットで共有されています。サービスへの貢献は、主に企業内のPrivateリポジトリへの隠れた貢献であることで、なかなか共通基盤としての技術者評価に結びつきにくく、Webサービスを作ることはコードさえ書ければ誰でもできるんじゃないか?と、その質やコミットメントの部分を無視されてしまい、当たり前の行動のように見えてしまうことで適切に言語化されていないというのがあるように感じています。

サービスで実現したい哲学(その機能は何のためにあるのか、何を実現したいのか)を顧客が所有する仕事に慣れている受託の方やSIerの方で、僕の面接を受けている人であれば聞いている方もいらっしゃるかもしれませんが、「その一文字を直す作業に意義、喜びを感じられること」がWebサービスに従事するエンジニアに求める部分です。今回、その模範となる役割がサービスリードそのものです。今回テックリードとサービスリードの肩書を持つエンジニアができましたが、当社のエンジニアはテックリード職であってもサービス属性は実はすごく高いです。そもそも、それが見えないと採用していませんから、テックリードとサービスリードは敵対しない概念だと書いたとおり、その人の魅力はどこが主軸か?で分けています。

一緒に良いサービスを作りませんか?

この2つの概念は敵対するものではなく、両立が望ましいわけですが、そうは言っても、その人の得意技として技術変革を主軸に活躍する人もいれば、技術は手段としてサービス実現に活躍する人もいるわけで、その両属性をチームとして評価しますよ!というのが今回のテックリードとサービスリードというリードエンジニアの属性化に繋がっています。今後はそこをしっかり明確化していくことで、サービスづくりをしたいエンジニアももっと増やしていきたいと思っています。

この両者の人材がバランスよく融合することで、サービス全体のクオリティが実現できるというのが、この記事に書いてた論点です。それぞれの属性を強みとしたエンジニア、それぞれ、ちゃんと高く評価してるんですよという当社にご興味を持ってくださったお方がいらっしゃいましたら是非、お話しましょう。

採用情報はこちらから! jobs.binc.jp