全棧工程師到底有什麼用 - OSCHINA - 中文開源技術交流社區

2020-12-25 開源中國
    最近國內外都在流行一個詞叫Full Stack,中文翻譯過來叫全棧工程師,也叫全端工程師。微博上很多專業人士都在討論全端工程師,有贊有毀的。我對全端工程師的定義是:掌握多種技能,並能利用多種技能獨立完成產品的人。打外比方,全棧工程師就是一個能獨立蓋一幢10層小洋樓的人,而普通工程師,則是可以和一群人蓋一幢摩天大樓的人。

    至於要掌握哪些技能,我覺得這個要跟從事的行業與技術方向有關,做網際網路的和做軟體的是不一樣的,即使是做網際網路的,後端也可以分為很多種技術流派。

    8/2定律在哪都適用,全棧工程師就是掌握20%常用技能的人,但這20%的技能會有80%的機率被用到,剩下那80%不常用的,讓我們Google吧。

    有人說,全棧工程師在中國已經很多年了,他們叫站長。這個說話有點靠譜但又不那麼靠譜,我自己也做過站長,深知作為一名站長需要掌握很多種技術。不靠譜的是,很多站長其實並沒有真正寫過多少代碼,而是熟練利用一些建站軟體來建站。

全棧工程師的價值

    有人說了,你再牛逼,你懂五種技術,你能幹五個人的活嗎?全棧工程師並不是說一個人能幹幾個人的活,而是要從多個方面來看這個問題。

全局性思維

    現代項目的開發,很少說只用到一兩種技術的,特別是移動網際網路大潮下。隨便一個網際網路項目中用到的技術,就會需要用到後端開發、前端開發、界面設計、產品設計、資料庫、各種移動客戶端、三屏兼容、restFul API設計和OAuth等等,一些比較前衛的項目,可能會用到Single Page Application、Web Socket、HTML5/CSS3這些技術,還有像第三方開發像微信公眾號微博應用等等。

    Web前端也遠遠不是從前的切個圖用個jQuery上個AJAX兼容各種瀏覽器那麼簡單了。現代的Web前端,你需要用到模塊化開發、多屏兼容、MVC,各種複雜的交互與優化,甚至你需要用到Node.js來協助前端的開發。

    所以說一個現代化的項目,是一個非常複雜的構成,我們需要一個人來掌控全局,他不需要是各種技術的資深專家,但他需要熟悉到各種技術。對於一個團隊特別是網際網路企業來說,有一個全局性思維的人非常非常重要。

    像如果是我經手的項目,我肯定會注意到網頁優化,也會考慮到API來兼容各種客戶端,更會考慮到三屏兼容的問題。不會說項目中完全使用AJAX而不顧SEO,也不會為了功能性而忽略訪問速度,我會很好的把握這個平衡,因為我知道它們的權重與實現成本。

溝通成本

    項目越大,溝通成本越高,做過項目管理的人都知道,項目中的人力是1+1<2的,人越多效率越低。因為溝通是需要成本的,不同技術的人各說各話,前端和後端是一定會掐架的。每個人都會為自己的利益而戰,毫不為已的人是不存在的。< p="">

    而全棧工程師的成本幾乎為零,因為各種技術都懂,胸有成竹,一不小心自己就全做了。即使是在團隊協作中,與不同技術人員的溝通也會容易得多,你讓一個後端和一個前端去溝通,那完全是雞同鴨講,更不用說設計師與後端了。但如果有一個人懂產品懂設計懂前端懂後端,那溝通的結果顯然不一樣,因為他們講的,彼此都能聽得懂。

創業公司

    對於創業公司來說,全端工程師的價值是非常大的,創業公司不可能像大公司一樣,各方面的人才都有。所以我們需要一個多面手,各種活都能一肩挑,獨擋多面的萬金油。對於創業公司,不可能說DBA前端後端客戶端各種人才全都備齊了,很多工作請人又不飽和,不請人又沒法做,外包又不放心質量,所以全端工程師是省錢的一妙招。雖然說全端工程師工資會比一般的工程師會高很多,但綜合下來,成本會低很多。

