寫給技術(shù)人員:停止學(xué)習(xí)框架,要專注基礎(chǔ)知識(shí)
作為一名開發(fā)人員,需要不停地學(xué)習(xí)新技術(shù)。那么,我們應(yīng)該學(xué)習(xí)什么樣的技術(shù)?關(guān)于這個(gè)話題,有著 15 年工作經(jīng)驗(yàn)的軟件工程師 Eduards Sizovs 寫了一篇文章,讓我們來(lái)看看他是怎么說(shuō)的吧~
我們是開發(fā)者,我們需要掌握***的技術(shù)。我們每天學(xué)習(xí)編程語(yǔ)言、框架和庫(kù)。我們知道的工具越新越好。
但這一切都是在浪費(fèi)時(shí)間!
時(shí)間是我們擁有的最寶貴的資源。時(shí)間是有限的,不可更新的,并且是你不能買到的。
科技就像時(shí)尚一樣,它也在以光速變化。為了趕上時(shí)間的變化,我們需要跑得很快。這場(chǎng)比賽沒有贏家,因?yàn)樗鼪]有終點(diǎn)。
有一次,我的導(dǎo)師給我上了一堂課。
導(dǎo)師:「Ed,你在做什么?」
我(驕傲地說(shuō)):「我在閱讀一本關(guān)于如何用 GWT 構(gòu)建現(xiàn)代 Java 應(yīng)用程序的書?!?/p>
導(dǎo)師:「為什么?」
我:「作為一名 Java 開發(fā)人員,我需要緊跟時(shí)代趨勢(shì)。GWT 是我必須跟進(jìn)的技術(shù)?!?/p>
導(dǎo)師:「在學(xué)習(xí) GWT 之前,你讀了什么技術(shù)書籍?」
我:「一本 500 頁(yè)的關(guān)于 Apache Tapestry 的書,Apache Tapestry 也是需要學(xué)習(xí)的知識(shí)?!?/p>
導(dǎo)師:「那現(xiàn)在你還學(xué)習(xí) Apache Tapestry 嗎?」
我:「不了,現(xiàn)在我學(xué)習(xí) GWT?!?/p>
導(dǎo)師:「那你能用 Apache Tapestry 相關(guān)的技術(shù),解決現(xiàn)在遇到的問題嗎?」
我:「不能,它已經(jīng)不會(huì)被用到了?!?/p>
導(dǎo)師:「Apache Tapestry 技術(shù)能幫助你更好地理解 GWT 嗎?」
我:「不,并沒有,但我看到了一些重復(fù)的模式?!?/p>
導(dǎo)師:「這就是設(shè)計(jì)模式。它能幫助你解決目前的問題嗎?」
我:「是的,很多都能?!?/p>
導(dǎo)師:「技術(shù)變了又變,但它們都有共通性。正確地設(shè)置優(yōu)先級(jí):你需要把 80% 的時(shí)間花在基礎(chǔ)學(xué)習(xí)上,然后剩下 20% 的時(shí)間留給框架,庫(kù)和工具的學(xué)習(xí)。」
我:「只有 20% 的時(shí)間留給框架、庫(kù)和工具?」
導(dǎo)師:「是的,在以后解決工作相關(guān)問題的過程中,你隨時(shí)都會(huì)學(xué)習(xí)到這些?!?/p>
我:「謝謝?!?/p>
導(dǎo)師:「你以后會(huì)更加感謝我?!?/p>
這一建議改變了我的人生。我把書架上所有和框架相關(guān)的書都移走了:從 50 本變?yōu)?0 本。多么大的改變!
我買了一套基礎(chǔ)書籍。這些書占據(jù)了我 80% 的學(xué)習(xí)時(shí)間:
-
The Pragmatic Programmer
-
Clean Code
-
The Clean Coder
-
Domain-Driven Design
-
Growing Object-Oriented Software, Guided by Tests
-
Continuous Delivery
我還買了一本關(guān)于當(dāng)前技術(shù)的書,學(xué)習(xí) Spring 框架是一項(xiàng)良好的投資:
技術(shù)的未來(lái)預(yù)期壽命與其當(dāng)前存在時(shí)間成正比,每一段額外的生存期意味著更長(zhǎng)的剩余預(yù)期壽命。
技術(shù)存在的時(shí)間越長(zhǎng),學(xué)習(xí)它就越安全。
不要急于學(xué)習(xí)新技術(shù)——它有很高的消亡概率。
時(shí)間是***的導(dǎo)師,它會(huì)證明哪些技術(shù)值得學(xué)習(xí),所以請(qǐng)學(xué)會(huì)等待。
十年過去了,我經(jīng)歷了 50 個(gè)不同的軟件項(xiàng)目。感謝這些建議,我學(xué)到的所有東西都可以跨公司、團(tuán)隊(duì)、跨領(lǐng)域使用。今天,我所學(xué)的知識(shí)仍然有用。我沒有浪費(fèi)時(shí)間。
只有深入研究項(xiàng)目的本質(zhì),你才會(huì)發(fā)現(xiàn)它們都是相似的:
-
編程語(yǔ)言是不同的,但設(shè)計(jì)是相似的。
-
框架是不同的,但設(shè)計(jì)模式是可以通用的。
-
開發(fā)者是不同的,但與人打交道的規(guī)則是統(tǒng)一的。
記住——框架、庫(kù)和工具是會(huì)變化的。時(shí)間是寶貴的。
請(qǐng)將寶貴的時(shí)間花在可移植的技能上:
-
微服務(wù)框架進(jìn)化體系結(jié)構(gòu)
-
新的編程語(yǔ)言,干凈的代碼,設(shè)計(jì)模式,DDD
-
量少安全精簡(jiǎn)編碼原則
-
高端、容錯(cuò)的模式
-
容器持續(xù)交付
-
Angular 網(wǎng)頁(yè)、HTTP 和 REST