我對技術潮流的一些看法


文章配圖

最近跟一位朋友交流關於技術的發展,他的觀點是未來還會出現全棧,甚至 javascript 全棧有可能會取代目前前后端協作的開發模式,當時對這個話題很感興趣,就探討起來,交流的過程中引發了我對技術未來潮流觀點的思考,所以就打算寫下這篇文章,記錄我當時的思考和觀點。以下只是我的個人觀點,有不同意見歡迎交流和探討。

未來不會出現全棧逆襲

經常會聽到 javascript 要統一前后端,全棧會再次出現,例如當時 NodeJS 的出現就是朝着這個方法發展的,但是結局大家也是有目共睹,NodeJS根本無法應用復雜業務和大型應用的后端能力,針對這個觀點我個人是持否定態度的,我的結論如下:

  • 全棧再次出現是不符合市場規律:正是因為社會的發展需求才會帶來精細化分工協作,分工的本質也是為了提高生產效率,關於這點在亞當斯密的《國富論》中第 1 篇反復提到過的理論,我就不重復了,不僅僅全棧不會逆襲,前端,后端還會衍生出更多的精細化分工崗位的出現,例如 算法崗,大數據,SRE,DevOps,DBA,App,小程序開發等等細節技術崗位
  • javascript 統一前后端的時代不會到來:每種語言都有它優缺點和適用場景,但想要用一種技術方案來解決所有問題,美名曰提高生產力,但本質上是想逃避和不敢面對前后端協同,還有 API 設計的問題

主流技術很少會變化

至於和朋友聊過未來的技術變化,我對技術和工具的看法是這樣的,不成熟的技術才經常變化,主流技術很少會變化

每年關注 TIOBE 的排行榜發現一個有趣的現象,頭部的幾個主流的技術棧基本是恆古不變的,是會有一些細微的競爭,但是不會有大的變化,例如:C/C++/Java,但是底部的其他語言變化是比較大的,經常有其他語言加入進來,也有其他語言排名下降出局。例如:C#/.Net/PHP/Groovy/Dart 等等…,其實技術的潮流,就非常類似我們看到的世界 500強的排名,頭部的公司永遠是那幾家,例如:微軟、蘋果、亞馬遜、谷歌,Facebook 等,反倒是排名越靠后的變化越大。其實編程語言也遵循經濟市場的運行規則,就是 馬太效應,強者恆強

為什么這么說 ?

因為越是流行的編程語言,會吸引開發者的使用,那么就有更多的開發者為他貢獻工具庫、文檔、插件、開發工具等,豐富它的生態,因為生態的豐富,帶來使用的方便,從而會吸引更多的新人,包括學校也會選擇它作為教學語言,為它源源不斷的貢獻開發者的,這就是為什么說技術潮流是馬太效應,強者恆強的本質。因為它的生態建立起來后是很難被替換的。

什么情況下會發生變化 ?


如果只是在同維度競爭,那么主流的技術不太會出現很大的變化,例如:現在出了一個新的后端編程語言,性能比 Java 快,你覺得大家會換技術嗎?很多人是不會換的,為什么 ?
因為僅僅是一些性能的優化,語法的優化,也很難讓大家放棄現有的生態環境,例如 Go 現在就面臨這種情況,性能很好,語法也很好,但是不可能替代 Java,因為它的生態是沒辦法超越 Java,他們只能在不同維度存在,避開競爭關系。

就是說如果你想要相同賽道去競爭超過巨頭,基本是不可能,就算你能做出更好的搜索引擎,你也不可能替代 Google,你能做出更好用的手機,你也不可能替代蘋果,類似案例,不勝枚舉。。除非新的競爭者是從其他維度過來,進行的降維打擊,例如特斯拉(新能源,航空領域),這就是為什么Go 為什么只能在 PaaS 層發揮自己的作用了。在相同賽道上應用層是很難和 Java 競爭的。想想當年的 Plan9 想要通過實現一個更好的操作系統來替換 UNIX 最終失敗就是一個很好的例子。

就是現在有一家公司推出一台新手機,價格更便宜,性能比 iPhone 更快,但是因為它是新的系統,沒有 App Store,所有軟件需要重寫和遷移,那么我相信只有小部分的人才敢於去使用,而且不會作為主力機(生產環境)來使用。但是你會說給他一些時間,他的生態會慢慢建立起來,例如 Go,但是不同的是,那些主流的技術他們不會等待,他們也在完善自己的生態,只有很低的概率會被超越。

技術迭代的三個必要條件


新的技術必須是要從三個維度全面的碾壓,才有可能替代現在的流行技術方案,如下:

  1. 近乎碾壓的性能和效率, 例如蘋果 M1 芯片的效率和功耗比,近乎碾壓英特爾的芯片
  2. 差不多的生態:光有性能,幾乎不可能讓大家去遷移,在新的技術上必須要有幾乎相同生態環境和工具使用,這也是為什么蘋果花那么大力氣開發 rosetta 2 的原因,就是為了把英特爾的生態遷移過來
  3. 大公司的長期的資金支持和信用背書,這個就不多說了。例如 Go 語言背靠 Google ,M1 背靠蘋果,Java 背靠 Oracle 等等,很多技術理念很先進,但是因為缺乏大公司的支持而失敗的不勝枚舉

最后總結


所以基於以上的結論,我認為起碼未來10年內不會出現全棧逆襲,主流技術也不會發生大的變化。人們總是說技術是多變的,但是變化的都是那些不成熟的技術,主流成熟的技術是很少變化的,例如:C/C++/Java/Javascript,從目前的行業趨勢來看(TY,Java,Go,Rust),我願意相信未來會是強類型,靜態編譯型的天下,性能什么的還好,代碼的可讀性對於團隊協作真的太重要了。所以我的結論是,盡量選擇主流的技術棧和遵循行業的選擇,這樣風險更小,而且在生態的加持在也會讓你的應用更加的健壯。隨意不要盲目去追尋新潮和炫酷的新技術,用好成熟和主流的技術棧才是一個工程師對產品和系統質量負責的態度。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM