"

最近幾年,在軟件開發(尤其是Web開發)領域,“全棧工程師”成為了開發者津津樂道的熱詞。你或許會聽到這樣一些話語:“我正在學習全站開發”,“我是全棧工程師”,”我們正在招聘全棧工程師“。那麼,”全棧“到底意味著什麼?出自什麼地方?具體含義是什麼?帶著這樣三個問題,我們將一步步去揭露全棧工程師的神話與謊言。

"

最近幾年,在軟件開發(尤其是Web開發)領域,“全棧工程師”成為了開發者津津樂道的熱詞。你或許會聽到這樣一些話語:“我正在學習全站開發”,“我是全棧工程師”,”我們正在招聘全棧工程師“。那麼,”全棧“到底意味著什麼?出自什麼地方?具體含義是什麼?帶著這樣三個問題,我們將一步步去揭露全棧工程師的神話與謊言。

全棧開發的神話和謊言

​ 也許你不止一次的看到過且認為下面的這個等式是正確的,而且高大上:

"

最近幾年,在軟件開發(尤其是Web開發)領域,“全棧工程師”成為了開發者津津樂道的熱詞。你或許會聽到這樣一些話語:“我正在學習全站開發”,“我是全棧工程師”,”我們正在招聘全棧工程師“。那麼,”全棧“到底意味著什麼?出自什麼地方?具體含義是什麼?帶著這樣三個問題,我們將一步步去揭露全棧工程師的神話與謊言。

全棧開發的神話和謊言

​ 也許你不止一次的看到過且認為下面的這個等式是正確的,而且高大上:

全棧開發的神話和謊言

如果這個等式在軟件開發中是一個真命題,那麼我們可以得出這樣一個推導式:

"

最近幾年,在軟件開發(尤其是Web開發)領域,“全棧工程師”成為了開發者津津樂道的熱詞。你或許會聽到這樣一些話語:“我正在學習全站開發”,“我是全棧工程師”,”我們正在招聘全棧工程師“。那麼,”全棧“到底意味著什麼?出自什麼地方?具體含義是什麼?帶著這樣三個問題,我們將一步步去揭露全棧工程師的神話與謊言。

全棧開發的神話和謊言

​ 也許你不止一次的看到過且認為下面的這個等式是正確的,而且高大上:

全棧開發的神話和謊言

如果這個等式在軟件開發中是一個真命題,那麼我們可以得出這樣一個推導式:

全棧開發的神話和謊言

那麼,如果一個軟件開發人員不會前端或者後端,亦或是不會基礎架構開發,那麼他就不是軟件工程師。顯然,這樣的推論是不正確的,也就是說上述關於全棧工程師的定義在軟件開發中是荒謬的,是一個被精心包裝過的神話。

”full stack“(全棧)一詞只是一個商業上的流行語,而不是指代具體的工程或者某一種技術。真正的軟件開發者不會用”全棧“一詞來描述自己的技術,”全棧開發“是一個沒有任何意義的定義,它就好比”五彩斑斕的黑“一樣荒謬。也許使用這一詞語的開發者是想在應聘時取悅面試官,留下比較好的印象,因為誰都不想在面試上表現平平,對於招聘者而言,當他們提及”全棧“一詞時,更多的是想尋找一個技術領袖,而非真正的”全棧“開發。

​ 那麼“全棧開發”這個技術神話,是如何被成功塑造出來的呢?

​ “全棧開發”杜撰於商業解決方案中對技術問題的描述,全棧是指一個包含完整技術解決方案的全部技術框架。以Web開發為例,全棧就意味著從前端(用戶交互界面)到後端(業務系統,數據庫,操作系統等)的全套技術套件。而這種端到端(客戶端-服務器端)的解決方案需要依賴於諸多技術,如TCP/IP協議,硬件設施,防火牆,路由,負載均衡,網絡代理,Web容器,數據存儲,操作系統等。這裡的全棧,更為明確的是指代技術的完整性,即全棧開發等同於完整的技術解決方案:

"

最近幾年,在軟件開發(尤其是Web開發)領域,“全棧工程師”成為了開發者津津樂道的熱詞。你或許會聽到這樣一些話語:“我正在學習全站開發”,“我是全棧工程師”,”我們正在招聘全棧工程師“。那麼,”全棧“到底意味著什麼?出自什麼地方?具體含義是什麼?帶著這樣三個問題,我們將一步步去揭露全棧工程師的神話與謊言。

全棧開發的神話和謊言

​ 也許你不止一次的看到過且認為下面的這個等式是正確的,而且高大上:

全棧開發的神話和謊言

如果這個等式在軟件開發中是一個真命題,那麼我們可以得出這樣一個推導式:

全棧開發的神話和謊言

那麼,如果一個軟件開發人員不會前端或者後端,亦或是不會基礎架構開發,那麼他就不是軟件工程師。顯然,這樣的推論是不正確的,也就是說上述關於全棧工程師的定義在軟件開發中是荒謬的,是一個被精心包裝過的神話。