全棧工程師的困境

    我講技術有兩個發展方向,一種是縱向一種是橫向的,橫向的是瑞士軍刀,縱向的是削鐵如泥的幹將莫邪。這兩個方向都沒有對與錯,發展到一定程序都會相互溶合,就好比中國佛家禪修的南頓北漸,其實到了最後,漸悟與頓悟是一樣的,頓由漸中來。

    如果一個公司不太懂全棧工程師的價值,那麼全棧工程師的地位將會很尷尬,說得不好聽一點,全棧工程師就是什麼都會,都麼都不會。曾經有一次面試,對方問我很基礎的問題,我答不上來,我能做出產品,也知道什麼是怎麼一回事,我也不會犯那些錯誤,但我就是答不上概念,要考倒我非常容易。所以在應聘面試的時候,有些時候會吃虧,你可能會不如哪些在某一方面鑽得很深的人工資拿得高。

    由於經常在各種技術穿梭,我會經常忘記代碼的語法和一些API,所以我經常需要去查API甚至查語法,我覺得沒有Google我幾乎沒法工作。這在某些人的眼裡,是技術不夠的表現。我記的只是一個Key,一個如何找尋答案的索引,而不是全部,人腦不是電腦,我不可能要求我能記下所有的東西。

    有一次面試官問我一個問題,我說我不知道,但我猜大概是如此這般,對方問我,你為什麼這麼猜,我說憑直覺,對方笑了笑沒說話。面試完後我一查,果然和我猜的差不多。沒錯,我就是憑直覺,但這種直覺和女人的直覺不一樣,這種直覺是技術上的直覺,是你過去技術經驗累積的一個反射。

    我不是一個非常專業的Web前端,也不是一個非常專業的Node.js開發工程師,更不是一個非常專業的iOS開發工程師。用人單位會問我,你到底是專業做哪一個方面的,我為什麼要給你這麼高的工資?

有什麼資格來談全棧工程師

    我應該算是一個全棧型工程師了,行業經驗已經超過10年。獨立做過不少產品,也帶過不少項目,經過的產品包括桌面端、Web產品、移動端產品,Web端涵蓋前端與後端,移動端主要做iOS和混合開發。

    熟悉Web前端,對MVC/模塊化開發有實戰經驗,熟悉CoffeeScript、Grunt、RequireJS、Handlebars等等,自己寫過小型的Javascript框架,一個項目中的JS代碼超過一萬行。熟知網頁優化,知道如何讓網頁變得更加快速。也略懂SEO,知道什麼樣的URL和代碼會更討好Spider。

    熟悉Node.js,有幾個項目都是基於Node.js的,目前發布有開源的Blog程序Purelog,在NPM上有多個模塊發布。熟悉混合開發,過去我曾經有超過一年的時間是在研究Hybrid技術,多個App基於混合開發技術,也有開發類似於PhoneGap的解決方案。對HTML5在手機上的表現頗為熟悉,挖過很多的技術坑,如白屏問題,Sqlite問題,滾動條問題,硬體動畫加速、點擊延時問題等等。

    會做設計,熟悉Photoshop,所有的產品不管是Logo還是界面全都是自己做的設計,雖然在資深的設計師眼裡不值一提,但在工程師隊伍中算是比較另類了。

    熟悉Objective-C,有兩年以上的iOS開發經驗,在App Store上有約十款App。熟悉伺服器的一般性操作,自己有VPS並運行多個網站,雖然配置伺服器經常要去Google。

    早年曾經做過一年的Delphi,也曾做過幾年的ASP.net,雖然這些技術我目前已經放棄,完全轉向*nix平臺,但累積下的經驗是在的。多年的項目管理經驗,曾在三個公司擔任過項目經理,累計項目管理經驗超過4年。在多個科技門戶發表過技術和評論文章。

為什麼我會成為全棧工程師

    我相信很多全棧型工程師會和我一樣,是因為要創業才成為全棧型工程師的。我有一顆創業和做產品的心,而且我又是一個不願意麻煩別人的人,有些人擅長整合資源,空手套白狼,但我顯然不是這種人,所以我只好自己做了。

    在經歷過兩次孤獨的創業之後,我發現我並不是一個適合獨立創業的人,所以,我成為了一個全端工程師。我最初是做ASP,後來自己創業寫客戶端用Delphi,然後寫了三年的ASP.Net,2010年的時候因為公司需要開始做iOS開發。Web前端是一直自己在做,項目中的的Javascript基本都是我自己在做。

    我熱愛寫代碼,熱愛重複發明輪子,熱愛新技術,我想這也是我成為一個全棧工程師的重要原因。

    於我自己來說,我覺得全端工程師的樂趣要比一般工程師來得多,因為你知道一個產品的形態,你可以去設計一個產品,你是從全局的視野來做事情,你得到的成就感會更多一些。

