(言葉遊びみたいな記事を書きますね。その上、用語の使い方が間違ってたらごめんなさい。)
一時期、フルスタックエンジニアって言葉流行りましたよね。ふと、要件どこまでだっけ?と思って調べようと思ったんですが、日本語で調べると、妄想が暴走してロクな話が出てこなそうなので、英語の方で調べてみるとわかりやすい。
What is a Full Stack developer?
Server, Network, and Hosting Environment.
Data Modeling
Business Logic
API layer / Action Layer / MVC
User Interface
User Experience
Understanding what the customer and the business need.
個人的には、ネットワーク監視やデプロイなどのインフラ運用周りと、HTML/CSSは誰かにお願いしたいですが、それ以外なら、初期の立ち上げ程度の完成度であれば、まぁそこそこどうにかなるかなという印象はあります。
でもアレですよ。所詮、人間は24時間しか持ってないので、ほんとの最初の最初のフェーズは良いのですが、そこそこ会社にバリュエーションがつく頃には、スケールしやすい所でチームを分けることになるので、フルスタックであることはあんまり意味が無いかなって思います。CTOも経営レイヤーとして動くわけですが、残念ながらマネジメントはフルスタックエンジニアの定義には入ってないですね。
それでも理想としては、1チケットがこなせる最頻度の範囲を一人でカバーできると最速で仕事できるので、それぐらいで十分です。あとはチーム分けをすればいいと思うんですが、そう考えた時にフルスタックエンジニアよりも、デュアルスタックエンジニアの方が全然大切だな、と。
例えば、
・WEB APIの挙動や実現性をしっかり理解し仕様をコントロールできる、スマホのアプリエンジニア
・しっかりスマホのアプリエンジニアとコラボして、何が問題なのか?を指摘しあえるAPIエンジニア
・サーバインフラに、自分の要望をちゃんと伝えて、適切なシステムを作れるアプリケーションエンジニア
・アプリケーションエンジニアに、本番環境の問題を適切に伝えて問題解決できるインフラエンジニア
などです。これ、何が必要かというと、隣り合う役割の技術的知識や、会話をして問題点や解決案を伝えられるスキルのことを言ってるんです。
理想を言えば、お互いがプロで適切にコラボしあえれば、そんなことは必要ないと思うんですが、現実的には溝があって、ボールが落ちてしまうことが多々有ります。ホントあります。マジで過小責任はロクなことが起きないです。
10年以上前から、そんなシーンを嫌と言うほど見てきました。
Aはこうだと思っていた、Bはこうだと思っていた。お互いにお互いが都合よくやってくれると思っていた。自分の範囲が相手にこういう影響をあたえるとは思っていなかった、なんで相手がこういうことをやってるのかわからない、、、などなど。
そうではなく近接する役割を、自分事としてしっかりこなし、相手を説得するだけの技術力や経験を持ったエンジニアを、仮にデュアルスタックエンジニアと定義した場合、デュアルスタックエンジニアが揃うチームは強いです。
要するに、自分でやれば、その辺まるっと作れなくもないんだけど、あえてチームで役割分担をしているので、効率は非常に高いチームができるわけです。
どうやったらなれるか?というと、自分の技術力の範囲に閉じずに越境することを怖がらないで勉強するということに他ならないでしょう。
人間、ついつい自分のやりたいことしかしないですし、得意な領域や得意な言語をどんどん深掘りしていくほうが楽しいもんです。他の人がやればいいと思ってることは、任せればいいわけですし、もし失敗したら、あいつが悪いって非難すればいいんですから。
それに仕事ではマネージャは、現状最適できればいいわけですから、あえて与えられた範囲を超えて求められることはありません。
しかし、それでは、実は世界の動きに置いて行かれているケースもあるかもしれませんよ。devopsやクラウドを生かすという部分において、越境しないと相手の気持ちがわからないなんてことは多々あります。
つまり自分から外の世界に飛び出る努力をしないと、デュアルスタックにはなれない可能性が高いです。
フルスタックエンジニアという言葉の反発のエネルギーは、「そんなの全部できるはずはない。専門職に失礼だ」という考え方だったと思います。
しかし、「デュアルスタックエンジニア」は、専門職同士がうまく仕事をする方法論です。つまり、自分が相手の足を引っ張らないために、あえて専門領域に足を踏み込むという考え方です。
僕は昔から「のりしろ」と表現してきました。これもあまり理解されない言葉だったようです。若干フルスタック感があったようです。
参考:業務ののりしろ
繰り返しになりますが、適切な空気を読めるデュアルスタックエンジニアがコラボするチームは強いです。責任分界点における話も早いし、システム障害も減るでしょう。
ある種の、「あ、うんの呼吸」を実現するためにも、デュアルスタックエンジニアは最低限、志してほしいなと思います。
かつて、こんな名言を残した偉大な上司の人がいたことを皆さんご存知でしょうか。
我々の間には、チームプレーなどという都合のよい言い訳は存在せん。
あるとすればスタンドプレーから生じる、チームワークだけだ。
これを実現するのは、相互理解を深められるデュアルスタックな人材のチームがいるからだと思います。チームビルディングをした草薙素子は見事にフルスタックでしたけどね。
【PR】ご意見、感想などは是非、mstdn.fmのローカルタイムラインでお聞かせください