”full stack“(全棧)一詞只是一個商業上的流行語,而不是指代具體的工程或者某一種技術。真正的軟件開發者不會用”全棧“一詞來描述自己的技術,”全棧開發“是一個沒有任何意義的定義,它就好比”五彩斑斕的黑“一樣荒謬。也許使用這一詞語的開發者是想在應聘時取悅面試官,留下比較好的印象,因為誰都不想在面試上表現平平,對於招聘者而言,當他們提及”全棧“一詞時,更多的是想尋找一個技術領袖,而非真正的”全棧“開發。

​ 那麼“全棧開發”這個技術神話,是如何被成功塑造出來的呢?

​ “全棧開發”杜撰於商業解決方案中對技術問題的描述,全棧是指一個包含完整技術解決方案的全部技術框架。以Web開發為例,全棧就意味著從前端(用戶交互界面)到後端(業務系統,數據庫,操作系統等)的全套技術套件。而這種端到端(客戶端-服務器端)的解決方案需要依賴於諸多技術,如TCP/IP協議,硬件設施,防火牆,路由,負載均衡,網絡代理,Web容器,數據存儲,操作系統等。這裡的全棧,更為明確的是指代技術的完整性,即全棧開發等同於完整的技術解決方案:

全棧開發的神話和謊言

從表面上看,全棧開發工程師很合乎邏輯,它也成了技術大咖一種能力的象徵。前面說過,全棧開發意味著完整的技術解決方案,如果全棧開發工程師這一命題成立,那麼相當於一名全棧工程師就代表這一個完整的技術解決方案,很明顯,這是一個偽命題。即便是一個天才或者通才,他也不能說自己所掌握的開發技術代表著一個完整的解決方案,這就是為什麼說全棧工程師只是一個神話的原因。

​ 接下來,讓我們看看一些生活中常見的例子,以揭示全棧開發工程師中所隱藏的謊言。

​ 對於開發者,當被問及“你是全棧開發人員嗎?”,其實他正真的意思是想知道你是否會使用數據庫,操作系統,使用一種或更多的編程語言編寫業務代碼,以及是否會操作HTML頁面。如果你是一名軟件工程師,你給出的答案是肯定的,但這並不意味著你是一個全棧開發人員,因為全棧開發人員這個術語本身沒有任何意義。實際的情況是,任何技術都對於其專門的崗位,例如UI工程師,Java工程師,PHP工程師,運維工程師,DBA,網絡工程師,系統架構師等等,他們都有著自身專注的領域,如果按照全棧工程師的定義,一個UI工程師不具備 系統架構的能力,那麼是否就可以說他不是一名軟件工程師呢?這是一種錯誤的認識。我們不能將描述技術解決方案的術語轉嫁到具體的開發崗位上,因為人不能代表一個完整的技術解決方案。

"

最近幾年,在軟件開發(尤其是Web開發)領域,“全棧工程師”成為了開發者津津樂道的熱詞。你或許會聽到這樣一些話語:“我正在學習全站開發”,“我是全棧工程師”,”我們正在招聘全棧工程師“。那麼,”全棧“到底意味著什麼?出自什麼地方?具體含義是什麼?帶著這樣三個問題,我們將一步步去揭露全棧工程師的神話與謊言。

全棧開發的神話和謊言

​ 也許你不止一次的看到過且認為下面的這個等式是正確的,而且高大上:

全棧開發的神話和謊言

如果這個等式在軟件開發中是一個真命題,那麼我們可以得出這樣一個推導式:

全棧開發的神話和謊言

那麼,如果一個軟件開發人員不會前端或者後端,亦或是不會基礎架構開發,那麼他就不是軟件工程師。顯然,這樣的推論是不正確的,也就是說上述關於全棧工程師的定義在軟件開發中是荒謬的,是一個被精心包裝過的神話。

”full stack“(全棧)一詞只是一個商業上的流行語,而不是指代具體的工程或者某一種技術。真正的軟件開發者不會用”全棧“一詞來描述自己的技術,”全棧開發“是一個沒有任何意義的定義,它就好比”五彩斑斕的黑“一樣荒謬。也許使用這一詞語的開發者是想在應聘時取悅面試官,留下比較好的印象,因為誰都不想在面試上表現平平,對於招聘者而言,當他們提及”全棧“一詞時,更多的是想尋找一個技術領袖,而非真正的”全棧“開發。

​ 那麼“全棧開發”這個技術神話,是如何被成功塑造出來的呢?

​ “全棧開發”杜撰於商業解決方案中對技術問題的描述,全棧是指一個包含完整技術解決方案的全部技術框架。以Web開發為例,全棧就意味著從前端(用戶交互界面)到後端(業務系統,數據庫,操作系統等)的全套技術套件。而這種端到端(客戶端-服務器端)的解決方案需要依賴於諸多技術,如TCP/IP協議,硬件設施,防火牆,路由,負載均衡,網絡代理,Web容器,數據存儲,操作系統等。這裡的全棧,更為明確的是指代技術的完整性,即全棧開發等同於完整的技術解決方案:

全棧開發的神話和謊言

