製品を完成させるために必要なもの製品、いわゆるプロダクトやサービスを完成させるには、知識だけでは足りないのです。いろんな知識を掛け算した「技術」が必要なのです。「知識がある」ですね。アルゴリズムに詳しい言語仕様をちゃんと知っているLinuxのコマンドをいっぱい知っているプロトコルを理解している暗号化理論について語れるデザインパターン賢者などなど。これらはすべて「知識」です。「どの知識」を採用して「どう組み合わせるか」を「最適化」したものを「アウトプット」するスキルだと思っています。ここで「最適化」という言葉をあえて使っているのは理由があって、サラリーマンエンジニアなら、開発対象には必ずプロダクトコンセプトや、納期、生存期間があります。重要な部分は緻密に設計し、納期にミートする内容で設計し、生存期間の長いソフトウェア(またはその一部)の場合はメンテしやすい工夫をする。重要じゃない部分は工数最低限になるように設計する。