什麼是全棧開發?

General 更新 2024-12-22

什麼是全棧工程師

近國內外都在流行一個詞叫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的,人越多效率越低。因為溝通是需要成本的,不同技術的人各說各話,前端和後端是一定會掐架的。每個人都會為自己的利益而戰,毫不為已的人是不存在的。

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

創業公司

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

全棧工程......

什麼是全棧工程師

為什麼需要全棧測試工程師

需要!非常需要!其實從小白一開始就提到測試工程師本來就全能的。因為在測試這個角度,放大了是質量這個角度,一切能夠提高質量的工作都是測試人員應該涉獵的。就好像本來犯法就是應該懲罰的,這個還專門強調一下搶劫警車是犯法的一樣,搞得不搶劫警車不犯法了。

在最近的這幾年,測試看起來在蓬勃發展,但是其實整體的素質和能力卻每況愈下。一方面是低端的沒有突破,另一方面卻是測試技術化。這裡並不是說測試技術化不好,而是很多測試人員在為了技術而學習技術,並沒有解決質量問題。更可怕的是測試人員對自己的要求從全能逐漸變成了業務,再從業務變成了點點或者是寫寫的兩個極端。在這裡對新手是一個非常迷茫的未來,上面的人都還在撲騰到底怎麼玩,你讓小白怎麼知道自己該怎麼玩?

全棧測試工程師的提出,其實只是換了個黃金馬甲的測試工程師,但是它重新定義了測試人員的要求,就是啥都懂(可以參考雲層的百度閱讀的書籍小白到現在的所有內容,每一章節都是測試人員應該懂的!),這樣才能在工作中真正的幫助別人發現問題、定義問題、解決問題,並最終找到質量人員的價值所在。

怎麼培養全棧工程師

說實話我陳霽個人覺得全棧工程師就好像武學奇才一樣,培養無非兩個方式。

1.身負血海深仇

這裡說的比較誇張,但是本身的意思就是環境所迫。在一個創業型公司或者某些運氣不佳到哪裡啥都得幹並且毫無退路的,那麼非常容易不小心成為全棧工程師。

比如先買個房,每個月欠著幾千塊的貸款,這個時候作為一個人能做的事情就是忍辱負重的接受一些別人的刁難和不停的逼迫自己走在最困難的道路上解決所有別人提出的問題,以免無法償還貸款。

在這樣的幾年非人的磨礪下,為全公司的各個部門處理各種疑難雜症,非常就容易成為全棧工程師(例如在多家外包客戶中經歷重大疑難案例)。

2.自己就是練武奇才

所謂自己就是練武奇才,是指個人有強烈的求知慾對所有一切的知識都有弄懂的興趣和決心。

這種人不需要別人的督促,更多的時候他會自己主動的切換自己的舒適區,不斷的要求自己懂再懂一些,因為深怕某些不懂當遇到問題的時候無法解決,從而不能平復心中的不安全感。

那麼若干年後這樣的人也會成為全棧測試工程師。

全棧工程師真的不全棧

最後想說的一點就是全棧工程師其實真的不全棧。什麼都懂什麼都不精是大家所熟知的諺語,本來學習東西就是有成本的,一個人的精力是有限的,要做廣自然無法做深,這個本來就是矛盾的。

在任意一家公司的全棧測試工程師也是如此,公司團隊強的,那麼對全棧工程師的要求就會低,而公司某些團隊弱的,那麼自然全棧工程師會強。

問題解決的越多經驗越豐富,所以全棧工程師只能對當前企業來說是全棧的,但是對於另外的企業來說未必,因為全能也是有針對性的。如同人無完人,條條大路通羅馬。全能固然好,但術業有專攻也未必不是一條康莊大道。關鍵是你自己是否想做,想做了後是否喜歡做,喜歡做了後是否堅持做,堅持做了你就一定能夠做到!

什麼是全棧開發者

全棧工程師

更多圖片(1張)

全棧工程師,也叫全端工程師,英文Full Stack developer。是指掌握多種技能,並能利用多種技能獨立完成產品的人。

中文名:全棧工程師

