在瞬息萬變的編程世界里,知識更迭速度之快令人咋舌,程序員所積累的編程知識在十年后將有多少變得沒用?
如何才能不被時代拋棄,是每個程序員都需要思考的問題。
我認(rèn)為,編程知識可以分為經(jīng)驗(yàn)型知識和原理型知識,而經(jīng)驗(yàn)型知識的貶值速度要快于原理型知識。
要驗(yàn)證這一觀點(diǎn),我們不必預(yù)測未來十年哪些知識將變得過時,而是可以回顧過去,觀察哪些知識已經(jīng)貶值或變得不那么重要。
以當(dāng)今熱門的Web前端工程師為例,我們可以清晰地看到兩種知識的區(qū)別。
經(jīng)驗(yàn)型知識
經(jīng)驗(yàn)型知識側(cè)重于具體的技術(shù)和操作,其價值會隨著技術(shù)迭代而衰減。
1.瀏覽器兼容性和系統(tǒng)兼容性知識
包括對IE5.x至IE7的兼容性技巧,特別是CSS hack,不同DOM級別的API兼容性,以及異步請求技術(shù)(如AJAX/CORS)的兼容性問題。還有iOS 5/6和Android 1.x至3.x瀏覽器中的各種兼容性問題,這些經(jīng)驗(yàn)可能隨著時間推移而變得不再重要。
2.技術(shù)演進(jìn)導(dǎo)致的淘汰方案
比如曾經(jīng)流行的table布局方式,HTTP 1.x協(xié)議,以及早期的緩存和離線應(yīng)用技術(shù)方案,都可能因?yàn)榧夹g(shù)進(jìn)步而被淘汰。
3.平臺綁定的開發(fā)經(jīng)驗(yàn)
比如針對特定平臺如Windows RT的前端開發(fā)解決方案,或者特定平臺擴(kuò)展的開發(fā),以及特定手機(jī)品牌瀏覽器的兼容性問題處理。
4.第三方庫/框架的使用
比如對ExtJS或AngularJS 1.x等框架的API使用經(jīng)驗(yàn),這些框架可能隨著新技術(shù)的出現(xiàn)而變得不那么流行。
原理型知識
側(cè)重于對技術(shù)本質(zhì)和原理的理解,其價值更加持久,能夠遷移到新的技術(shù)領(lǐng)域。
1.業(yè)務(wù)模式選擇
能夠根據(jù)不同的業(yè)務(wù)需求選擇合適的業(yè)務(wù)模式,是架構(gòu)設(shè)計的基礎(chǔ),不會隨著技術(shù)更迭而改變。
2.深入理解核心技術(shù)
比如在NodeJS等技術(shù)的研發(fā)過程中,對HTTP協(xié)議、Stream、系統(tǒng)調(diào)用、文件系統(tǒng)和進(jìn)程管理等有深刻理解。
3.編程語言理解
比如在研究ECMAScript及其衍生語言時,對語法、語義和編程方式有深入的理解。
4.框架設(shè)計與模式
了解框架設(shè)計原理,并在業(yè)務(wù)開發(fā)中掌握各種設(shè)計模式的工程意義。
5.工程化思維
比如在前端工程化過程中,培養(yǎng)工程化思維,理解構(gòu)建、持續(xù)集成和DevOps的真正意義。
6.軟件開發(fā)實(shí)踐
形成良好的軟件開發(fā)實(shí)踐習(xí)慣,如TDD(測試驅(qū)動開發(fā)),積累協(xié)同開發(fā)和開源代碼維護(hù)的經(jīng)驗(yàn)。
------
當(dāng)然,原理型知識也并非一勞永逸,它也可能會被顛覆性的技術(shù)革命所淘汰,就像圖靈機(jī)出現(xiàn)后,很多計算理論都需要重新構(gòu)建。
但相比于經(jīng)驗(yàn)型知識,原理型知識的保質(zhì)期無疑更長。
除了上述這些,算法/數(shù)學(xué)能力等硬知識的重要性更是不言而喻,它們是構(gòu)建強(qiáng)大編程能力的基石,也是最不可能過時的知識。