從表面上看,全棧開發工程師很合乎邏輯,它也成了技術大咖一種能力的象徵。前面說過,全棧開發意味著完整的技術解決方案,如果全棧開發工程師這一命題成立,那麼相當於一名全棧工程師就代表這一個完整的技術解決方案,很明顯,這是一個偽命題。即便是一個天才或者通才,他也不能說自己所掌握的開發技術代表著一個完整的解決方案,這就是為什麼說全棧工程師只是一個神話的原因。

​ 接下來,讓我們看看一些生活中常見的例子,以揭示全棧開發工程師中所隱藏的謊言。

​ 對於開發者,當被問及“你是全棧開發人員嗎?”,其實他正真的意思是想知道你是否會使用數據庫,操作系統,使用一種或更多的編程語言編寫業務代碼,以及是否會操作HTML頁面。如果你是一名軟件工程師,你給出的答案是肯定的,但這並不意味著你是一個全棧開發人員,因為全棧開發人員這個術語本身沒有任何意義。實際的情況是,任何技術都對於其專門的崗位,例如UI工程師,Java工程師,PHP工程師,運維工程師,DBA,網絡工程師,系統架構師等等,他們都有著自身專注的領域,如果按照全棧工程師的定義,一個UI工程師不具備 系統架構的能力,那麼是否就可以說他不是一名軟件工程師呢?這是一種錯誤的認識。我們不能將描述技術解決方案的術語轉嫁到具體的開發崗位上,因為人不能代表一個完整的技術解決方案。

全棧開發的神話和謊言

​ 對於企業,當其想要招聘一個“全棧工程師”時,就像在找“五彩斑斕的黑”一樣沒有意義,因為它根本就不存在。只有不同色度的黑色,而不存在如彩虹般絢爛的黑色。但奇怪的是,當涉及此問題是,面試者往往會列舉很多案例來證明他是全棧開發人員,這是因為他要取悅面試官,沒有任何人會說自己是“半吊子”工程師,更不會說自己不是軟件工程師,所以才導致一個謊言只能換來另外一個謊言的結局。當你有招聘“全棧工程師”的想法時,不妨將其更換為“優秀的軟件工程師”,“高級Java工程師”,“經驗豐富的UI工程師”或者“五年以上工作經驗的軟件工程師”這一類術語更為有效。明確需求,才能找到合適的人選,細化問題,才能得到真實的答案。

​ 如果公司正處於初創期或者只有一兩名開發人員,在資源(人力,財力)相對缺乏的情況下,“全棧開發人員”確實很誘人,也很適合你。因為在這種情況下你別無選擇,你只能相信“全棧開發人員”能夠為你提供一套完整的技術解決方案,併成功實施該它。但也不能因為開發人員數量少而將人和方案等同起來,在這種情況下,你所說的“全棧開發人員”應該是指公司的技術領袖,他們對軟件開發有著強大的知識儲備,同時具備較好的編程能力,能在創業初期為你提供最小化的,可用的技術解決方案以及MVP(Minimum Viable Product,即最小化可用產品)。當你的公司步入成長期時,需要摒棄尋找“全棧工程師”這種無意義的想法。因為在此時期,需要完善最小化的技術解決方案,將解決方案進行拆分,投入更多的人力(開發人員)到各子方案中,才有可能使一個完整的技術解決方案得以順利實施。這是一個技術組件的綜合體,並不是單靠個人能完成的任務。在實際的開發工作中,為了解決方案種涉及的技術問題,公司工作崗位上會出現如系統架構師,項目經理,數據分析師,UI/UX工程師,DBA,Java工程師,IOS工程師,Android工程師,測試工程師等一系列配套的角色,各角色之間分工明確,各司其職。一個人無論其能力再強,也無法在同一時間內,完成多個角色的多項工作,除非公司能排除時間因素,在軟件開發的總體擁有成本中(TCO)將時間範圍(Time Scope)剔除。任何以盈利為最終目的的商業公司都不會允許這種愚蠢的事情發生。因此,“全棧工程師”對於企業而言,也是一個神話臆想和天大的謊言。

"

最近幾年,在軟件開發(尤其是Web開發)領域,“全棧工程師”成為了開發者津津樂道的熱詞。你或許會聽到這樣一些話語:“我正在學習全站開發”,“我是全棧工程師”,”我們正在招聘全棧工程師“。那麼,”全棧“到底意味著什麼?出自什麼地方?具體含義是什麼?帶著這樣三個問題,我們將一步步去揭露全棧工程師的神話與謊言。

全棧開發的神話和謊言

​ 也許你不止一次的看到過且認為下面的這個等式是正確的,而且高大上:

全棧開發的神話和謊言

如果這個等式在軟件開發中是一個真命題,那麼我們可以得出這樣一個推導式:

全棧開發的神話和謊言

那麼,如果一個軟件開發人員不會前端或者後端,亦或是不會基礎架構開發,那麼他就不是軟件工程師。顯然,這樣的推論是不正確的,也就是說上述關於全棧工程師的定義在軟件開發中是荒謬的,是一個被精心包裝過的神話。

