エンジニア思考の3つの特徴
①見えない「構造」を見る有能なエンジニアは規則やモデル、直感を組み合わせて構造をデザインし、それを形にすることができる。エンジニアの意識は、氷山の水面に浮かんだ部分よりもその下の塊に向けられる。
②制約のもとで物事をデザインする
優秀なエンジニアは制約を見出して目標達成の力に変える。制約には、予算上の制約、自然法則による抵抗できない物理的制約、人間の行動のように予測の難しい制約など様々ある。
③トレードオフを見極めて最適解を出す
あらゆる解決手段の利点と欠点を考慮して最適解を選択する。エンジニアはより重要な目的とそうでないものを取捨選択して優先順位を決め、経営資源を配分する。
「モジュラーシステム思考」で分解して考える
優れたエンジニアの思考プロセスを貫く概念は「モジュラーシステム思考」と表現することができる。システム的に考えるには、純粋にシステマティックであればいい訳ではない。むしろ、変化の絶えないこの世界では全てが移ろい、全てが連動しているのだと理解することが重要だ。システムのモジュール同士の関係が全体を形作っているのであって、構成要素だけを分析しても総合的な理解は深まらない。
モジュラーシステム思考に特有のテクニックは「脱構造主義」(大きなシステムをモジュールに分解する)と「最構築主義」(それらのモジュールを再び統合する)を機能的に融合させることが挙げられる。強い結びつきと弱い結びつきを見極め、その知識を効果的なデザインに結びつける。よく用いるのが「段階的詳細化」という設計思想だ。一連の開発作業を通して成果物やサービスについて理解が深まるにつれて、より明確で詳細な定義を行う。問題をサブタスクに小分けし、それぞれを攻略することで最終目標を達成しようとする。
モデル化で問題を「最適化」する
最適化を実現するには、シンプルな原理から、広範にわたる複雑な影響が生じる可能性について、深く理解することが必要である。最適化には「目的」と「制約」という重要な要素が2つある。
エンジニアはモデル化によって、必然的に曖昧さが含まれる現実について概観しようとする。モデル化の利点は「トレードオフを可視化し」「効率性に焦点を当て」「一見単純なことが複雑であり、複雑なことが単純である」と気づかせてくれることである。
「逆算思考」で信頼性と効率性を両立する
望ましい結果を思い描き、到達までの過程を逆向きにたどる。最終的な目標から逆算すると、具体的な機能が抽出される。そして、アイデアのマトリクスを縦横無尽に行き来して、幅広い分野からアイデアを拾っては培養し、組み合わせて現実的な解決策を導く。
効率性を高める秘訣は「なぜ?」という単純な問いを発することにある。プロセスに潜む根本的な原因をあぶり出すために、どうしてだろうと繰り返し問いかけてみるべきである。
先の読めないこの世界で信頼性を保証するのは簡単なことではない。エンジニアにできるのは、常に最新の教訓に注意を払いながら、不確実性のあらゆる根源について考察し、リスクを最小限に留める努力をすることだ。