"フルスタック"は定義がブレるので"ダブルスタック"、"トリプルスタック"と呼ぶ
とかどうでしょう?
フルスタックは定義がブレやすい
フルスタックエンジニアという言葉があります。IT業界ではバックエンド、Webフロントエンドなどの複数技術領域にまたがって業務を遂行できたり、顧客折衝から要件定義、実装など複数の工程をカバーできる人材がフルスタックエンジニアと呼ばれることが多いように感じます。
一方でファーウェイの天才少年プログラムの通過者なんかだとソフトウェアから回路設計、機械設計も一人で完結できますという場合もあって、そういう視点だとどんなにソフトウェア開発の中の複数レイヤーを対応できても1スタックのエンジニアかもしれません。
フルスタックという用語の定義はどうしてぶれやすいのでしょうか?
業務で扱う領域が会社ごとに違うことが多い
a) 例えば外部に決済APIを提供している会社のサービスがGoで作られていたとします。バックエンドとインフラ構築ツールがGoでできています。その会社で両方を対応しているエンジニアは言うでしょう、自分はフルスタックであると。
b) 例えばB向けのウェブのみのサービスを開発している会社があるとします。SPAに近い構成でフロントエンドとバックエンドが明確に分かれている場合に両方を対応しているエンジニアは言うでしょう、自分はフルスタックであると。
c) 例えばC向けのサービスでiOS/AndroidがFlutter、Web画面はなくバックエンドのAPIはDartでできている会社があったとします。そこでモバイルアプリとサーバーAPIを両方対応しているエンジニアは言うでしょう、自分はフルスタックであると。
aの人の視点で言えばインフラ構築もしていないb, cの人はフルスタックでないように見えます。bの人の視点で言えばWebフロントエンドができない人はフルスタックでないでしょう。cの人の視点だとモバイルアプリを開発できない人はフルスタックでないでしょう。
他パターンでPythonの会社でWebバックエンドと機械学習エンジニアが兼務のパターンも見たことがあります。
結局業務で扱う領域が会社ごとに違いがあり、その会社で必要な業務範囲をカバーできていれば、その会社視点ではフルスタックなのだと思います。
数だけ揃えてダブルスタック/トリプルスタックエンジニアと呼んでみる
一方でフルスタックエンジニアの求人をかけたときにcの会社の人の視点でa,bの会社のフルスタックエンジニアが来てハッピーでしょうか?今まで複数領域キャッチアップできていたというトラックレコードがあるとキャッチアップ速度は速そうで好印象ではあるのですが、即戦力ではないと思います。カバーレンジが違うからですね。
こういった期待値のズレはスタック数をnとしてnの値が小さい方が起きやすいです。nが高いフルスタックエンジニアの方が、カバーレンジのラップ範囲が多いので他社でもフルスタックであることが期待できます。
例えばダブルメジャーという言葉があります。大学で複数の専攻分野を同時に主専攻として学ぶことを言います。これをnスタックエンジニアにも流用するとどうでしょうか?
2スタックの場合はダブルスタック、3スタックの場合はトリプルスタックと呼べそうです。CPUでクアッドコアくらいなら一般に浸透していますし、クアドラプルくらいならいけるかもしれないですね。
結局とある人/要件がフルスタックかを議論すると収束できない場合も多く、スタックの内容よりもスタック数のみ合意に持っていった方が成功しやすいようには感じます。
まとめ
まとめです。
とあるエンジニアがサポートしている or とある会社が必要としているスタックの数をnとします。
- n = 1の場合、シングルスタックです
- n = 2の場合、ダブルスタックです
- n = 3の場合、トリプルスタックです
- n = 4の場合、クアドラプルスタックです
- n >= 5の場合、そろそろフルスタックと呼んでもいいでしょう
n => 2の場合を総称してマルチスタック、マルチプルスタックと呼んでもいいかもしれません。
Discussion