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

相关文章
相关标签/搜索