Web開發學習之路是否有盡頭

ganiks.me發表於2016-01-21

  在Web開發的道路上,每當心力交瘁深感學海無涯時,我就會安慰自己:堅持,總有一天我會打通任督二脈(前端+後端)

事實上,這不是一篇我的心得,而僅僅是把我自己的這個問題擺出來,希望通過文字幫助梳理下。
寫和想有很大的不同,寫出來後自己先讀一遍,就好像新的想法跟自己對話,想法碰撞出新的思路,修改重新寫,確實是一個幫助”深層次“思考、思考到底的好方法。
下面的文字都是刪改N次後留下的最終的想法,相信後期回頭來看時還會有不同的見解。

  自從踏入網際網路開發的道路(since 2013.3), 浩瀚,日新月異的開源技術讓我這個有著學習計劃強迫症的小白經常陷入這樣的夢靨:計劃多,實施少,學不完..

  看了一篇博文你是否應該成為一名全棧工程師?

  其中作者給了這樣的建議:

如果想要向著全棧工程師的方向邁進,你應該掌握很多知識與技能,並且熟悉上面提到的各種元件。
此外,還要提升自己的個人溝通技能,這樣才能管理並與 前端與後端開發者實現較好的協作。
好訊息是未來對於每一類Web開發者來說都是光明的,無論是前端、後端,還是全棧。
要堅持學習一切有價值的東西;掌握新的框架、語言與平臺;並且與開發者同事及終端使用者保持高效的溝通。
在這種情況下,無論世界發生什麼變化,你都會始終立於不敗之地。

  OK, 學不完的網際網路技術是毋庸置疑的了,那我應該怎麼做?

 個人專案/團隊專案 - 專案定位

  程式設計師圈裡經常討論的”全棧工程師“,在我看來,首先要有個前提條件,”為什麼“要做全棧?

  • (個人)純粹為了學習實踐網際網路[最流行的新技術],那這個”全棧工程師“真的很難,要付出很大的時間和精力才跟得上這”潮流“, 基礎技能List:

    • Linux/Git/Pip/Npm/Composer…
    • Apache/Nginx
    • Mysql/MongoDb/Redis..
    • PHP/Python/NodeJS
    • Javascript/jQuery/ExpressJS/AngularJS/ReactJs…
    • HTML/HTML5
    • CSS/CSS3/SAAS
    • 瀏覽器開發工具與偵錯程式
  • (個人)為了實現某個專案(假設只是個網站),那很容易,根據專案型別和你自己的技能情況確定架構,定”一個棧“即可

    • LAMP+Bootstrap 重後端輕前端
      • Linux/Git/Pip/Composer…
      • Apache/Nginx
      • Mysql
      • PHP/Python
      • 一天入門Bootstrap庫
    • MEAN+ThinkPHP 重前端輕後端
      • Linux/Git/Pip/Npm…
      • MongoDb/Redis..
      • NodeJS/PHP
      • Javascript/jQuery/ExpressJS/AngularJS/ReactJs…
      • HTML/HTML5
      • CSS/CSS3/SAAS
      • 瀏覽器開發工具與偵錯程式
      • 一天入門ThinkPHP框架
  • (團隊)就是一個商業化的成熟專案,前後端都很重
    • 前端工程師[深入]挖掘最潮流的前端工具和庫,對前端高效能負責;根據自身專案業務搭建自己的前端框架
      • 筆者能力有限,就不列清單了
    • 後端工程師[深入]研究高併發大流量以及資料效能,對後端高效能負責;根據自身專案業務搭建自己的後端框架
      • 筆者能力有限,就不列清單了

  注意,上面列出的都是”基礎技能“List,要是商業化的大型專案,清單長度和技能深度都要翻個番;

  當然,大型專案中,每個工程師每天做的工作其實都只是專案中的一塊業務,比如支付,那他還要去研究各個支付渠道的api

  因此,要搞清楚自己目前的工作狀況、專案狀況、業務狀況,給自己在團隊/專案中定好位。

  OK,我目前的定位是…

如果定不出來,每天的學習列表都完不成,那就理所當然了
因為你的目標是凌亂的,一會想實現自己的某個想法,一會想著公司的某塊業務,一會想著朋友讓幫忙做的網站..

 前端?後端?全棧? – 技能定位

  技能定位,能在很大程度上砍掉學習清單上的一部分(我認為是小於50%的)

  比如定位了前端,就不要去過多深究Nginx,PHP..

  反之定位了後端,就不要去深究AngulaJS,Backbone..

  定位全棧…

 我也說說全棧工程師

  全棧工程師的流行,在我的認知裡,主要有以下幾方面促進因素:

  • NodeJS生態的流行讓一部分前端工程師(尤其是後端通過掌握了Node轉前端)自然定位自己為全棧
  • Bootstrap等非常強大的前端UI庫讓後端工程師很容易搭建起一個Web系統
  • 目前網際網路創業風行,大多數創業公司在初期專案開發階段,都會希望有一個全棧開發工程師坐鎮以節約人力成本

  前後端的分家,很大程度上我認為是因為“前端”分了出去,並在當今使用者體驗至上的環境中佔著跟”後端”同等重要的地位。但另一方面,隨著日新月異的技術發展,隨著運維複雜度的提升,服務與框架都擁有自身的特性, 一個人很難掌握所有的技能。
有幾年經驗的前端,或者後端,從某一方面講,都可以自稱“全棧”,但從更嚴格的方面,很少有人能真正做到”與時俱進“的”全棧“

  還記得最開始帶我入門的一個後端開發跟我說過:樣式/特效都沒必要研究,別人一個wget就都拿到了,專心搞後端吧。

  那是13年初,前端應該還沒有特別火,不像現在各種招聘H5,H5,H5…所以,可以理解,當時後端會鄙視前端。但是現在,你還敢嗎?

  前端工程師無論在就業難度還是薪資方面,都壓了後端一點點。。

  說道鄙視“前端”,還有一種“偽前端“現象:在前端工程師人才缺口大的情況下,許多美工UI/剛畢業參加了培訓班的,直接應聘做了”前端“; 不懂linux,不懂node,不懂sass的前端,說實話在二線城市如武漢,真的一抓一大把。

  扯了這麼多,如果還是要定位”全棧“(專指下面這一種),那就要做好每天增加3個小時學習時間的準備吧。。。

  • (個人)純粹為了學習實踐網際網路[最流行的新技術],那這個”全棧工程師“真的很難,要付出很大的時間和精力才跟得上這”潮流“, 基礎技能List:

  OK,我目前的定位是:別折騰,做一個安安靜靜的美后端吧..

 堅定不移的幾個原則

  這幾年的教訓,我想也是寶貴的,在今後更是要堅定不移的遵循:

  • think your own way, 程式設計師還是要有自己的程式設計思想
  • write more, 好的作家都不會惜字如金吧
  • run code up, 而不僅僅是敲出來
  • show me your project, 實踐實踐再實踐,沒有什麼方式比參與一個具體的專案更能檢驗學習的有效性
  • resolve it now, 遇到問題現在就解決!不能拖!不能拖!不能拖!

  學習的任何語言/框架/庫,都要有一個”project”為載體;

  無論是因為想要GET這個技能而想出的一個Project,還是因為有一個IDEA而去學習支撐Project的各種技能,都是OK的。

相關文章