”full stack“(全棧)一詞只是一個商業上的流行語,而不是指代具體的工程或者某一種技術。真正的軟件開發者不會用”全棧“一詞來描述自己的技術,”全棧開發“是一個沒有任何意義的定義,它就好比”五彩斑斕的黑“一樣荒謬。也許使用這一詞語的開發者是想在應聘時取悅面試官,留下比較好的印象,因為誰都不想在面試上表現平平,對於招聘者而言,當他們提及”全棧“一詞時,更多的是想尋找一個技術領袖,而非真正的”全棧“開發。

​ 那麼“全棧開發”這個技術神話,是如何被成功塑造出來的呢?

​ “全棧開發”杜撰於商業解決方案中對技術問題的描述,全棧是指一個包含完整技術解決方案的全部技術框架。以Web開發為例,全棧就意味著從前端(用戶交互界面)到後端(業務系統,數據庫,操作系統等)的全套技術套件。而這種端到端(客戶端-服務器端)的解決方案需要依賴於諸多技術,如TCP/IP協議,硬件設施,防火牆,路由,負載均衡,網絡代理,Web容器,數據存儲,操作系統等。這裡的全棧,更為明確的是指代技術的完整性,即全棧開發等同於完整的技術解決方案:

全棧開發的神話和謊言

從表面上看,全棧開發工程師很合乎邏輯,它也成了技術大咖一種能力的象徵。前面說過,全棧開發意味著完整的技術解決方案,如果全棧開發工程師這一命題成立,那麼相當於一名全棧工程師就代表這一個完整的技術解決方案,很明顯,這是一個偽命題。即便是一個天才或者通才,他也不能說自己所掌握的開發技術代表著一個完整的解決方案,這就是為什麼說全棧工程師只是一個神話的原因。

​ 接下來,讓我們看看一些生活中常見的例子,以揭示全棧開發工程師中所隱藏的謊言。

​ 對於開發者,當被問及“你是全棧開發人員嗎?”,其實他正真的意思是想知道你是否會使用數據庫,操作系統,使用一種或更多的編程語言編寫業務代碼,以及是否會操作HTML頁面。如果你是一名軟件工程師,你給出的答案是肯定的,但這並不意味著你是一個全棧開發人員,因為全棧開發人員這個術語本身沒有任何意義。實際的情況是,任何技術都對於其專門的崗位,例如UI工程師,Java工程師,PHP工程師,運維工程師,DBA,網絡工程師,系統架構師等等,他們都有著自身專注的領域,如果按照全棧工程師的定義,一個UI工程師不具備 系統架構的能力,那麼是否就可以說他不是一名軟件工程師呢?這是一種錯誤的認識。我們不能將描述技術解決方案的術語轉嫁到具體的開發崗位上,因為人不能代表一個完整的技術解決方案。

全棧開發的神話和謊言

​ 對於企業,當其想要招聘一個“全棧工程師”時,就像在找“五彩斑斕的黑”一樣沒有意義,因為它根本就不存在。只有不同色度的黑色,而不存在如彩虹般絢爛的黑色。但奇怪的是,當涉及此問題是,面試者往往會列舉很多案例來證明他是全棧開發人員,這是因為他要取悅面試官,沒有任何人會說自己是“半吊子”工程師,更不會說自己不是軟件工程師,所以才導致一個謊言只能換來另外一個謊言的結局。當你有招聘“全棧工程師”的想法時,不妨將其更換為“優秀的軟件工程師”,“高級Java工程師”,“經驗豐富的UI工程師”或者“五年以上工作經驗的軟件工程師”這一類術語更為有效。明確需求,才能找到合適的人選,細化問題,才能得到真實的答案。

​ 如果公司正處於初創期或者只有一兩名開發人員,在資源(人力,財力)相對缺乏的情況下,“全棧開發人員”確實很誘人,也很適合你。因為在這種情況下你別無選擇,你只能相信“全棧開發人員”能夠為你提供一套完整的技術解決方案,併成功實施該它。但也不能因為開發人員數量少而將人和方案等同起來,在這種情況下,你所說的“全棧開發人員”應該是指公司的技術領袖,他們對軟件開發有著強大的知識儲備,同時具備較好的編程能力,能在創業初期為你提供最小化的,可用的技術解決方案以及MVP(Minimum Viable Product,即最小化可用產品)。當你的公司步入成長期時,需要摒棄尋找“全棧工程師”這種無意義的想法。因為在此時期,需要完善最小化的技術解決方案,將解決方案進行拆分,投入更多的人力(開發人員)到各子方案中,才有可能使一個完整的技術解決方案得以順利實施。這是一個技術組件的綜合體,並不是單靠個人能完成的任務。在實際的開發工作中,為了解決方案種涉及的技術問題,公司工作崗位上會出現如系統架構師,項目經理,數據分析師,UI/UX工程師,DBA,Java工程師,IOS工程師,Android工程師,測試工程師等一系列配套的角色,各角色之間分工明確,各司其職。一個人無論其能力再強,也無法在同一時間內,完成多個角色的多項工作,除非公司能排除時間因素,在軟件開發的總體擁有成本中(TCO)將時間範圍(Time Scope)剔除。任何以盈利為最終目的的商業公司都不會允許這種愚蠢的事情發生。因此,“全棧工程師”對於企業而言,也是一個神話臆想和天大的謊言。

