#2 Web系企業の特徴について説明します

こんにちは、たなかです。この前の動画の第二弾です。
開発方式についての解説が詳しくてとても為になりました。
 
 
参考にしたYouTube
 
「Web系企業の特徴について」
開発方式は非ウォータフォール型
 
※Web系企業の作るサービスは発注者が存在しない。
 
※つまり「明確なユーザが存在しない」(要件定義が作成できない)ということになるので、SIerのように「ユーザーにしっかりヒアリングをして要件定義を作成してその要件通りに作れば完成」という方式では対応出来ない
サービスの独自性がユーザに受け入れられるかどうかは、実際にサービスを使って見てもらわないとわからない。
・仮設を立てる
・サービスに仮設を反映する
・ユーザからフィードバックを受ける
・フィードバックを検証する
・また仮設を立てる
 
この繰り返しでひたすらサービスの改善を繰り返すという開発方式にならざるを得ない。(要件定義から製造まで後戻りをしないウォーターフォール型では対応できない)
 
ひたすらサービスの改善を繰り返していく開発方式であるとかサービスのアーキテクチャ(基本設計)に関して、最近Web企業でトレンドになっているキーワードとしては、皆さんももしかしてきいたことがあるかもしれないですけど、
・リーン開発
・マイクロサービス
 
非ウォーターウォール型の開発方式が絶対的に正しいとかではなくて、仮設を立てて、それをサービスに反映してユーザのフィードバックを受けてというループを迅速に回していくために、みんな開発に色々な開発手法を取り入れてそういうものを取捨選択したりミックスしたりして頑張ってるという感じ。
ウォーターフォール型が悪いというわけではなくて明確な発注者のいないサービスを作る上では、SIerさんがやっているウォーターフォール型では対応できないという風に捉えていただければと思います。
 
設計とプログラミング両方が出来るエンジニアの価値が非常に高い。
※というよりもSIerの「SE」のように、設計しか出来ないエンジニアの価値があまり高くない
※設計作業が重要なのはSIerもWeb系企業も同様だが、設計した内容を 後述するようにWeb系企業では設計作業にあまり多くの工数を確保できないばあいが多い。 
 
受託開発の場合は、システムを完成させれば、発注者から支払いを受けることが出来るが、Web系企業のサービスは発注者存在しないため、ヒットしなければ全て赤字になってしまう。
ユーザーのフィードバックを得ていない初期段階で設計や開発に時間を使いすぎているとユーザのニーズから乖離した無駄な機能を作り込んでしまうリスクを増大させてしまう。
 
Web系企業では、コスト面のリスクとかユーザが欲しがっているわけでもない無駄な機能を作り込んでしまうようなリスクをできるだけ小さくするために
「時間をかけて十分に検討された良い設計」をおこなうよりも
「とにかく動くものを早く作る」
ことの方が重視される場合が多いです。
こういった理由で基本設計のフェーズで時間をかけられない場合が多い。更に詳細設計的な部分においてはその部分を担当するエンジニアが全て自分で、場合によっては頭の中だけで設計した上で自分でプログラミングを行う方式が一般的。サービス開発においては「基本設計」フェーズよりも「プログラミング」フェーズのほうが長くなることが一般的なので、設計しか出来ないエンジニアは開発工程からみると有用性が低いということになります。一番長いプログラミングフェーズになったときにやれることがなくなってしまう
 
前述した「コスト面」の問題でWeb企業のサービス開発は(特に初期開発の場合は)開発メンバーが少人数の場合が多いので完全分業制を取れる場合は少なく設計からプログラミングまで、一人何役もこなせることが求められる場合が多いです。
※最も長い「プログラミングフェーズ」に対応できるように「プログラミングバリバリ出来る」ことが大前提で、さらに設計作業に関しても、「あまり工数を確保出来ない中でもいい設計ができる」エンジニアの価値が非常に高くなる、ということになります。
 
使われるのは主に「枯れた技術」ではなく「モダンな技術」
新しい技術や新しいツールの方が「性能」「効率」「使い勝手」の面で優れているケースが多いということもあるが、新しい技術の「リクルーティング力」を重視してそのような方針を採用している会社さんも多い。
※優秀なエンジニアほど「新しい技術」を使いたがる優秀なエンジニアを採用あるいは自社で長く働き続けてもらうためには技術的に魅力ある環境を用意することが必須となる。
 