外文名:Full Stack Developer

價值

全局性思維

現代項目的開發,需要掌握多種技術。互聯網項目,需要用到後端開發、前端開發、界面設計、產品設計、數據庫、各種移動客戶端、三屏兼容、restFul API設計和OAuth等等,比較前衛的項目,還會用到Single Page Application、Web Socket、HTML5/CSS3這些技術以及像第三方開發像微信公眾號微博應用等等。

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

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

什麼是全棧開發者

純粹基於道德而掌握開發堆棧的每一方面的預期是合理的嗎?可能不是,但Facebook這樣要求。一個Facebook的員工在OSCON告訴我,Facebook只僱傭全棧開發者。那麼全棧開發者是什麼意思呢?

對我來說全棧開發者是對每一層都熟悉的人,如果不真正對所有的軟件技術感興趣不會對它們精通。

好的開發者熟悉整個堆棧,他們是知道如何使生活周邊的事更容易的人。這就是為什麼在辦公室我如此反對偏執的原因,當然,政治及溝通挑戰在大型組織中還是按固有的套路。我認為Facebook所持有的招聘政策是:如果聰明的人用腦用心,就能在更短的時間內構件更好的產品。

什麼是全棧工程師

全棧(Full Stack)工程師,也可以叫全端工程師,無論是前端知識,還是後端架構你都要了解。甚至有些調皮的程序員這樣理解全棧工程師:全棧工程師=屌絲戰鬥機=系統+網絡+研發+dba+架構+安全=沒女朋友、拿一份工資做三份事情的典型、每個站長都是一個全棧工程師,每個站群的站長都是超級全棧工程師。

什麼是全棧型工程師(Full Stack Developer)?

做這樣一個簡單的 app:

一個天氣應用,乾淨清爽的界面,天氣信息一目瞭然。它不僅可以精確預測未來 10 天的天氣,還可以顯示某地的歷史天氣信息。它具有自定義提醒功能,支持 web 版本, iOS 版, Android 版。

為什麼想要做這樣一個 App ?因為你喜歡旅行,但沒找到一個天氣 App 可以提供你下個月或者某個特定月份的天氣信息;因為你懶你沒有每天看天氣預報的習慣,你想要在第二天溫度達到 30 度以上或者溫差有 +/-7 度的時候,獲得溫馨提示;因為你要成為一個 Full Stack Engineer ,你必須不斷訓練每個 stack 的能力。

## Web版

你決定用 MySql 來存儲用戶數據,用 NoSql 存儲歷史天氣數據。你用 Redis 作為 cache ,緩存一些最常請求的天氣數據。你用 Python 寫後臺,功能簡單,後臺不復雜,用戶註冊登錄,抓取返回某城市的天氣數據,某地的歷史天氣數據,很快便搞定。

後臺開發並測試好了,接下來是 Web 前端。你十分清楚一個好的 UI 設計對一個 App 的重要性,你也明白 UI 的設計不只是為了美觀,更重要的是提高信息的可讀性和程序的可用性。幸好你平日的積累這次派上用場了。你把之前保存下來的上百個優秀的UI設計作品拿來研究,你從書架上拿出Norman 的那本經典 - The Design of Everyday Things 重新細讀。最終你用白紙黑筆敲定了第一個版本的 UI,簡潔直觀,沒有任何多餘的設計,所有元素的排列間距 大小顏色都恰到好處。你相信即使天氣不好,但用戶只要使用這個 App 都會有著愉悅的心情。

那麼開始寫前端吧。啊,別急,都忘了還有 Icon 和 Logo ,可是不會 PS ,不會 AI ,不會 Sketch 怎麼辦呢,學吧。你平日喜歡結交不同領域的朋友,正好幾周前在一個活動上你認識一位朋友做設計的。她花一個下午的時間教你基本的 Sketch 的使用,並對你的 UI 設計給出了一些意見。你請她吃了頓晚飯表示感謝,然後立即回家根據她的一些建議重新調整了 UI ,這次你在 PS 裡把 UI 畫了出來,Icons 和 Logo 也順道一起做了。

