
ソフトウェアエンジニアリングでは、エンジニアは内部動作を理解した時のみフレームワークを使うべきだという考えが一般的です。これは誤解です。
なぜ内部動作を知らなければならないのでしょうか — 詳細はそんなに重要なのでしょうか?無知が幸せだと言う人もいるかもしれません。
車のエンジン
車のエンジンを見てみましょう:
エンジンがどのように動作するかを本当に知っている人はどれくらいいるでしょうか?
なぜ4ストロークエンジンと呼ばれるのか説明できますか?
各ストロークは何をするのでしょうか?
4ストロークエンジンと2ストロークエンジンの違いは何でしょうか?
誰か分かりますか?
それでも私たちは、車が目的地まで「どのように」運んでくれるかを考えることなく車を運転しています。
私たちはハンドル、ギアシフト、アクセルペダル、ブレーキを使って車とやり取りします。
目的地に着けさえすれば、どのように動作するかなど気にしません。車が故障したら専門家に持っていきます。
企業のコアコンピタンス
ビジネスにおいて、企業は競争力を持つための専門知識を持っています。これは企業のコアコンピタンスと呼ばれます。
コアコンピタンスはプロセスや製品である場合があります。
競争力を維持するために、企業はコアコンピタンスを絶え間なく改善しなければなりません。企業のコアコンピタンスをサポートする以外の活動にリソースを使うことは、企業の競争優位性を弱めます。これにより競合他社が企業の競争優位性を追い越す機会の窓が開かれます。
この考えは例で説明するのが最も良いでしょう。
Apple
Appleはシンプルさと美しい製品で知られています。これは簡単に複製できそうに思えますが、そうではありません。Samsung、HTC、Microsoftに聞いてみてください。
なぜこれらの企業は失敗したのでしょうか?シンプルは難しく、Appleはシンプルの専門家だからです。
個人のコアコンピタンス
コアコンピタンスは人にも適用できます。
あなたを他の人と区別するものは何でしょうか?
コアコンピタンスを開発するために、あなたは一つの分野に厳格に集中し、時には何年もかけて、他の人とあなたを区別する洞察と知識を得なければなりませんでした。
企業と同様に、競争優位性を維持するためには、コアコンピタンスを継続的に磨き続けなければなりません。
小さなピースを使う
ソフトウェアエンジニアは企業や他の専門家と何ら変わりません。コアコンピタンスと一致するように、何を学ぶかを選択しなければなりません。
使用するすべてのフレームワークの内部を理解することは現実的ではなく、時間がかかります。フレームワークの作者がフレームワークのドメインの専門家であることを期待しているので、その内部動作を知る必要はありません。
これがソフトウェアの要点ではないでしょうか — ブラックボックス化された機能のビットを使用して、より大きく複雑な作品を作り出すこと?私はそう信じています。
結局のところ、それは集中と時間の問題であり、どちらも限られています。
著者:Chuck Conwayはソフトウェアエンジニアリングと生成AIを専門としています。ソーシャルメディアで彼とつながりましょう:X (@chuckconway) または YouTube をご覧ください。