「ソフトウェア開発は、チームスポーツのようなものである」とは、昔からよく言われています。所以は、複数のプレーヤーがいること、役割と責務があること、規律があること、共通のゴールに向かってまい進していること、・・・など共通しているところが多いからでしょう。

たとえば、サッカーを例にしましょう。サッカーは、ご存知のとおり 11 名のプレーヤーがフィールドで競技するわけです。個々のプレーヤーは、それぞれがミッションを持っています。そして得意なプレーがあります。
具体的には、役割 (ポジション) として FW、MF、DF、GK などがあります。FW ならば、ゴールを揺らすという決定的な仕事をすることが求められたり、多くのチャンスを生むためのポストプレーが求められたりします。GK ならば、敵からのゴールを死守するだけではなく、後方からの指示出しなども求められます。
このように、11 名のプレーヤーが別個に全員ゴール (シュート) を狙うというのではなく、攻撃、守備の個々の責務を全うし、チーム一丸となってゴールを狙い、勝利を狙っているわけです。
また、ただ黙々と自分の責務を全うしていればよいわけではなく、たとえば、攻めているときは、ディフェンスラインを上げてカウンター攻撃に備えたり、攻撃に厚みを持たせたり、そして機を見てオーバーラップして攻撃参加する、その際には、MF が位置を下げてカウンター攻撃に備える・・・など、ゲームの中でその状況に応じて、責務をこなしつつ、他の役割とコラボレーションしています。
また、11 名だけでプレーしているわけではなく、サブのメンバー、監督やコーチ、スタッフ、サポーターと多くのステークホルダーが存在しチームを支えています。クラブハウスなどの支援するための施設、環境も重要です。
これらを成し遂げ、ゲームで勝利を収めるためには、個々の役割が責務を全うする、個々のプレーヤーの能力を活かす、向上させる、状況に応じた戦術を理解し、遂行するといったことが求められ、そこには相互の理解、取り決めへの理解と徹底、高度で厳しい練習が伴っているはずですね。もちろん、個々人の技術力がベースなっています。