01 | 我不想成爲一個全棧開發工程師

I don't want to be a full-fullstack developer

I am a Ruby Developer. I am a fullstack web dev. And I am tired of being one. I am also tired of being a business analyst and a manual QA at times. As years go by the industry is going deeper and deeper down the rabbit hole of developer-focused engineering process and developers go on to combine more and more responsibilities beneath the surface of single cranium.git

我是一個 Ruby 開發者。我是一個全棧web開發者。可是,我已經厭倦這樣的工做角色了。有時,業務分析師和手動測試工程師的工做,也令我倍感厭倦。隨着時間的推移,這一行業正在愈來愈深地陷入了以開發人員爲中心的工程流程,開發人員一人承擔愈來愈多的責任。github

Long time ago in the prehistoric Internet

There were DBAs long time ago, you are quite rare to find a beast like that in the shadows of cubicles nowadays. Indeed.com search yields 7k results on the term fullstack web developer and 40k for just web developer. The separate roles of UX Engineer and Frontend Developer are also slowly being blended together on the premise of working on essentially the same thing. More and more agencies are looking for people who can do both frontend and backend, also participating in the business requirement development, writing unit and integration tests, being everywhere and doing everything.web

好久之前就有DBA了,可是如今你很難在小隔間裏看到他們了。在 Indeed.com 上對這些術語進行檢索,會發現全棧工程師大約有7k條檢索結果,web開發者大約有40k條結果。UE和FE的角色也慢慢的混雜在一塊兒,前提是他們本質上在作一樣的事情。愈來愈多的代理在尋找那些先後端均可以作的人,他們須要參與業務需求開發,寫單元/集成測試,他們會出如今任何地方,而且作任何事情。數據庫

Cut the cost, take the rest

That seems like a great idea at first, a person knows and does everything needed from scratch to shipped feature, controlling the whole process. It is easier for the business: you need to check with one person and process of development does not get too complicated with ‘who does what’ issues, it also cuts the costs making a little tradeoff with quality and development time. Communication and context switching also don’t influence the people anymore as they go through the whole process rather than picking it up from where their successor in the chain left off. That seems like a nice enhancement… …if you don’t know a thing about how those professionals you crammed into one person actually work.後端

這起初看來是個好主意,有這麼一我的瞭解需求並且從零開始完成所需的一切功能,可以控制整個流程。對於企業來講,這是更加容易的:企業只須要與一我的進行覈實,且開發流程不會再出現"那是誰作的"複雜的問題,在質量和開發時間作權衡的成本也能下降。並且,因爲他們經歷了整個過程,而不是從前任留下的工做開始,所以交流和環境變換也不會給他們帶來什麼影響,這看上去彷佛是一個很好的加強作法……若是你對那些專業人員一無所知,那你就會把這些專業人員的角色都塞到一我的身上。瀏覽器

Complexity strikes back

Backend development is a complex field, including understanding of network layer, the way servers work overall, deployment, AWS/Google/Azure services(they are vital to modern web applications), specifics of server application language and framework, protocols used, authentication, database connectivity and setup and a lot of other things. Frontend includes solid knowledge of web standards, quirks and oddities of particular browsers, ES5, ES6, CSS, HTML, frameworks, preprocessors, transpilers, build tools, UX, UI, networking from the browser perspective, browser storages, sometimes even specifics of mobile apps with Flutter, Ionic and React Native. Don’t even get me started on business analyst and QA roles for they are completely different bowls or rice.安全

後端開發是一個複雜的領域,包括理解網絡層,服務器的總體工做方式,部署,AWS/Google/Azure服務(對於如今流行的web應用來講他們是相當重要的),特定的服務語言和框架,使用的協議,認證,數據庫鏈接,設置以及其餘的事情。FE包括紮實的web標準知識、特定瀏覽器的怪癖和古怪之處、ES五、ES六、CSS、HTML、框架、預處理程序、轉置器、構建工具、UX、UI、從瀏覽器角度的網絡、瀏覽器存儲,有時甚至還包括與 Flutter、Ionic 和 React Native 有關的移動應用的細節。不要讓我討論業務分析師和測試工程師的角色,由於對我來講這倆是徹底不一樣的領域。服務器

Each of this roles has its own learning curve and essential skills to master. You can’t just expect a person to read a few articles or a book, write a sample app and start bringing a good result. The result will always be somehow substandard. If you hire a fullstack web developer, you don’t hire an equivalent of two half-time specialists at once, you hire one normal and one impaired(in the best case, you may as well get the equivalent of two so-so half-time devs). It requires devotion and motivation to keep track and stay relevant and brilliant even in one field, put aside two or more. Time is finite. You cannot succeed in two unless you have no personal life and time for yourself.網絡

