程序人生丨程序員積累的編程知識,十年后還有多少有用?
作為一個大齡后端開發(fā),看到這個問題,真是挺感慨的。
在不少人的眼中,可能十年,甚至五年以后,自己的辛苦積累的編程知識就沒用了。
其實并不是這樣,我們要把后端的需要掌握的技術(shù)分為三個層次來看。

計算機基礎(chǔ)
主要是操作系統(tǒng)、數(shù)據(jù)庫、數(shù)據(jù)結(jié)構(gòu)和算法、計算機組成原理、計算機網(wǎng)絡 、編譯原理,這些知識幾十年都沒有變化,再過十年也不會變。
基礎(chǔ)穩(wěn)如泰山,對它們進行投資永不虧本。

中間層和應用層
這兩層隨著時代的變遷在劇烈地重構(gòu)。
但是一個人積累的知識10年后還剩下多少, 要看一個人入行的時間處于技術(shù)發(fā)展的哪個階段。
技術(shù)的發(fā)展也不是顛覆性的,而是漸進性的,它不會一下子消失,只會邊緣化。
小李在90年代中后期入行,他之前花大精力學習了VB、PB、Delphi這些開發(fā)C/S應用的軟件,準備大顯身手,可是那個時候正是桌面時代向互聯(lián)網(wǎng)遷移的關(guān)鍵點,十年之后他就會發(fā)現(xiàn)桌面C/S應用被邊緣化了。
小張在互聯(lián)網(wǎng)早期的時候入行,他陸陸續(xù)續(xù)接觸到了ASP,JSP,EJB,Websphere, Weblogic,Struts、jQuery、SOA、Ruby on Rails,這些技術(shù)十年,甚至二十年之后還在用,只不過只能在遺留系統(tǒng)來維護了。
小劉在移動互聯(lián)網(wǎng)火爆的時候入行,他一上來接觸的可能就是nginx、 Redis、ElasticSearch 、Kafka、Docker、k8s之類的技術(shù),十年之后,只要沒有大到足以干掉移動互聯(lián)網(wǎng)的技術(shù)變革,這些技術(shù)應該還會在。

技術(shù)消失的原因
技術(shù)的消失和邊緣化主要有兩個原因:
1.不好用
EJB笨重繁瑣,被輕量級的Spring替代。
ASP,JSP寫網(wǎng)頁,很容易把邏輯和顯示混到一起,把代碼搞得一團糟,最后被前后端分離的技術(shù)替代。
Struts配置繁瑣,被SpringMVC,SpringBoot徹底淘汰
2. 不夠用
互聯(lián)網(wǎng)和移動互聯(lián)網(wǎng)的爆發(fā)式發(fā)展,對于高并發(fā),大流量,大數(shù)據(jù)產(chǎn)生了強烈的需求:
例如為了解決C10k,C100k問題,出現(xiàn)了epoll(2002)和nginx(2004)這樣的大殺器。
為了解決數(shù)據(jù)庫讀寫緩慢,出現(xiàn)了Redis(2009)、ElasticSearch(2010)。
為了解決數(shù)據(jù)庫單機性能不足的問題,出現(xiàn)了主從分離,數(shù)據(jù)復制......
為了單體應用維護成本高、無法靈活擴展,部署周期長的問題,出現(xiàn)了微服務(2012),服務發(fā)現(xiàn),熔斷,負載均衡,注冊中心等相關(guān)技術(shù)。
為了解決分布式環(huán)境下高吞吐的消息訂閱,出現(xiàn)了Kafka(2011)。
為了解決環(huán)境不一致,應用部署的問題,出現(xiàn)了docker(2013), k8s(2014)。
......

程序員所在的殘酷環(huán)境
理論上來說,很多技術(shù)的本質(zhì)并沒有變化,變化的只是形式。
無論是ASP、JSP、Struts、EAD4J、SpringMVC,RoR......都是Web編程,要解決的本質(zhì)問題都是URL和代碼的映射,數(shù)據(jù)的驗證、轉(zhuǎn)換和綁定,Web安全....
無論是Hibernate、MyBatis、ActiveRecord,都屬于ORM的范疇。
Spring Cloud那些服務注冊和發(fā)現(xiàn),很明顯有著SOA時代的痕跡。
只要把原理搞定了,就像黑客帝國中的Neo看透Matrix一樣,可以在技術(shù)領(lǐng)域任意馳騁。
現(xiàn)在最大問題在于,互聯(lián)網(wǎng)發(fā)展太快,編程技術(shù)層出不窮,學不過來。
由于技術(shù)太多,每一項技術(shù)都需要花費大量的精力去學習,想要精通所有知識幾乎不可能。

有基礎(chǔ)的老程序員會學得更快,他們能迅速掌握、理解其中的技術(shù)原理,但是在技術(shù)的細節(jié),最佳實踐層面,老程序員和新程序員不容易拉開差距。
對于兼顧管理的技術(shù)人來說,更不可能深入這些技術(shù)的細枝末節(jié),能在理解原理后在關(guān)鍵點上和團隊成員進行討論就不錯了。
如果公司主要浮在應用層搞業(yè)務的定制開發(fā),就不需要去研究底層的操作系統(tǒng)、數(shù)據(jù)庫、編譯、計算機網(wǎng)絡、分布式系統(tǒng),也就不需要深厚的技術(shù)沉淀,?大家都是CRUD Boy,調(diào)包俠,面向Google/Stackoverlfow/百度編程......
那老程序員積累下來的經(jīng)驗就沒什么用,相對新程序員的性價比就不高。
可惜,這樣的公司在國內(nèi)是大多數(shù),互聯(lián)網(wǎng)行業(yè)烈火烹油之時大家都好,一旦形勢變化,裁員就會落到薪水更高的老程序員身上。
在中國軟件業(yè),不是技術(shù)在淘汰人,是人在淘汰人。
所以,卷確實是目前不可避免的趨勢!
-----------------------------------
為了幫助大家,輕松,高效學習C語言/C++,給大家分享我收集的資源,從最零基礎(chǔ)開始的,幫助大家在學習C語言的道路上披荊斬棘!
微信公眾號:C語言編程學習基地
整理分享(多年學習的源碼、項目實戰(zhàn)視頻、項目筆記,基礎(chǔ)入門教程)
歡迎轉(zhuǎn)行和學習編程的伙伴,利用更多的資料學習成長比自己琢磨更快哦!大家也要把握住有限的時光,抓住成長的每一次機會哦~
編程學習書籍分享:

編程粉絲交流:
