主流技術很少會變化
我對技術和工具的看法是這樣的,主流技術很少會變化,每年關注 TIOBE 的排行榜發現一個有趣的現象,頭部的幾個主流的技術棧基本是恆古不變的,並且會有一些細微的競爭,但是底部的其他語言變化是比較大的,經常有其他語言加入進來,也有其他語言排名下降出局。
這就非常類似我們看到的世界 500強的排名,
頭部的公司永遠是那幾家,例如:微軟、蘋果、亞馬遜、谷歌,Facebook 等
其他程式語言也遵循經濟市場的執行規則,就是 馬太效應,強者恆強。
越是流行的程式語言,會吸引開發者的使用,那麼就有更多的開發者為他貢獻工具庫、文件、外掛、開發工具等,豐富它的生態,因為生態的豐富,帶來使用的方便,從而會吸引更多的新人,包括學校也會選擇它作為教學語言,為它源源不斷的貢獻開發者的,這就是為什麼說技術潮流是馬太效應,強者恆強的本質。因為它的生態建立起來後是很難被替換的。
什麼情況下會發生變化 ?
如果只是在同緯度競爭,那麼主流的技術不太會出現很大的變化,例如:現在出了一個新的後端程式語言,效能比 Java 快,你覺得大家會換技術嗎?很多人是不會換的,為什麼 ?
因為僅僅是一些效能的優化,語法的優化,也很難讓大家放棄現有的生態環境,例如 Go 現在就面臨這種情況,效能很好,語法也很好,但是不可能替代 Java,因為它的生態是沒辦法超越 Java,他們只能在不同維度存在,避開競爭關係。
就是說如果你想要相同賽道去競爭超過巨頭,基本是不可能,就算你能做出更好的搜尋引擎,你也不可能替代 Google,你能做出更好用的手機,你也不可能替代蘋果,類似案例,不勝列舉。。除非新的競爭者是從其他維度過來,進行的降維打擊,例如特斯拉(新能源,航空領域),這就是為什麼Go 為什麼只能在 PaaS 層發揮自己的作用了。在相同賽道上應用層是很難和 Java 競爭的。想想當年的 Plan9 想要通過實現一個更好的作業系統來替換 UNIX 最終失敗就是一個很好的例子。
就是現在有一家公司推出一臺新手機,價格更便宜,效能比 iPhone 更快,但是因為它是新的系統,沒有 App Store,所有軟體需要重寫和遷移,那麼我相信只有小部分的人才敢於去使用,而且不會作為主力機(生產環境)來使用。但是你會說給他一些時間,他的生態會慢慢建立起來,例如 Go,但是不同的是,那些主流的技術他們不會等待,他們也在完善自己的生態,只有很低的概率會被超越。
技術迭代的三個必要條件
新的技術必須是要從三個維度全面的碾壓,才有可能替代現在的流行技術方案:
- 近乎碾壓的效能和效率, 例如蘋果 M1 晶片的效率和功耗比,近乎碾壓英特爾的晶片
- 差不多的生態:光有效能,幾乎不可能讓大家去遷移,在新的技術上必須要有幾乎相同生態環境和工具使用,這也是為什麼蘋果花那麼大力氣開發 rosetta 2 的原因,就是為了把英特爾的生態遷移過來
- 大公司的長期支援和背書,這個就不多說了。例如 Go 語言背靠 Google ,M1 背靠蘋果,Java 背靠 Oracle 等等
總結
所以基於以上的結論,我認為起碼未來10年內不會出現全棧逆襲,主流技術也不會發生大的變化。人們總是說技術是多變的,但是變化的都是那些不成熟的技術,主流成熟的技術是很少變化的,例如:C/C++/Java/Javascript,從目前的行業趨勢來看(TY,Java,Go,Rust),我願意相信未來會是強型別,靜態編譯型的天下,效能什麼的還好,程式碼的可讀性對於團隊協作真的太重要了。所以我的結論是,儘量選擇主流的技術棧和遵循行業的選擇,這樣風險更小,而且在生態的加持在也會讓你的應用更加的健壯。