程式設計師到底要不要學習框架、庫和工具
老孟導讀:昨天看了一篇文章,文章名稱叫做《STOP LEARNING FRAMEWORKS》(停止學習框架),文章發布時間時間是2018年,感嘆為什麼沒有早一點看到這一篇文章,看過我《對Flutter初學者的一些建議》這篇文章的都知道,裡面建議少使用第三方庫,但僅僅是從生態發展的角度考慮的,這篇文章或者可以給你一些不一樣的啟發。
以下為譯文:
作為開發人員,我們需要與時俱進,跟上技術的步伐,我們每天都在學習程式語言、框架和庫,因為我們知道越現代的工具越好。
跟隨Angular, React, Vue, Riot, Ember, Knockout 的腳步是一件多麼有趣的事啊。(這應該是一句反話)
但這是在浪費時間
時間是我們擁有的最寶貴的資源。 它是有限的,不可再生的,用錢也買不到它。
技術就像時尚一樣,以光速變化。 為了趕上它,我們需要跑的非常快。但 這場比賽沒有贏家,因為它沒有終點。
我的導師曾經這樣教我:
導師:Ed(作者,下同),你在做什麼?
我(驕傲地說):我正在讀一本關於如何用 GWT 構建現代 Java 應用的書。
導師:讀它做什麼?
我:作為一個開發者,我應該緊跟潮流,GWT現在非常流行。
導師:在讀GWT之前,你讀過其他技術書籍嗎?
我:我讀了一本關於Apache Tapestry的書籍,這本書有500頁,那時這本書也非常流行。
導師:那現在這本書還流行嗎?
我:不,現在流行的是GWT 。
導師:你可以重用Tapestry技能來解決當前的問題嗎?
我:不,現在沒有人在使用它。
導師:Apache Tapestry能夠更好的幫助你學習GWT嗎?
我:不能,不過兩者都用到了一些共同的設計模式。
導師:設計模式可以幫助你解決當前遇到的問題嗎?
我:是的,幫助了我很多。
導師:技術來了又去,但它有很多共同點。 設置正確優先順序。 將您80%的學習時間用於基礎知識。 剩下20%用於框架、庫和工具。
我:僅僅20%時間學習框架,庫和工具?
導師:是的,在工作中解決問題的同時,你自然會學習框架、庫和工具。
我:非常感謝。
導師:你以後還會感謝我的。
這次建議改變了我的一生,我從書架上拿走了所有關於框架,庫和工具的書籍,書架上從50本書變成0本,我終於解脫了。
我買了一些經典(永遠不會過時)的書, 這些書佔用了我80%的學習時間:
- The Pragmatic Programmer 程式設計師修鍊之道
- Clean Code 程式碼整潔之道
- The Clean Coder 程式設計師的職業素養
- Domain-Driven Design 領域驅動設計和實踐
- Growing Object-Oriented Software, Guided by Tests 測試驅動的面向對象軟體開發
- Continuous Delivery 持續交付
我還買了一本有關當前技術的書。根據 The Lindy effect(林迪效應)表明,Spring Framework必須是一個不錯的投資。
林迪效應認為:技術的未來預期壽命與其當前年齡成正比。 每多存在一天,意味著的預期生命會更長。
市場上的技術越久,投資就越安全。
不要急於學習新技術-它很有可能死掉。
時間告訴你哪些技術值得投資。時間是您最好的顧問。 學會等待。
十年過去了。 我幫助了50個不同的軟體項目。 聽了這些建議,我學到的所有東西都可以在公司,團隊,領域之間移植。 我的知識今天仍然有意義。 我沒有浪費我的時間。
如果您深入研究所有項目,似乎所有項目都大同小異:
- 程式語言雖然不一樣,但是設計方法是類似的。
- 框架雖然不一樣,但是設計模式是類似的。
- 開發人員不一樣,但是與人打交道的規則是統一的。
記住,框架、庫和工具來了又走,時間是寶貴的。
將您的黃金時間投入通用的技能中,這些技能永遠不會過時:
- 不要學習微服務框架(Microservices frameworks),學習演進式架構(Evolutionary Architecture)
- 不要學習新的程式語言,學習程式碼整潔之道、設計模式、領域驅動設計(DDD)
- 不要學習 LeSS 和規模化敏捷框架(SAFe),學習精益生產原則(Lean manufacturing principles)
- 不要學習 Hystrix,學習容錯模式(Fault Tolerance Patterns)
- 不要學習 Docker,學成持續交付(Continuous Delivery)
- 不要學習 Angular,學習 Web、HTTP 和 REST
譯文到這裡結束了。
感悟
文中有一段話說的特別好:
技術來了又去,但它有很多共同點。 設置正確優先順序。 將您80%的學習時間用於基礎知識。 剩下20%用於框架、庫和工具。
並沒有讓我們不要學習框架,但要分清主次,基礎知識的優先順序必然高於框架。
有一個特別現實的問題,如果有2個人,一個對框架應用特別熟悉,但對底層不了解,另一個正好相反,對底層原理非常了解,但不會使用應用框架,那麼這2個人哪一個更受公司的歡迎呢?
如果是小公司,急需人完成項目,那麼熟悉框架應用的更適合它。
如果是大公司,第二種應該更適合它,現在的大公司面試必問某一個開源庫的底層原理,僅僅會使用,是過不關的。
交流
Github地址://github.com/781238222/flutter-do
170+組件詳細用法://laomengit.com
如果你對Flutter還有疑問或者技術方面的疑惑,歡迎加入Flutter交流群(微信:laomengit)。
同時也歡迎關注我的Flutter公眾號【老孟程式設計師】,公眾號首發Flutter的相關內容。