傷不起的全棧程式設計師

P_Chou發表於2014-05-23

  全棧程式設計師是一群特殊的程式設計師,他們從前到後,由內而外,幾乎無所不能。很多全棧程式設計師都認為創業是最好的體現能力和價值的地方

  前段時間聽說一個新名詞:"全棧程式設計師",google了一下,被引導到了知乎的一個討論上: http://www.zhihu.com/question/22420900 。樓主提出了一個問題:怎樣成為全棧程工程師,本人也在上面情不自禁地回覆了一下。回頭想來似乎還有話要說。由於這個話題很容易跑偏,本文只把範圍限定在全棧Web軟體工程師,簡稱FSD(Full Stack Developer)。

  把技術當成生活,自己逼自己的結果

  其實在任何公司工作,光憑工作的內容,很難成為FSD。有朋友可能不同意了,說在創業公司有很多機會做不同的工作啊,我想說的是,即便是創業公司,公司總是有主營的業務和方向的,就算能從前到後一個人做一個網站,那又怎樣,從技術上說,無非也就是掌握了一種或幾種資料庫,一門或幾門後臺語言,掌握了html,js,css...大公司呢?更難了,大公司雖然方向很多,但是越是大的公司,個人的螺絲釘效應越明顯,你可能成為領域專家,但很難有機會成為完整的機器的。那麼全棧程式設計師的磨練靠的是什麼?靠的是一種打心底裡的執著和毅力,把技術當成生活,自己逼自己不斷的獵取知識。

  難以界定,每個人都有不同的理解

  剛才其實沒有鄙視能夠完整做網站的人,相反,很是欽佩。至少本人現在在css上還不能算能完全獨立。不過每個人對FSD的定義其實不一樣,這跟個人的閱歷有一定的關係。只想說,既不要對自己過分自信,也不要過分貶低。一方面,人外有人,天外有天,每個人覆蓋到技術領域是有差異的;另一方面,FSD其實挺不容易的,不僅不容易達到,而且不容易獲得存在感。正因為見的多,所以就越覺得自己渺小,我們經常說的,真正的大牛從來就是低調和謙虛的。而FSD在任何領域都不是那種呼風喚雨的專家,別人在討論的時候可能永遠都沒有你插話的機會,其實你心裡知道,自己還很膚淺。個人自認為是比較接近這麼一個性質的程式猿,可以從我的部落格的文章內容略窺一二。但是正如我不敢斬釘截鐵地將自己定性到這麼個層次,恐怕很多全棧程式設計師也不能將自己明確在這個定位上,因為總有人能站出來給你一個"反例"。

  何去何從

  從知乎上的回答來看,FSD似乎並不吃香。縱觀人類發展歷程,更細緻的社會分工造就了生產力的提高。就程式設計師行業而言,越來越趨於細分話,似乎也是正常的趨勢。作為FSD,實際上挺難的,主要是因為精力的限制,無法在廣度和深度上兼顧。儘管如此,個人覺得FSD還是有很明顯的優勢的:

  1. 見多識廣,解決問題的手段比較多,而且往往能夠觸類旁通的思考;
  2. 不容易被某種技術的新衰而左右,很容易轉型;
  3. 合格的FSD往往具有超強的毅力和極客精神,這在某些情況下是很有用的;
  4. 由於能力廣泛,又吃苦耐勞,適合創業;

  個人理解

  針對Web開發的話,稍稍談一談個人對全棧程式設計師能力的界定,大牛們輕拍:

  1. 使用者體驗層面,html45,javascript,css23,各種前端的框架...
  2. 後臺業務邏輯層面,各種程式語言,現在主流的有Java、C#、Python、Ruby、PHP、Node.js...,以及配套的各種開發框架...
  3. 輔助層面可能會涉及到C、C++等較為古老的程式語言,需要一定程度上熟悉掌握...
  4. 資料庫,會設計和使用幾種常用的資料庫,mssql、mysql、oracle...,資料庫分析和優化
  5. 架構層面,能夠設計靈活可靠,易擴充套件的軟體架構和硬體架構。這個層面上要掌握的東西就很多了,網路、儲存、作業系統、web伺服器、web架構,安全等等...
  6. 一些基礎理論層面的東西,演算法資料結構、編譯原理、網路基礎...
  7. 資料分析,資料探勘
  8. 管理層面,眾人拾柴火焰高,一個人再牛b,精力是有限的,如果能夠聚集並領導更多的人,那就更全面了。這包括專案管理,持續整合,敏捷開發,版本控制...
  9. 移動開發

  如果你是FSD,有什麼想說的呢?歡迎全棧程式設計師們留言交流

  程式設計師能力矩陣

  一個挺有意思的程式設計師能力界定,程式設計師能力矩陣

注意:每個層次的知識都是漸增的,位於層次n,也蘊涵了你需瞭解所有低於層次n的知識。

相關文章