1. 程式人生 > >程式設計師到底要不要學習框架、庫和工具

程式設計師到底要不要學習框架、庫和工具

老孟導讀:昨天看了一篇文章,文章名稱叫做《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地址:https://github.com/781238222/flutter-do

170+元件詳細用法:http://laomengit.com

如果你對Flutter還有疑問或者技術方面的疑惑,歡迎加入Flutter交流群(微信:laomengit)。

同時也歡迎關注我的Flutter公眾號【老孟程式設計師】,公眾號首發Flutter的相關內容