全棧開發的神話和謊言

​ 下面,我們再從技能組成上來分析為什麼說全棧開發者是一個謊言。以Java Web開發為例,如果“全棧開發人員”不是一個神話,那麼他需要在有限的時間內,高質量的完成下表所列舉的工作。表中列舉的內容並非完整內容,只是列舉了一些相對重要的知識點。在這其中,一些技能可能只需數個小時即可掌握,而有一些技能需要數月甚至數年才能融會貫通。人們對於“全棧開發人員”的期望遠遠超出了普通人的適應能力,甚至有些“喪心病狂”。

"

最近幾年,在軟件開發(尤其是Web開發)領域,“全棧工程師”成為了開發者津津樂道的熱詞。你或許會聽到這樣一些話語:“我正在學習全站開發”,“我是全棧工程師”,”我們正在招聘全棧工程師“。那麼,”全棧“到底意味著什麼?出自什麼地方?具體含義是什麼?帶著這樣三個問題,我們將一步步去揭露全棧工程師的神話與謊言。

全棧開發的神話和謊言

​ 也許你不止一次的看到過且認為下面的這個等式是正確的,而且高大上:

全棧開發的神話和謊言

如果這個等式在軟件開發中是一個真命題,那麼我們可以得出這樣一個推導式:

全棧開發的神話和謊言

那麼,如果一個軟件開發人員不會前端或者後端,亦或是不會基礎架構開發,那麼他就不是軟件工程師。顯然,這樣的推論是不正確的,也就是說上述關於全棧工程師的定義在軟件開發中是荒謬的,是一個被精心包裝過的神話。

”full stack“(全棧)一詞只是一個商業上的流行語,而不是指代具體的工程或者某一種技術。真正的軟件開發者不會用”全棧“一詞來描述自己的技術,”全棧開發“是一個沒有任何意義的定義,它就好比”五彩斑斕的黑“一樣荒謬。也許使用這一詞語的開發者是想在應聘時取悅面試官,留下比較好的印象,因為誰都不想在面試上表現平平,對於招聘者而言,當他們提及”全棧“一詞時,更多的是想尋找一個技術領袖,而非真正的”全棧“開發。

​ 那麼“全棧開發”這個技術神話,是如何被成功塑造出來的呢?

​ “全棧開發”杜撰於商業解決方案中對技術問題的描述,全棧是指一個包含完整技術解決方案的全部技術框架。以Web開發為例,全棧就意味著從前端(用戶交互界面)到後端(業務系統,數據庫,操作系統等)的全套技術套件。而這種端到端(客戶端-服務器端)的解決方案需要依賴於諸多技術,如TCP/IP協議,硬件設施,防火牆,路由,負載均衡,網絡代理,Web容器,數據存儲,操作系統等。這裡的全棧,更為明確的是指代技術的完整性,即全棧開發等同於完整的技術解決方案:

全棧開發的神話和謊言

從表面上看,全棧開發工程師很合乎邏輯,它也成了技術大咖一種能力的象徵。前面說過,全棧開發意味著完整的技術解決方案,如果全棧開發工程師這一命題成立,那麼相當於一名全棧工程師就代表這一個完整的技術解決方案,很明顯,這是一個偽命題。即便是一個天才或者通才,他也不能說自己所掌握的開發技術代表著一個完整的解決方案,這就是為什麼說全棧工程師只是一個神話的原因。

​ 接下來,讓我們看看一些生活中常見的例子,以揭示全棧開發工程師中所隱藏的謊言。

​ 對於開發者,當被問及“你是全棧開發人員嗎?”,其實他正真的意思是想知道你是否會使用數據庫,操作系統,使用一種或更多的編程語言編寫業務代碼,以及是否會操作HTML頁面。如果你是一名軟件工程師,你給出的答案是肯定的,但這並不意味著你是一個全棧開發人員,因為全棧開發人員這個術語本身沒有任何意義。實際的情況是,任何技術都對於其專門的崗位,例如UI工程師,Java工程師,PHP工程師,運維工程師,DBA,網絡工程師,系統架構師等等,他們都有著自身專注的領域,如果按照全棧工程師的定義,一個UI工程師不具備 系統架構的能力,那麼是否就可以說他不是一名軟件工程師呢?這是一種錯誤的認識。我們不能將描述技術解決方案的術語轉嫁到具體的開發崗位上,因為人不能代表一個完整的技術解決方案。

全棧開發的神話和謊言

​ 對於企業,當其想要招聘一個“全棧工程師”時,就像在找“五彩斑斕的黑”一樣沒有意義,因為它根本就不存在。只有不同色度的黑色,而不存在如彩虹般絢爛的黑色。但奇怪的是,當涉及此問題是,面試者往往會列舉很多案例來證明他是全棧開發人員,這是因為他要取悅面試官,沒有任何人會說自己是“半吊子”工程師,更不會說自己不是軟件工程師,所以才導致一個謊言只能換來另外一個謊言的結局。當你有招聘“全棧工程師”的想法時,不妨將其更換為“優秀的軟件工程師”,“高級Java工程師”,“經驗豐富的UI工程師”或者“五年以上工作經驗的軟件工程師”這一類術語更為有效。明確需求,才能找到合適的人選,細化問題,才能得到真實的答案。