稿源:塗雅

相關焦點

  • Delta Lake 進入 Linux 基金會 - OSCHINA - 中文開源技術交流社區
    「將 Delta Lake 引入 Linux 基金會的中立組織之下,將有助於依賴該項目的開源社區開發解決存儲和處理大數據(本地和雲端)的技術」,Linux 基金會戰略計劃副總裁 Michael Dolan 表示。
  • Netflix 的開源文化與技術 - OSCHINA - 中文開源技術交流社區
    Netflix利用開源或者自己開發的技術,讓公司能夠在分布於全世界50多個國家的伺服器上進行持續地構建和集成;能夠對用戶所產生的海量行為數據進行分析挖掘從而更好地推薦和改善自身服務;同時能夠通過性能剖析和安全審計保護用戶的隱私和數據,下面就讓我們來盤點一下Netflix所使用或貢獻的開源技術。
  • 全棧工程師到底有沒有前途?
    「少壯不努力,老大當全棧」,和高大上的數據工程師、架構師、算法工程師比起來,全棧工程師似乎就是個打雜的。但你見過一家公司的研發團隊全是全棧工程師的情況嗎? 道哥隨女朋友來到北京三年多了,在一家創業公司的早期就加入了,已經是該公司的技術骨幹。
  • 開源平臺引領機器翻譯 - OSCHINA - 中文開源技術交流社區
    令人驚訝的速度,機器語言翻譯現在正在高速發展到各個平臺上,其中開源軟體扮演著重要的角色。
  • Git 2.4.3 發布 - OSCHINA - 中文開源技術交流社區
    Git是一個開源的分布式版本控制系統,用以有效、高速的處理從很小到非常大的項目版本管理。開源中國 Git 代碼託管平臺:http://git.oschina.net/Windows下的Git請看這裡:http://www.oschina.net/p/msysgitGit 是 Linus Torvalds 為了幫助管理 Linux 內核開發而開發的一個開放源碼的版本控制軟體
  • Google限制Python使用引熱議 - OSCHINA - 中文開源技術交流社區
    你的期望是什麼呢?Collin Winter:Unladen Swallow旨在儘可能地將Python用在更多它現在尚未涉足的地方,而且Unladen Swallow也並非包治百病的靈丹妙藥。如果沒有人給Python注入投資,Python將仍舊比C和Java慢、佔用更多的內存和線程。
  • 開源春天,此時不來,更待何時? - OSCHINA - 中文開源技術交流社區
    要不然我們也不會看到這些修改開源協議的風波,要不然在這些風波中,我們也不會看到開源促進會(Open Source Initiative,OSI)重申需要對開源進行定義:「如果沒有對開源進行標準定義,軟體開發是不可能走下去的。如果任何人都可以提出自己對開源的定義,那麼這個世界就會缺乏信任,而如果沒有了信任,就不會有社區,不會有合作,也不會有創新。」
  • 開源社區的「忌諱」話題 - OSCHINA - 中文開源技術交流社區
    加拿大資深開源技術記者Bruce Byfield較早前發表了一篇名為「開源社區從來不想承認的九大事實」(9 Things That Are Never Admitted About Open
  • 開放源碼是開源軟體嗎? - OSCHINA - 中文開源技術交流社區
    所以,與此類似的,在中文裡,我們可以認為:「開放原始碼」是一個動詞+一個名詞。而「開源」則是一個特定的詞彙。作為動詞,我們說將某某軟體開源,是一種行為。作為形容詞,我們稱某某軟體是一個開源(的)軟體,不僅僅是指我們能夠獲取到他的原始碼。
  • zmail 6.1版本更新 - OSCHINA - 中文開源技術交流社區
    Zmail的官方主頁:www.z-email.orgZmail的官方論壇:bbs.z-email.orgZmail的QQ群: 257959126系統要求redhat 6.x centos 6.x 64位最小安裝Zmail安裝說明:概述:(1)該安裝包為一鍵安裝包,方便快捷部署;(2)Zmail是開源郵件技術社區的最新的郵件伺服器軟體包
  • SugarCRM:開源與商業的完美結合 - OSCHINA - 中文開源技術交流社區
    他認為,在中國市場以商業為後盾的開源模式將會成為CRM軟體發展的一個趨勢。 2009年4月22日,SugarCRM在上海舉辦了精英聯合峰會,並同時宣布中國區總經理的上任。我們可以看出這是一個信號,是關於SugarCRM商業開源策略正式在中國實施的前奏。
  • Gitbook,這個開源出書平臺了不起 - OSCHINA - 中文開源技術交流社區
    這種方式,相當於把過去的「閱稿」從專家,變成大眾,而且點評的過程也變得即時、有針對性,更加方便作者回顧。如果一本書是多人撰寫,則還可以在「Discussions」把問題拿出來與組員討論。Gitbook 生成 ePub 可以直接在 iOS 的 ibooks 中直接瀏覽,同時也有用戶反饋它的翻頁體驗不錯,更多人則在微博、Twitter 上分享幾個人一起完成寫作/翻譯的技術文檔。
  • JavaFX 2012:徹底開源 - OSCHINA - 中文開源技術交流社區
    其中將JavaFX完全開源赫列榜首——在2011年的JavaOne大會上,Oracle已做出保證將開源整個JavaFX平臺。 以下是Richard Bair列出的2012年JavaFX 10大目標: 1.
  • 開源軟體蓄勢待發 - OSCHINA - 中文開源技術交流社區
    相關內容11家值得關注的開源技術公司優異的技術特性和相對低廉的價格的結合使得開源產品廠商比以往有了更多進入企業網絡的路徑。Likewise公司執行長 Barry Crist 稱:「在網絡泡沫時期,由於Linux比SPARC上的Solaris更為便宜,開源產品逐漸由Unix轉移到了Linux。
  • 納德拉時代下的微軟開源之路 - OSCHINA - 中文開源技術交流社區
    在鮑爾默時代,你很難會想像微軟會與「開源」這兩個字扯上什麼關係,因為在鮑爾默的心中,開源作業系統Linux是毒瘤。不過進入納德拉時代之後,微軟的態度來了一個180度大轉彎,儘管那句「Microsoft Love Linux」聽起來有些曖昧,但是微軟確實是深深愛上了開源。此前Linux基金會公布非營利組織R Consortium之後,微軟也成為了該組織的一名成員。但是現在,微軟又在開源領域有了新的動向。
  • 關於編程裡的那些 ABCDEFG - OSCHINA - 中文開源技術交流社區
    它是一款開源 JavaScript 函式庫,由 Google 和它的社區來維護,用來協助單一頁面應用程式運行的。它的目標是透過 MVC模式(Model-View-Controller)功能增強基於瀏覽器的應用,使開發和測試變得更容易。函式庫讀取包含附加自定義(標籤屬性)的 HTML,遵從這些自定義屬性中的指令,並將頁面中的輸入或輸出與由 JavaScript 變量表示的模型綁定起來。
  • FineUI(開源版)v4.2.0 發布了! - OSCHINA - 中文開源技術交流社區
    原始碼已經託管到OSC:http://git.oschina.net/sanshi/FineUI FineUI
  • F5 收購 NGINX - OSCHINA - 中文開源技術交流社區
    F5 是應用交付網絡(ADN)領域的全球領先廠商,其解決方案有助於整合不同的技術,以便更好地控制基礎架構,提高應用交付和數據管理能力,並使用戶能夠通過企業桌面系統和智能設備無縫、安全並更快速地接入應用。
  • 詳解開源界的 5 大開源許可協議 - OSCHINA - 中文開源技術交流社區
    越來越多的開發者與設計者希望將自己的產品開源,以便其他人可以在他們的代碼基礎上做更多事,開源社區也因此充滿生機。
  • 程式設計師應該知道的七個圖形工具 - OSCHINA - 中文開源技術交流社區
    在上一篇《全棧工程師的百寶箱Graphviz (英文:Graph Visualization Software的縮寫)是一個由AT&T實驗室啟動的開源工具包它有一個很大的缺點是使用了全球最先進的Eclipse RCP 軟體架構,導致了有點卡。