每一個角色都有本身的學習曲線和須要掌握的基本技能。你不能奢望一我的只閱讀幾篇文章或者一本書,編寫一個應用程序示例,而後就能夠給你帶來好結果。但你要知道,結果老是不盡如人意。若是你僱傭了全棧 Web 開發工程師,那麼你就不會同時僱傭至關於兩個半職專家的人員,而是會同時僱傭一個熟練的工程師和一個不熟練的工程師(在最好的狀況下,你也能夠獲得至關於兩個還說得過去的半職開發工程師)。即便在一個領域,也須要投入和動力,以保持相關性和卓越性,而不是投入兩個或更多的領域上。由於時間是有限的。除非你放棄了本身的我的生活和時間,不然你不可能會在這些領域都得到成功。app

Wider or deeper?

廣度仍是深度?

Don’t get me wrong, I think it is good to widen up the field of knowledge and employ understanding of your parts surrounding to do a better job on your section, but making developers be Jacks of all trades directly influences code quality, choice of solutions and the future of the project developed. Space in our heads is finite. We may fill it in with either deeper and better knowledge of one or a few fields or start chewing information on the multitude of domains resulting in superficial knowledge of everything. This knowledge creates a bubble of confidence that unfortunately does not justify itself, resulting in worse solutions and reinventing the wheel/employing wrong technique/banging the nails with a microscope.

不要誤解我,我認爲拓寬知識面,運用你如今領域涉及到的其餘領域的理解去更好的完成你的工做是一件好事。可是要使得開發人員成爲在各領域樣樣都懂卻無一精通會直接影響代碼的質量,解決方案以及所開發項目的將來。咱們頭腦中的空間是有限的。咱們能夠用一個或幾個領域更有深度和更好的知識填充它,也能夠咀嚼大量領域的信息從而致使在任何事情上都只能擁有膚淺的知識。這種認識製造了自信心泡沫,不幸的是,這個泡沫並不能證實本身是正確的,結果致使了更糟糕的解決方案以及重複造輪子/應用錯誤的技術/使用顯微鏡釘釘子。

 

Not all cuts are equally healthy

並不是全部消減都是健康的

Fullstack is interesting because is seems to be almost unique to the software engineering field. Other fields mostly have more division of labour, you don’t expect the dentist to cure your heart and neurosurgeon to fix your hemorrhoids. The reason it is employed in software engineering seems for to be the fact of virtual and failsafe nature of the field. Your code quality does not directly influence the outcomes visible for users, so you can hack around with patchy solutions long enough before the thing falls apart(and frequently it does when you are not around anymore). Also, that idea seems appealing on the intuitive level for money spending, hiring person with broader skills(no matter quality) may look like doing more for the same cost.

全棧由於其看起來在軟件工程領域是獨一無二的因此頗有趣。其餘領域大多都有更多勞動分工,你不能期望牙醫去修復你的心臟,神經外科醫生治療痔瘡。全棧被應用在軟件工程領域的緣由看起來是由於這一領域的虛擬性和故障安全特性。代碼質量不直接影響用戶可見的結果,所以,你能夠在事情奔潰以前足夠長的時間裏,你都會用零碎的解決方案來解決它(當你不在的時候,它會常常的奔潰)。所以,你大能夠在系統崩潰以前,長期使用補丁解決方案進行修補(一般是你不在時常常會出現這種狀況)。並且,這個想法彷佛在金錢支出上更吸引人,僱傭那些擁有更普遍技能的人(不管質量如何)可能看起來是用一樣的成本作更多的事情。

We get mediocre solutions created by people who don’t have enough expertise in the particular field to see the better way, with a sketchy knowledge filled with Stackoverflow answers and copy-paste. We get people who stay stale in their improvements, having to keep up with too many topics. We get the professionals that don’t create amazing things because they don’t have time to dig in enough time to actually create some value to the field. We get substandard products by lower development price that fades off after the bugs and lost customers come in because of issues the projects inevitably face when developed in such the fashion. Fullstack may be worth it from the short-term economical perspective, but it is harmful for the industry overall and for the projects we build.

咱們獲得了一些平庸的解決方案,而這些方案的提出者就是那些在特定領域內沒有足夠專業且不會再找到更好方法解決這件事的人們所提出。他們只掌握了粗淺的知識,而這些知識一般都是來自Stackoverflow的回答或者複製粘貼的內容。咱們使得這些人們在提高本身上選擇固步自封,他們不得不跟上太多的話題。咱們使得專業人士沒有創造出驚人的東西,由於他們沒有足夠的時間去爲這個領域創造價值。咱們以較低的開發價格得到不合格的產品,這些產品的bug出現後,漸漸失去客戶,最後整個產品逐漸消失,這是由於以這種方式開發項目,項目不可避免地會遇到問題。從短時間的經濟角度來看,Fullstack多是值得的,但它對整個行業和咱們建設的項目都是有害的。

 

原文:https://artur-martsinkovskyi.github.io/2019/i-dont-want-to-be-fullstack/

InfoQ:https://www.infoq.cn/article/girKQeiW9YXAt*k9ujfB

相關文章
相關標籤/搜索