​ 如果公司正處於初創期或者只有一兩名開發人員,在資源(人力,財力)相對缺乏的情況下,“全棧開發人員”確實很誘人,也很適合你。因為在這種情況下你別無選擇,你只能相信“全棧開發人員”能夠為你提供一套完整的技術解決方案,併成功實施該它。但也不能因為開發人員數量少而將人和方案等同起來,在這種情況下,你所說的“全棧開發人員”應該是指公司的技術領袖,他們對軟件開發有著強大的知識儲備,同時具備較好的編程能力,能在創業初期為你提供最小化的,可用的技術解決方案以及MVP(Minimum Viable Product,即最小化可用產品)。當你的公司步入成長期時,需要摒棄尋找“全棧工程師”這種無意義的想法。因為在此時期,需要完善最小化的技術解決方案,將解決方案進行拆分,投入更多的人力(開發人員)到各子方案中,才有可能使一個完整的技術解決方案得以順利實施。這是一個技術組件的綜合體,並不是單靠個人能完成的任務。在實際的開發工作中,為了解決方案種涉及的技術問題,公司工作崗位上會出現如系統架構師,項目經理,數據分析師,UI/UX工程師,DBA,Java工程師,IOS工程師,Android工程師,測試工程師等一系列配套的角色,各角色之間分工明確,各司其職。一個人無論其能力再強,也無法在同一時間內,完成多個角色的多項工作,除非公司能排除時間因素,在軟件開發的總體擁有成本中(TCO)將時間範圍(Time Scope)剔除。任何以盈利為最終目的的商業公司都不會允許這種愚蠢的事情發生。因此,“全棧工程師”對於企業而言,也是一個神話臆想和天大的謊言。

全棧開發的神話和謊言

​ 下面,我們再從技能組成上來分析為什麼說全棧開發者是一個謊言。以Java Web開發為例,如果“全棧開發人員”不是一個神話,那麼他需要在有限的時間內,高質量的完成下表所列舉的工作。表中列舉的內容並非完整內容,只是列舉了一些相對重要的知識點。在這其中,一些技能可能只需數個小時即可掌握,而有一些技能需要數月甚至數年才能融會貫通。人們對於“全棧開發人員”的期望遠遠超出了普通人的適應能力,甚至有些“喪心病狂”。

全棧開發的神話和謊言

​ 如果你是一名“全棧開發人員”,那麼就意味著需要對每一種技術組件都有足夠的理解,以便在方案實施的過程中快速作出合理的決策,並能夠利用該項技術完成系統的開發。與此同時,還需要有較強的溝通能力,能夠以簡單明瞭的語言向上層決策者闡明使用該技術的必要性和合理性。但眾所周知的是,各種技術組件的迭代更新週期遠比我們掌握的速度快,每隔幾個月,或者幾年,就會有新的技術組件發佈,作為“全棧開發人員”就需要在解決方案,方案實施,學習新組件這三者之間疲於奔命,如果有一種或幾種技術組件不能及時掌握,抑或是無法掌握,那是否可以做出這樣的判斷:你將不再是一名軟件工程師呢?顯然,這是一種錯誤的,不合理的定義。

​ 既然說“全棧開發人員”是一個神話,那現在該如何正確的理解這個詞呢?

​ 就我的理解而言,如果被問及“是否是全棧開發人員”,正確的回答是:“我是一名優秀的軟件工程師”。如果對方不理解其中的含義,那麼他可能是一個對軟件工程缺乏認知的人,對軟件開發的整套流程知之甚少,對於樣的人,可以忽視其問題的存在。上述的回答有兩層的含義,第一是具有完整的軟件工程專業知識,這些知識體系能幫助開發者在提出解決方案時合理的選擇相應的技術組件,其次是具備較強的學習能力和編碼能力,能夠在有限的時間範圍內專注於完成一件事情並協同其他人員完成開發任務。因此,應該將“全棧開發”一分為二,分為“全棧”和“開發”,前者表示完整的計算機理論知識,後者則表示豐富的編碼經驗。此時再將二者結合則有一個合理的定義:利用完整的計算機知識,完成產品的研發工作。

"

最近幾年,在軟件開發(尤其是Web開發)領域,“全棧工程師”成為了開發者津津樂道的熱詞。你或許會聽到這樣一些話語:“我正在學習全站開發”,“我是全棧工程師”,”我們正在招聘全棧工程師“。那麼,”全棧“到底意味著什麼?出自什麼地方?具體含義是什麼?帶著這樣三個問題,我們將一步步去揭露全棧工程師的神話與謊言。

全棧開發的神話和謊言

​ 也許你不止一次的看到過且認為下面的這個等式是正確的,而且高大上:

全棧開發的神話和謊言

如果這個等式在軟件開發中是一個真命題,那麼我們可以得出這樣一個推導式:

全棧開發的神話和謊言

