剑网3指尖江湖职业推荐 www.1468054.com

導讀: 一提起“全棧開發工程師”,大家的印象肯定是:這號人啊,堪稱大神!會很多技術,前端后端都精通,不掌握七八種語言都不好意思出來打招呼,熱點技術名詞全都知道,也都會點兒;但是呢,單拿出某一項沒有一個能稱得上精通的,知識面廣則廣矣,但沒有一個精通的。現在還有些人覺得,全棧開發工程師代表了超高的戰斗力,什么都會的“Superman”。但是別忘了老祖宗的教導:術業有專攻。成為全棧開發工程師真的應該是我們的目標嗎?讓我們來看看 Artur Martsinkovskyi 是怎么說的,希望能給讀者帶來一些啟迪!


我除了是個 Ruby 開發人員外,還是個全棧 Web 開發工程師。但是,我已經厭倦了成為這樣的角色,有時候,讓我從事業務分析師和手動測試工程師的工作,也會令我倍感厭倦。隨著時間的推移,這一行業正在越來越深地陷入了以開發人員為中心的工程流程,不知不覺花掉了很多時間;而開發人員一人則承擔了越來越多的責任。

很久之前:史前互聯網

很久很久以前,就已經有 DBA(數據庫管理員)了。而現在你在小隔間里很難再找到這樣的數據庫管理人員了。如果你在 Indeed.com(全球領先的招聘網站)搜索“fullstack web developer”(全棧 Web 開發工程師),會得到 7000 多個結果,而如果你搜索“Web developer”(Web 開發工程師)則得到 40000 個結果。用戶體驗工程師和前端開發工程師的兩個不同的獨立角色也正在慢慢地融合在一起,前提是他們在工作本質上是相同的。越來越多的機構正在物色既能做前端又能做后端,還能參與業務需求開發、編寫單元和集成測試的全能大神,要求他無所不能,什么都能干。

消減成本,剩下的都拿走

乍一看,這似乎是個好主意,如果一個人知曉他的需求,完成了從白紙開始到發布所需的一切功能,并控制了整個過程。這對企業來說更為容易:你需要與一個人進行核實,并且開發過程不會因為“這塊應由誰來做”的問題而變得過于復雜,還可以降低成本,從而在質量和開發時間上取得一些折衷。而且,由于他們經歷了整個過程,而不是從前任留下的工作開始,因此交流和語境轉換也不會給他們帶來什么影響,這看上去似乎是一個很好的增強做法……如果你對那些專業人員一無所知,那你就會把這些專業人員的角色都塞到一個人身上。

反擊復雜性

后端開發是一個非常復雜的領域,涵蓋了對網絡層、服務器整體工作的方式、部署、AWS/Google/Azure 服務(它們對現代 Web 應用至關重要)、服務器應用程序語言和框架的細節、使用的協議、身份驗證、數據庫連接和設置以及許多其他內容的理解。前端則包括掌握扎實的 Web 標準、特定瀏覽器的怪癖和奇異之處、ES5、ES6、CSS、HTML、框架、預處理器、轉譯器、構建工具、用戶體驗、用戶界面、瀏覽器視角的網絡、瀏覽器存儲的知識,有時甚至還包括與 Flutter、Ionic 和 React Native 有關的移動應用的細節。不要讓我討論業務分析師和測試工程師的角色,因為對我來說這倆是完全不同的領域。

每個角色都有自己的學習曲線和需要掌握的基本技能。你不能奢望一個人只閱讀幾篇文章或者一本書,編寫一個應用程序示例,然后就可以給你帶來好結果。但你要知道,結果總是不盡如人意。如果你雇傭了全棧 Web 開發工程師,那么你就不會同時雇傭相當于兩個半職專家的人員,而是會同時雇傭一個熟練的工程師和一個不熟練的工程師(在最好的情況下,你也可以得到相當于兩個還說得過去的半職開發工程師)。即使在一個領域,也需要投入和動力,以保持相關性和卓越性,而不是投入兩個或更多的領域上。因為時間是有限的。除非你放棄了自己的個人生活和時間,否則你不可能會取得文體兩開花的成功。

廣度還是深度?

千萬不要誤解我的意思,我的本意是說,我認為拓寬知識面,運用對你所負責的部分的理解來更好地完成你所負責的部分,還是有好處的,但要讓開發人員成為這樣的一個人:對各種領域樣樣都懂但無一精通,如此一來,會直接影響代碼質量、解決方案的選擇以及所開發項目的未來。要知道我們的大腦空間是有限的,但我們可以對一個或幾個領域的更深、更好的知識來填充它,或者開始汲取多個領域的信息,結果得到的就是對所有事物都是膚淺的了解。這種知識體系創造了信心泡沫,不幸的是,這種信心并不能證明自己的正確性,結果導致了更槽糕的解決方案,如重新發明輪子、錯誤的技術選型、用顯微鏡敲釘子。

并非所有成本消減都是有益的

全棧很有趣,因為它似乎是軟件工程領域的獨特之處。其他領域大多都有分工,你不能指望牙醫能夠治愈你的心臟病,也不能指望神經外科醫生來治愈你的痔瘡。全棧應用于軟件工程的原因,似乎是因為這一領域的虛擬性和故障安全特性。你的代碼質量并不會直接影響用戶可見的結果,因此,你大可以在系統崩潰之前,長期使用補丁解決方案進行修補(通常是你不在時經?;岢魷終庵智榭觶?。此外,這種想法在金錢支出的直觀層面上來看似乎頗有吸引力,雇傭具有更廣泛技能的人(無論人才質量如何),看起來可能會讓人覺得,以同樣的成本能夠做更多的事情,真是美滋滋。

我們得到的是一些平庸的解決方案,這些解決方案都是由那些在特定領域沒有足夠專業知識,無法發現更好方法的人創建的,他們所掌握的知識都比較粗淺,略知一二,他們的知識體系都是一堆復制粘貼的答案。我們要讓那些故步自封的人必須跟上如此多的主題。我們雇來的專業人員并沒有創造出什么令人驚嘆的東西,因為他們沒有足夠的時間來為這個領域創造一些價值。我們以較低的開發成本進行開發,得到的是不合格的產品,這一狀況在出現 Bug 和客戶流失后就會逐漸消失。由于這些問題,項目以這種開發方式進行開發時將不可避免地會遇到。從短期經濟角度來看,雇傭全棧開發工程師可能是值得的,但長期來看,它對整個行業和我們建設的項目來說都是有害的。

余下全文(1/3)

本文最初發表在www.infoq.cn,文章內容屬作者個人觀點,不代表本站立場。

分享這篇文章:

請關注我們:

發表評論

電子郵件地址不會被公開。 必填項已用*標注