概要
- ソフトウェア開発は 科学と工学の境界 に位置する独特な分野であることを指摘。
- ビジョンとエンジニアリング の関係は一方向ではなく、相互に影響し合う関係であることを強調。
- 抽象化層の利用 が創造性と理解にどのような影響を与えるかを考察。
- 組織構造 における抽象化とサイロ化の弊害を論じる。
- 深い理解が 高品質な成果物 やイノベーションの鍵であると結論付ける。
ソフトウェア開発における科学と工学の境界
- ソフトウェア開発者は 自らを「ソフトウェアエンジニア」と呼ぶ が、大学の学位は多くが 「コンピュータサイエンス」 である状況を指摘。
- 科学(サイエンス) と 工学(エンジニアリング) は本来異なる分野であることを確認。
- ソフトウェアは 完全に理解された計算機という人工の宇宙 の中で行われるため、工学的側面が強いように見えることを説明。
- 物理学や生物学のような科学分野は 未知の理解を追求する のに対し、ソフトウェアは 既知の要素を組み合わせる工学的作業 であるという見解を紹介。
- しかし実際には、ソフトウェア開発もまた 発見の連続 であることを主張。
ビジョンとエンジニアリングの相互作用
- ソフトウェア開発においては ビジョンとエンジニアリングが双方向に影響し合う ことを強調。
- 例として、初期の コンピュータグラフィックス におけるカラーサイクリング技法を紹介。
- Indexed color system を本来の用途とは異なる形で活用し、 想定外のアニメーション効果 を生み出した事例を説明。
- 深い技術理解が 新たなビジョンや発見 をもたらすことを示唆。
- 理解と創造 が相互に作用することで、革新的な成果が生まれることを確認。
抽象化層と創造性の関係
- ソフトウェア開発では 抽象化層(abstraction layer) の利用が一般的であることを説明。
- 例: RDBMS、HTTPライブラリ、ゲームエンジン などの抽象化層を活用することによる効率化を確認。
- 抽象化層を 「理解の省略記号」 として使う場合と、 「ブラックボックス」 として使う場合の違いを指摘。
- ブラックボックス的利用は 創造性や品質の低下 を招くリスクがあることを強調。
- 抽象化層が増えることで 量産は進むが、質や独創性は必ずしも向上しない 現象を指摘。
- 例:ゲームエンジンの普及によりゲーム数は増加したが、 高評価作品の割合は増えていない ことを確認。
組織構造と抽象化の弊害
- エンジニア組織の拡大に伴い、 自律型チーム(autonomous teams) や 階層型組織(hierarchical organization) の議論があることを説明。
- どちらの組織論も ビジョンとエンジニアリングの一方向的関係 を前提としていることを指摘。
- チームのサイロ化や抽象化は、 組織内のブラックボックス化 を招き、 洞察やイノベーションの阻害要因 となることを強調。
- Skypeのモバイル対応 を例に、組織のサイロ化が 迅速な変革や創造的対応を困難にする ことを示唆。
深い理解と高品質な成果物
- ソフトウェア開発や組織運営において、 深い理解が創造性や高品質な成果物の源泉 であることを再確認。
- 抽象化やブラックボックス化に頼り過ぎることで、 本質的な理解や創造性が損なわれる危険性 を警告。
- 理解と創造性のバランスを意識的に保つこと の重要性を提案。