エンジニアの年齢層はかなり若い
Slerさんと異なりエンジニアの平均年齢が20代というWeb系企業さんは珍しくない
※エンジニアの平均年齢が30代後半とか40代というWeb系企業さんはあまり見かけない
Web系企業さんは平均年齢が高かったとしても、30代前半くらいの会社さんが多い。Web系企業でエンジニアの平均年齢が30代後半という会社さんはある程度人数の多い会社さんだと珍しいと思います
 
サービスが大きくスケールする可能性がある
※例えばソーシャルゲームとかがそうなんですが、ヒットすると日本中あるいは世界中で自分のつくったサービスやアプリが使ってもらえる可能性がある
※ただし残難ながら、ゲーム系以外で世界で広く使われている日本発祥のWebサービスやアプリはほとんど存在しないというのが現状(今だとメルカリさんぐらいしか浮かばないLINEは韓国企業さんが主体で作られたアプリなので日本発祥というのは無理がある)
 
日本発祥のソーシャルゲーム以外のサービスがっ世界でヒットできていない理由
 
外国でヒットしたサービスの後追いで作られているサービスが多い(タイムマシン商法)後追いが絶対に悪とか負けるとかそういうことではなインですけど、既に外国でヒットしているものと同等のものを作ってヒットしても、少なくともそのサービスの元祖の国であるとかそのサービスが既に流行っている国とか勝てる可能性が非常に低いわけなので、タイムマシン商法で作られたサービスは日本国内にとどまってしまうことが多くなる。
次にあるのが日本語圏の制約。例えば最初から英語で作られていれば、その時点で 世界中の20億人近い潜在ユーザをターゲットに出来る日本語だけだと多くてユーザは1億人程度なので世界に出ていく上では非常に不利。個人的には日本のサービスが世界に出ていけないのは、ここが 原因かなと思っています
次にスタートアップやベンチャー企業に投資される金額がアメリカに比べると少ない。今の時点だと数十倍程度の差がある。そうなってくると優秀な人材を集める上でも基本的にはお金のある方が絶対的に有利なので残念ながらそういう点でも今の日本は不利な環境であるということですね
 
その中でも唯一ですね珍しくというか先行しているのが「ブロックチェーン」という分野
 
コインチェック問題でかなり悪いイメージついて島ているが、投機的な目的ではなくて社会インフラとして使われるように健全に発展してほしいと個人的にはおもっています。
 
「CTO」という役職が存在する
※Web系企業以外でもこの役職は存在するが、SIerと比較として紹介。(SIerには一部例外を除いて基本的にこの役職は存在しない)
 
※「Chief Technology Officer」の略で日本語だと「最高技術責任者」という
皆さんも聞いたことがあるかと思うのですが、Web系企業ですとほぼ100%この役職の人が存在します。存在しないときは、CTOの候補になる人を探し中とかそういうケースに限られると思います。
 
CTOの役割は多岐に渡るが、「会社経営における技術面での決定に関して最終的な全責任を負う」というのはどこの会社さんでもほぼ共通。
 
※小規模なWeb系企業の場合はCTOの方がコードをバリバリ書いたりしますが、企業規模が大きくなるとCTOはほとんどコードは書かず、マネジメント業務、採用業務、イベント登壇、その他「夜のお付き合い」等、コードを書く仕事以外がメインとなります
 
IT系のスタートアップの場合、起業時からCTOが存在していることがほとんどだが、あとからCTOが採用される場合もある
※あとからCTOが採用される場合、CTOは「その企業のエンジニアの象徴」的な存在なので、イメージ面がかなり重視される
※スキルが優れているのは当然として、「オープンソースの著名なコントリビュータ」等 知名度(およびリクルーティング力)の高いエンジニアがスカウトされてCTになるけーすが多いという感じはあります
 
これがCTOの仕事だと定義するのは難しいですけれども、技術面における最終決定者であるというそういう立場の人でないとやりづらい仕事は基本的にはすべてCTOに回ってくるというか、そういう意味では非常に責任も重いですし仕事の範囲も広いですし大変な職種ではあると思います
 
最近では「VP of Engineering」というCTOの役割のうち「採用」や「教育」や「マネジメント」等の部分を分離した感じのポジションを作るWeb系企業も増えてきています
アメリカでは昔から存在していた役職だそうです
日本でもCTOの仕事の範囲と分量が多すぎて無理ゲーなんだけどという感じで、人数の多い会社さんだと、従来CTOが一人で対応していた業務を権限移譲というか分業体制で担当する流れになってきているという印象です
「VP of Engineering」は直訳すると「エンジニアリングの”副社長”」だが、」実際は「部長」的な意味