「上流工程・低レイヤー」=「物事の初期段階・根幹」です。
根幹だから変えにくいよね、というエピソード3つです。
事例1 インフラ業界
「インフラ」=「通信の低レイヤー」です。
あくまで未経験者のイメージですが、IT業界では珍しく「資格が重視される」業界のイメージがあります(LPIC / Linuc / クラウド関連など)。
これはなぜか、ということを考えると
「根幹技術を変更すると、その上に成り立っているすべてのものを作り直さなければいけない」
→「技術が変更できないし、されない」
→「『新しい技術のキャッチアップ』より『既存技術の習熟』に比重が置かれる」
→「資格が重視される」
ということですね。
「枯れた技術」とも言われるようです。
枯れた技術(かれたぎじゅつ)は、広く使われることで信頼性が高くなった技術のこと。多くのケースや実用でテストされているため、安心して使用することができる。
事例2 JavaScript
var(非推奨)
eval()(非推奨)
Date.getYear()(非推奨。getFullYear()が推奨。)
strictモード(コードの厳密性を増すための特別なモード→標準仕様にしてほしい)
JavaScriptには「無くてもいいだろう」とか「標準を統一しようよ」と感じる仕様が多いです。
これはなぜなのか・・・は、やはりインフラに似たものがあるでしょう。
Webの作成・表示に多く使われてきており、今更変更できない。変更すると閲覧できないページが出てきてしまう・・・こんなところでしょうか。
※インフラ以上に個人的な感想です。
事例3 ブラウザレンダリング
最後の事例は、ブラウザレンダリングです。
非常にわかりやすいブラウザレンダリングの解説です。
Parse(パース) > Style(スタイル) > Layout(レイアウト) > Paint(ペイント) > Composite(コンポジット)
これはブラウザレンダリングの処理の順番です。
この時、Layoutを変更する display.none や left / right を使用すると「Layout→Paint→Composite」の3段階の処理がやり直しになってしまいます。
一方、Compositeを変更する opacity(透明度)や transform(変形・移動)を使用すると、「Composite」の1段階のみの処理で済むようです。
ユーザーからすると同様の処理ですが、内部的な負荷は軽くできる。
特にブラウザレンダリングでは、一定の処理量を超えるとカクついて見えてしまうため、何気に重要な工夫です。
おわりに
以上、「上流工程・低レイヤーはイジらない」ことを意識すると見えてくる話があるなあ、という話でした。
IT以外だと、理科の授業で聞いた「電流と電子の流れる向きが逆」や「電子殻がAからではなくKから始まる」などがありますね(広く使われており今さら変更できない)。