開発者はフルスタックである必要はないが、チームはそうあるべき
from
One common way I've seen this layering lead organizations astray is the AntiPattern of separating development teams by these layers. This looks appealing because front-end and back-end development require different frameworks (or even languages) making it easy for developers to specialize in one or the other. Putting those people with common skills together supports skill sharing and allows the organization to treat the team as a provider of a single, well-delineated type of work. In the same way, putting all the database specialists together fits in with the common centralization of databases and schemas. But the rich interplay between these layers necessitates frequent swapping between them. This isn't too hard when you have specialists in the same team who can casually collaborate, but team boundaries add considerable friction, as well as reducing an individual's motivation to develop the important cross-layer understanding of a system. Worse, separating the layers into teams adds distance between developers and users. Developers don't have to be full-stack (although that is laudable) but teams should be.
---
このようなレイヤー分けが組織を迷わせるよくある方法のひとつに、レイヤーによって開発チームを分けるというアンチパターンがある。フロントエンドとバックエンドの開発には異なるフレームワーク(あるいは言語)が必要なため、開発者がどちらかに特化しやすいからだ。共通のスキルを持つ人々をまとめることで、スキルの共有をサポートし、組織はチームを単一の、明確に定義されたタイプの仕事の提供者として扱うことができる。同じように、データベースのスペシャリストをまとめることは、データベースとスキーマの一般的な集中化に適合する。しかし、これらのレイヤー間の豊かな相互作用は、レイヤー間の頻繁な入れ替えを必要とする。同じチームに気軽に協力できるスペシャリストがいれば、これはそれほど難しいことではないが、チームの境界はかなりの摩擦を生むだけでなく、システムの重要なクロスレイヤー理解を深める個人のモチベーションを低下させる。さらに悪いことに、レイヤーをチームに分けることで、開発者とユーザーの間に距離ができてしまう。開発者がフルスタックである必要はないが(それは称賛に値するが)、チームはそうあるべきだ。