那麼,如果一個軟件開發人員不會前端或者後端,亦或是不會基礎架構開發,那麼他就不是軟件工程師。顯然,這樣的推論是不正確的,也就是說上述關於全棧工程師的定義在軟件開發中是荒謬的,是一個被精心包裝過的神話。

”full stack“(全棧)一詞只是一個商業上的流行語,而不是指代具體的工程或者某一種技術。真正的軟件開發者不會用”全棧“一詞來描述自己的技術,”全棧開發“是一個沒有任何意義的定義,它就好比”五彩斑斕的黑“一樣荒謬。也許使用這一詞語的開發者是想在應聘時取悅面試官,留下比較好的印象,因為誰都不想在面試上表現平平,對於招聘者而言,當他們提及”全棧“一詞時,更多的是想尋找一個技術領袖,而非真正的”全棧“開發。

​ 那麼“全棧開發”這個技術神話,是如何被成功塑造出來的呢?

​ “全棧開發”杜撰於商業解決方案中對技術問題的描述,全棧是指一個包含完整技術解決方案的全部技術框架。以Web開發為例,全棧就意味著從前端(用戶交互界面)到後端(業務系統,數據庫,操作系統等)的全套技術套件。而這種端到端(客戶端-服務器端)的解決方案需要依賴於諸多技術,如TCP/IP協議,硬件設施,防火牆,路由,負載均衡,網絡代理,Web容器,數據存儲,操作系統等。這裡的全棧,更為明確的是指代技術的完整性,即全棧開發等同於完整的技術解決方案:

全棧開發的神話和謊言

從表面上看,全棧開發工程師很合乎邏輯,它也成了技術大咖一種能力的象徵。前面說過,全棧開發意味著完整的技術解決方案,如果全棧開發工程師這一命題成立,那麼相當於一名全棧工程師就代表這一個完整的技術解決方案,很明顯,這是一個偽命題。即便是一個天才或者通才,他也不能說自己所掌握的開發技術代表著一個完整的解決方案,這就是為什麼說全棧工程師只是一個神話的原因。

​ 接下來,讓我們看看一些生活中常見的例子,以揭示全棧開發工程師中所隱藏的謊言。

​ 對於開發者,當被問及“你是全棧開發人員嗎?”,其實他正真的意思是想知道你是否會使用數據庫,操作系統,使用一種或更多的編程語言編寫業務代碼,以及是否會操作HTML頁面。如果你是一名軟件工程師,你給出的答案是肯定的,但這並不意味著你是一個全棧開發人員,因為全棧開發人員這個術語本身沒有任何意義。實際的情況是,任何技術都對於其專門的崗位,例如UI工程師,Java工程師,PHP工程師,運維工程師,DBA,網絡工程師,系統架構師等等,他們都有著自身專注的領域,如果按照全棧工程師的定義,一個UI工程師不具備 系統架構的能力,那麼是否就可以說他不是一名軟件工程師呢?這是一種錯誤的認識。我們不能將描述技術解決方案的術語轉嫁到具體的開發崗位上,因為人不能代表一個完整的技術解決方案。

全棧開發的神話和謊言

​ 對於企業,當其想要招聘一個“全棧工程師”時,就像在找“五彩斑斕的黑”一樣沒有意義,因為它根本就不存在。只有不同色度的黑色,而不存在如彩虹般絢爛的黑色。但奇怪的是,當涉及此問題是,面試者往往會列舉很多案例來證明他是全棧開發人員,這是因為他要取悅面試官,沒有任何人會說自己是“半吊子”工程師,更不會說自己不是軟件工程師,所以才導致一個謊言只能換來另外一個謊言的結局。當你有招聘“全棧工程師”的想法時,不妨將其更換為“優秀的軟件工程師”,“高級Java工程師”,“經驗豐富的UI工程師”或者“五年以上工作經驗的軟件工程師”這一類術語更為有效。明確需求,才能找到合適的人選,細化問題,才能得到真實的答案。

​ 如果公司正處於初創期或者只有一兩名開發人員,在資源(人力,財力)相對缺乏的情況下,“全棧開發人員”確實很誘人,也很適合你。因為在這種情況下你別無選擇,你只能相信“全棧開發人員”能夠為你提供一套完整的技術解決方案,併成功實施該它。但也不能因為開發人員數量少而將人和方案等同起來,在這種情況下,你所說的“全棧開發人員”應該是指公司的技術領袖,他們對軟件開發有著強大的知識儲備,同時具備較好的編程能力,能在創業初期為你提供最小化的,可用的技術解決方案以及MVP(Minimum Viable Product,即最小化可用產品)。當你的公司步入成長期時,需要摒棄尋找“全棧工程師”這種無意義的想法。因為在此時期,需要完善最小化的技術解決方案,將解決方案進行拆分,投入更多的人力(開發人員)到各子方案中,才有可能使一個完整的技術解決方案得以順利實施。這是一個技術組件的綜合體,並不是單靠個人能完成的任務。在實際的開發工作中,為了解決方案種涉及的技術問題,公司工作崗位上會出現如系統架構師,項目經理,數據分析師,UI/UX工程師,DBA,Java工程師,IOS工程師,Android工程師,測試工程師等一系列配套的角色,各角色之間分工明確,各司其職。一個人無論其能力再強,也無法在同一時間內,完成多個角色的多項工作,除非公司能排除時間因素,在軟件開發的總體擁有成本中(TCO)將時間範圍(Time Scope)剔除。任何以盈利為最終目的的商業公司都不會允許這種愚蠢的事情發生。因此,“全棧工程師”對於企業而言,也是一個神話臆想和天大的謊言。