全棧工程師和架構師的區別

全棧工程師和構架師並不存在高下之分,分工不同而,只不過成為構架師所需要掌握的知識更特殊,而且也更依賴經驗。全棧工程師更多關注功能實現,構架師更關注系統性能。

全棧工程師主要負責應用開發,對前端後端技術都能熟練使用,更關注應用開發本身,以做新功能為主。

但在大型應用中,除了功能,性能也變得重要,這時候就需要構架師了。構架師考慮的是技術的選型,系統模塊之間的連接方式,系統可能的瓶頸,然後還有負載均衡和緩存之類的支持系統。

對於小型系統,只要實現功能即可,性能可以暫時放在一邊,全棧工程師最適合。隨著系統的更新升級,構架也不斷演進,許多以前不會出現的問題漸漸出現,能對這個過程有清晰認識的人,就是架構師。

什麼是全棧開發者

英文縮寫FSD,簡而言之就是對一個系統的各個部件都有足夠的瞭解,具備完整的知識體系。比如做web開發的,需要了解前端js,CSS,HTML,又瞭解後端java,Python, Ruby,數據庫等等。FSD的價值不是瞭解技術細節,但是需要有宏觀視野,保證團隊走在正確的道路上。

什麼是全棧開發者

全棧開發者是對每一層都熟悉的人。

全棧的層:

1.服務器、網絡和服務器環境

知道哪裡可能崩了和為什麼會崩,沒有什麼是理所當然的。

適當的使用文件系統,雲存儲、網絡資源,必須具備數據冗餘和可用性的概念。

知道應用的伸縮性對硬件的需求。

什麼是多線程和競爭條件?想想看,在開發機上你可能看不到這些,但是現實環境中它們就是會發生。

全棧coder還要能與運維並肩作戰。提供有價值的錯誤信息和日誌。確保它們是可靠的,因為運維會在你之前看到這些東西。

2.數據建模

如果數據模型有缺陷,業務邏輯和上層邏輯就要用奇怪的代碼(很醜)來彌補數據模型的缺陷。

全棧開發者要能夠建立合理的、標準的關係模型,包括外鍵、索引、視圖、查找表等。

全棧開發者要熟悉非關係型數據存儲(應該指的不止是NoSQL),並且知道它們相對關係型存儲優勢所在。

3,業務邏輯

應用提供的核心價值。

可靠的面向對象技能。

可能會用到的框架。

4,API層、Action 層、MVC

理解外部對數據模型和業務邏輯的操作。

該層會有很多框架應用。

全棧開發者要具備編寫清晰、一致和易用的接口。過高的複雜度讓人厭惡。

5,UI

全棧coder:a)知道如何創建可讀的頁面佈局;b)或者明白自己需要幫助設計師。A或B,關鍵是要能有好的視覺設計。

掌握HTML5和CSS。

JS正在逐步成為語言新銳,Javascript的世界裡已經完成了很多激動人心的工作(node, backbone, knockout...)。

6.用戶體驗

全棧coder要知道用戶需要的就是It works!

一個好的系統不會廢了用戶的手腕和眼睛。一個全棧coder會發現和審視需要8次點擊、3步操作的流程,並最終把它一鍵搞定。

提供有價值的錯誤信息。如果崩潰了,就要向用戶致歉。有時候程序員會寫出讓用戶自我感覺很二的錯誤信息。

7.知道用戶和業務到底要什麼

現在我們模糊了架構的界限,但卻可能遠離了實際需求。

全棧coder要明確知道用戶使用軟件時的場景,而且要領會業務。

什麼是全棧開發

會做人工智能,寫劇情,做渲染,做模型,做配樂,做音效,做服務器,做界面,順便畫個網站宣傳一下剛剛做出來的遊戲

相關問題答案
什麼是全棧開發?
什麼是後端開發?
什麼是二次開發接口?
什麼是後臺開發?
什麼是市場開發專員?
什麼是全日制學歷?
什麼是槓上開花?
什麼是新能源發電?
什麼是電大開放教育?
什麼是堆棧攝影?