怎樣纔算得上是全棧程序員?

與其餘互聯網熱詞同樣,」全棧「程序員也是英譯過來的,英文全文是:Full-Stack Developer,你想啊,中國人民怎麼會用客棧的棧、堆棧的棧來形容工程師呢?javascript

談論一個概念,首先得給伊個定義,通常來講,全棧工程師就是指技術多面手,掌握多種技能,可以獨立完成 non-trivial application 的人。non-trivial 怎麼解呢?就是有必定複雜度的,具有必定規模的意思。基於此,我和個人程序員朋友們,對全棧工程師的認識是:在技術棧的各個領域都可以作到出色的工程師。有了這個標準,我和程序員們面面相覷,發現沒有一個是全棧工程師。技術領域浩如煙海,更新換代之迅猛如炸雷不及掩耳,別說盜鈴了。互聯網短短 20 年的發展,累積的技術信息已經不是咱們終其一輩子可以消化的了,知道尚不可爲,何以作到出色?前端

可是,這個標準稍稍下降一點,早期的程序員差很少就都能叫全棧了。2001 年左右咱們開發 B/S 產品,用來展示 UI 和數據的程序代碼中混雜了 Java、HTML、CSS 和 JavaScript,根本不可能把前端和後端拆開編寫,然後端業務邏輯自己就是 Java 實現的,你不寫誰寫?懂了業務邏輯和算法還不行,你得把數據存數據庫和文件系統吧,什麼?你不懂 SQL?我靠那你仍是程序員嗎?你不能每次和數據庫交互都讓一個進程去敲門吧,數據庫招你惹你了?這時候就得有個鏈接線程池。異常得統一處理吧,得支持集羣吧,給用戶部署了得能自動擴展吧,沒測試怎麼辦?你本身寫的代碼寫的業務邏輯寫的界面,你不保證正確性誰保證?……java

總之在那個年代,每一個程序員差很少什麼都得會點,但有的人在這個領域強一些,有的人在那個領域出色一些,不一而足。git

如今看來,那時候咱們應該叫全沾工程師,什麼都會點,能解決問題,可是單我的,除了本身擅長的技術,在其餘領域,都沒能作到出色。程序員

若是這個標準再下降一點,好比說把「non-trivial」去掉,隨便作個 Application,那就容易多了,一個零基礎智力正常的成年人去培訓班培訓幾個月,差很少就能作出一個網站、一個移動 App 還包括後端,或者一個數據挖掘的展現頁面。但這個範圍僅僅侷限在會上,和作好、出色,差距明顯。能夠看作是入門級的工程師,只不過和前端工程師、移動開發工程師、Java 工程師相比,什麼技術都懂一點點而已。github

這種工程師,咱們能夠把他們叫作全站工程師,基本上,進入企業以後,都得有老師傅帶着,手把手教,練習和實戰,才能作「non-trivial」的項目。爲啥叫全站呢,意思就是老師傅講東西的時候,都在旁邊站着。算法

有沒有真正的全棧工程師?有,好比菲爾普斯在游泳層面勉強算全棧,奧運會咔咔拿 7 枚金牌,你服不服?你說我也會四種泳姿……您那叫會,會和作好,差着幾十個二把刀。固然了,二把刀也沒什麼很差,至少比拿根兒木頭杵着強多了。鼓勵你們在立足本職成爲專家的基礎上,成爲一個認真的二把刀。數據庫

什麼是程序領域的全棧工程師呢?我以爲雲風算是遊戲領域的全棧工程師,他自幼編程,在語言層面對彙編、C、C++、Lisp、Java、Python、Lua 都有深刻的理解,使用起來如臂指使,對遊戲領域的策劃、引擎、協議和服務端架構也是駕經就熟,最新開源出來的 skynet —— 基於 Lua 實現的網絡遊戲服務器框架,極具參考和實用意義( https://github.com/cloudwu )……可是雲風不作 Web 遊戲啊,他對 JavaScript 的評價是:javascript 真是門噁心的語言!編程

領我編程入門的師兄 baby,也是一個編程奇才,他對操做系統、編程語言、數據庫均有透徹的瞭解,學習新技術只能用迅猛來形容,每次技術選型以後,他就會趴在辦公室裏敲敲打打幾天,而後丟給咱們一個用新語言實現的框架,告訴咱們,用!一用之下,幾乎沒有 bug。這樣的人,可稱全棧。他們並非在編程領域樣樣精通,而是在須要的時候可以在極短的時間內達到常人須要長時間練習才能達到的水準。後端

正如我在書中寫到,高手並非懂得多,他們只是學得快而已。

如今 baby 早有了本身的公司,估計技術也作的少了,如今想起他那訓疾如風的鍵盤指法和閃電般的學習速度,仍是讓人一聲嘆息。

總體來講,我以爲程序員們不必去追逐什麼「全棧工程師」,在工做和生活中,花 200% 的時間讓本身在擅長的領域成爲超越 80% 的人,而後,須要學什麼就去學什麼,一味追求大而全,反而會拔苗助長。

以前推薦的公衆號「劉炯」曾經寫過一篇「想當全才的自我檢討」,其中一段大意以下:

就像有人給本身設定目標要學英語、學樂器、學編程、學設計、學會計、學書法、學廚藝最終一事無成同樣,我骨子裏也但願本身作個「樣樣精通」的「全才」,然而事實上本身把時間更多的花在收集信息和焦慮上,反而沒有將時間用在真正的技能學習上,最終得到了「樣樣稀鬆」的結果。

這就如同不少遊戲中的稀缺技能點同樣,玩家永遠加不滿全部的技能樹,如何有策略的使用有限的技能點來解決對應的問題,成了每一個玩家必修的課程。

現實生活中,亦是如此!

相關文章
相關標籤/搜索