全棧開發的神話和謊言

​ 下面,我們再從技能組成上來分析為什麼說全棧開發者是一個謊言。以Java Web開發為例,如果“全棧開發人員”不是一個神話,那麼他需要在有限的時間內,高質量的完成下表所列舉的工作。表中列舉的內容並非完整內容,只是列舉了一些相對重要的知識點。在這其中,一些技能可能只需數個小時即可掌握,而有一些技能需要數月甚至數年才能融會貫通。人們對於“全棧開發人員”的期望遠遠超出了普通人的適應能力,甚至有些“喪心病狂”。

全棧開發的神話和謊言

​ 如果你是一名“全棧開發人員”,那麼就意味著需要對每一種技術組件都有足夠的理解,以便在方案實施的過程中快速作出合理的決策,並能夠利用該項技術完成系統的開發。與此同時,還需要有較強的溝通能力,能夠以簡單明瞭的語言向上層決策者闡明使用該技術的必要性和合理性。但眾所周知的是,各種技術組件的迭代更新週期遠比我們掌握的速度快,每隔幾個月,或者幾年,就會有新的技術組件發佈,作為“全棧開發人員”就需要在解決方案,方案實施,學習新組件這三者之間疲於奔命,如果有一種或幾種技術組件不能及時掌握,抑或是無法掌握,那是否可以做出這樣的判斷:你將不再是一名軟件工程師呢?顯然,這是一種錯誤的,不合理的定義。

​ 既然說“全棧開發人員”是一個神話,那現在該如何正確的理解這個詞呢?

​ 就我的理解而言,如果被問及“是否是全棧開發人員”,正確的回答是:“我是一名優秀的軟件工程師”。如果對方不理解其中的含義,那麼他可能是一個對軟件工程缺乏認知的人,對軟件開發的整套流程知之甚少,對於樣的人,可以忽視其問題的存在。上述的回答有兩層的含義,第一是具有完整的軟件工程專業知識,這些知識體系能幫助開發者在提出解決方案時合理的選擇相應的技術組件,其次是具備較強的學習能力和編碼能力,能夠在有限的時間範圍內專注於完成一件事情並協同其他人員完成開發任務。因此,應該將“全棧開發”一分為二,分為“全棧”和“開發”,前者表示完整的計算機理論知識,後者則表示豐富的編碼經驗。此時再將二者結合則有一個合理的定義:利用完整的計算機知識,完成產品的研發工作。

全棧開發的神話和謊言

​ 企業需要技術領袖而非技術神話,但不是每一個開發人員都是技術領袖。如果將企業比作一個“養殖場”,那麼開發人員就好比被“飼養”的“動物”,技術大咖或者技術領袖好比是牛,牛體型大,輸出的產品值高,但其“飼養”週期長,成本高,在短時間內很難有明顯的產出,且適應市場需求變化的能力較差;作為“養殖場”的“飼養員”,不能一味的只“養殖”牛,還應根據消費市場的變化,養殖雞,鴨,鵝,兔等寵物(小體型)級別的“經濟動物”。這些寵物的特點是“生長”週期短,“飼養”成本低,且在有限時間範圍內能夠靈活的適應市場需求,單位時間內輸出的經濟產值遠比牛的高。軟件開發者需要完整的知識儲備而不是自欺欺人的技術謊言,完整的,成體系的計算機知識,以及精益求精的專注精神,才能讓自己稱為一名優秀的軟件工程師,架構師或者技術專家。

​ 如果你現在是一名軟件開發的求職者,是時候對“全棧開發人員”這種神話堅決說不,粉碎“全棧工程師”的謊言,勇於的對自己的技能做出明確定義,如Web工程師,Android工程師,IOS工程師或者系統架構師;如果你是一名面試主官,請不要再使用“全棧工程師”,“全棧開發人員”這類毫無意義的詞彙,可以更換為更具體的”UI工程師”,“系統架構師”或“技術專家”,無需要使用“我們的技術人員都是全棧開發者”這類謊言來安慰決策者和員工,請將“全棧”一詞用於描述完整的技術解決方案中。軟件開發作為一種講究科學性,嚴謹性,系統性的工作,不需要神話和謊言來粉飾,腳踏實地才是王道。作為一名優秀的軟件工程師(軟件開發人員),需要使自身的計算機知識體系化,完整化,專業化,專注於某一領域而博覽眾長,才是對“全棧”最好的詮釋。對於企業,需要“核常”兼備,全面發展,維繫好寵物與牛之間的平衡關係,才能為用戶提供正真意義上的全棧解決方案。

"

相關推薦

推薦中...