这篇文章不仅是对永无止境的通才与专家辩论的另一种看法。我们将研究一个特定领域的网络开发。我们不会谈论移动应用程序,机器学习,游戏开发以及其他任何内容;这篇文章仅与Web开发有关。因此,让我们从过去二十年来的简短历史开始。
在2000年代初期,当网络年轻时,前端开发人员之间的区别几乎不存在。浏览器并不像今天那么强大,网站看起来更简单。有些人专门从事HTML/CSS的工作,但这有些不同 - HTML是标记语言,而不是一种编程语言。但是,该行业已经非常活跃。 PHP,Java,Ruby,JavaScript,CSS,MySQL和Postgres均在1995年至1996年推出,我们今天仍然使用这些技术。到2000年,即使没有jQuery,开发人员已经建立了足够的网站到crash the stock market!但这将要改变。
2010-S:前端框架的崛起
主要转变发生在2010-S的某个地方,当时前端框架出现。 Trello是Trello,这是2011年发行的流行问题Trello。它建于Backbone.js框架上,该框架当时是尖端的技术。由于Trello使用了单页应用程序(SPA)体系结构,因此不需要整页重新加载即可与服务器进行交互。感觉很快! Trello非常受欢迎,这要归功于其良好的设计和慷慨的免费计划,因此许多人尝试了它并仍在使用它。
Trello当然不是第一个水疗中心。另一个著名的例子是Gmail,它于2004年推出。但是,Trello建于前端框架上,前端框架承诺将为您做大量的繁重工作。大约在2010年初,前端框架真正开始起飞:Backbone和Angular.js于2010年发行,Ember.js于2011年发行,2013年的React.js等等。
等等。我不确定这是纯粹的巧合还是特雷洛的流行结果,但是当时TODO list已成为一个规范的例子,展示了JS框架的能力。
。蜜蜂
同时在2010-S中有API的爆炸性增长:
许多组织意识到建筑物API可能是节省开发工作并更快地移动的一种方式。相同的API可以在Web应用程序和移动应用程序后面,并且在需要时可以将其暴露在外部并由外部集成使用。 REST API概念的广泛采用进一步提高了API的开发。
前端开发人员
前端框架在2010-S很热。人们在会议上谈论他们。当时,关于没有新JavaScript框架的X天的笑话并不是一个笑话。
一些网络开发人员对这些创新感到兴奋,而其他则不是很多。以前,CSS和JavaScript已经被许多人认为是一团糟。浏览器彼此不太兼容,因此需要许多CSS和JavaScript Hacks才能在所有浏览器中始终如一地工作。现在,添加了另一层复杂性。
,因此,一些开发人员开始专注于这一领域,并称自己为前端开发人员。这似乎是合理的,因为该行业正在迅速发展。所有额外的复杂性都需要额外的学习时间,而开发人员始终需要。许多传统的网络开发人员转变为后端开发人员,很高兴他们不得不应对那种不断变化的前端烂摊子。
API成为后端和前端之间自然的责任分离。后端开发人员将构建一个API,前端开发人员将在其顶部构建Web应用程序。
后端和前端角色的分离提供了两个主要好处:
-
招聘变得更加容易。由于减少了每个角色所需知识的范围,因此成为合格的开发人员所需的时间更少。此外,这种分离使人们可以选择自己喜欢的区域。有些人喜欢使用界面,而另一些人则喜欢使用数据库和算法的后端世界。
-
它允许更深入的专业化。再次,由于范围较小,人们将更快地成为其领域的专家。
有些人会争辩说,由于更高的专业化,更快和/或更好的质量发展还有其他好处,但并非总是如此。由于下一节中概述的原因。
全栈开发人员解决哪些问题
并不是每个人都跳上了那种后端 - 额定式分离火车。与前端开发人员同时,出现了全堆栈开发人员。他们被特别需要与后端和前端一起工作,就像过去的美好时光一样,但使用现代技术。 Facebook是一个臭名昭著的例子 - 曾经有一段时间他们自豪地说他们只雇用了全堆栈开发人员。您还可以在Google,Netflix和许多其他知名的组织中找到全栈职位。
为什么每个人都不拥抱那个前端的角色分离?好吧,因为它是不自由的。除上述好处外,还有一些问题,最著名的是:
要管理的额外依赖性。后端和前端分离引入了依赖性。前端开发人员依靠API,但不能自行构建它。结果,他们需要首先与后端开发人员进行交谈,同意API设计,然后等到后端开发人员实施它。如果他们在等待时没有其他任务要做,他们可以构建API模拟,同时使用它,然后用真正的API替换。如果以后他们发现API中缺少某些东西或不按预期工作,则需要再次与后端开发人员进行交谈,然后等待更新或修复。
平庸的API 通常是由于这种分离而出现的。有时,前端开发人员可以看到他们使用的API并不是完美的,但与此同时,他们可以用一些黑客处理它。当然,理想情况下,他们应该将其报告给后端开发人员并提出改进,但这需要一些摩擦,因此问题常常被忽略。对于后端开发人员而言,由于缺乏dog狗,他们的API可能会更难看到可用性问题。
工作负载分配问题,,尤其是在较小的团队中。在全堆栈开发人员团队中优先考虑工作要容易得多,因为所有这些都可以从事任何任务。该项目一生中后端VS-Frontend工作的百分比可能有所不同。凭借专用的后端和前端开发人员,他们的工作量通常是最佳的。前端开发人员可能会超过高优先级任务,而后端开发人员无法帮助他们,反之亦然。
某些技术穿越边界。让我们以服务器端渲染(SSR)为例。使用SSR,在服务器端,然后在浏览器中执行相同的代码。从技术上讲,它更接近前端,因为它提到了前端开发人员通常使用的框架。但是,前端开发人员将不再处于传统领域 - 他们将在服务器上运行代码。另一个示例是Ruby on Rails上的Hotwire,这是在2021年引入的。这采用了另一种方法,这表明在没有传统水疗中心和API的情况下为网页添加了交互性。 WebAssembly是可以在服务器和客户端上运行的高性能代码的另一个有趣的技术。
缺乏产品思维。由于全堆栈开发人员从事任务的各个方面的工作,因此他们倾向于更好地了解他们构建的内容。前端开发人员看到人们将如何与软件互动,但他们可能对其内部构造有模糊的了解。因此,他们可能很难确定什么容易构建,什么具有挑战性以及哪些优化是可能的。另一方面,后端开发人员非常了解内部设备,但他们可能不会从最终用户的角度看待该产品。
现代前端状态
自2010-S以来,前端开发发生了什么变化?好吧,很多事情,但最重要的是它已经成熟:
- 新的前端框架不再每隔一天出现。该领域的创新仍在继续,但它不再像2010-S那样疯狂的旅程;
- 浏览器改进了!我们不再需要代码库中的荒谬数量的CSS黑客。 flexbox和网格布局现在可以安全地用于大多数应用程序,因此我们最终可以将DIV中心;
- JavaScript有所改善,不仅是leftpad是accepted as a standard。语言,工具,框架,库,包装管理人员,捆绑机,衬里和测试工具方面有许多改进。而且它不再认为是一种缓慢的语言 - 它比后端上使用的一些流行语言(例如Python或Ruby)快;
- typeScript现在是那些喜欢更强大键入的人的标准事实。
这并不是说前端上的所有问题都已解决,但是今天,与十年前一起工作要容易得多。是的,仍然存在很大一部分复杂性,但它不再是一团糟,因此后端开发人员讨厌它的原因较少。
您应该聘请全栈开发人员吗?
这取决于。在您的项目领域,全堆栈开发人员在后端和前端之间几乎没有来回的开发人员无法受益。雇用专用的后端或前端开发人员更容易,而且很重要。
但是,如果后端和前端之间的相互作用定期进行,并且大多数任务都需要处理这两个部分 - 那么也许考虑至少雇用一些全堆栈开发人员。招聘会更加困难,但这肯定是可行的。自多年来,我们一直在ivelum雇用全堆栈开发人员以来,我就知道这是一方面的。如果您不从我这里拿走它,请从Google,Meta,Netflix等。确实存在高量合格的全堆栈开发人员,并且可以找到它们。
您还可以拥有一个混合动力团队 - 一些前端和后端开发人员以及一些全堆栈的人们都可以从两者中获得最好的作用。
您应该成为全栈开发人员吗?
当您阅读这些行时,我敢打赌您已经知道答案。如果您不想要专业化,那是完全可以的。如今,大多数工作优惠是针对前端或后端开发人员的,而且很快会更改。
如果您想尝试一下,请继续!即使您不打算申请全栈位置,对另一端发生的事情的更好理解也将帮助您看到大局并成为更有生产力的合作者。而且,如果您真的投资于此,您就可以申请更广泛的工作,并从头到尾构建完整的功能。
这是关于此主题的几个随机想法:
- 对于后端开发人员,切换到全堆栈开发可能会更容易。所需的额外知识范围是显着的,但比另一侧小;
- 对于前端开发人员,尝试Node.js可能会诱人。后端有很多东西要学习,并且有了节点,您不必从学习新的编程语言开始。
这就是我今天所拥有的。愉快的编码!