柯尔特斯蒂尔

在软件工程的世界里,全栈开发人员到底做什么,它与其他编程角色有什么不同?无论是好是坏,“全栈开发人员”是许多编程工作的常见标题。然而,并不是每个人都同意这个术语的含义。在这篇文章中,我们将介绍这个词的含义以及为什么它如此极端。

什么是堆栈?

在我们定义“完整堆栈”之前,有一个“堆栈”的工作定义是有帮助的。技术堆栈是公司用于构建应用程序的完整技术集。通常,一个堆栈包括一种或多种编程语言、库、服务器、数据库、框架和开发人员工具。

大多数科技公司乐于讨论其技术堆栈的组成部分,有些公司甚至会利用它们的堆栈来吸引潜在的员工。例如,根据网站StackShare, Pinterest的技术堆栈包括:

2021年网络开发者训练营

2021年9月

  • 610课
  • 所有级别
4.7 (215122)

完全重做-唯一的课程,你需要学习web开发- HTML, CSS, JS,节点,和更多!bob外围官网|由柯尔特斯蒂尔

探索课程

优步的技术包括:

栈的各个部分

我从上面的列表中省略了一些技术,但是您仍然可以看到现代技术堆栈变得相当复杂。在21世纪初,应用程序变得越来越复杂,开发人员开始专注于堆栈的两个部分:前端和后端。在我们深入研究两者之间的区别之前,让我们快速回顾一下互联网是如何工作的(在非常非常高的层次上)。

当你访问一个网页,比如udemy.com,您的计算机向服务器发送请求,请求特定的页面。你好,udemy.com,我想要你的主页。在Udemy总部的深处,服务器正在等待类似您的请求(实际上,这些服务器可能位于Amazon AWS设施的某个地方)。一旦服务器接收到您的请求,它的工作就是收集任何信息和代码,以构建特定的请求网页,然后将其发送回您的浏览器显示。这种循环请求和一个结果响应当你访问一个网站时,不管是facebook.com还是whattimeisit.com,都会在幕后发生。

当你请求像udemy.com这样的网页时,服务器并没有为你提供一个完美的网页,这一点很重要。相反,它用对一般人来说毫无意义的代码进行响应。浏览器的工作就是将代码转换成人类可读的网页。

整个过程有点像给你邮寄一盒你必须自己烹饪的食材的膳食包服务。首先,你请求一套套餐,比方说,杏鸡配香脂青豆。膳食包公司会收到你的要求,并为你做所有必要的工作:购买配料,包装它们,并为你创建说明。最终,该公司响应几天后,你会收到一盒生鸡胸肉、杏脯、香醋酱、青豆和一套烹饪指南。你还是没有吃到饭;在这一点上,它只是一系列的成分。你必须在自己的厨房里亲自准备饭菜。

这个比喻用一种笨拙的方式来解释,网页是运行在某处服务器上的代码和运行在浏览器上的代码的结果。就像我父母的婚姻顾问经常说的那样——双方都有工作要做!

后端开发人员

后端也称为服务器端,是运行在服务器上的“幕后”逻辑。在我们的餐包类比中,后端指的是餐包到达你家门口之前发生的事情。原料都是买来的,说明都写好了,所有的东西都包装好发给你了。类似地,当你请求一个像udemy.com,服务器需要做很多工作来为你创建网页“膳食包”。

这包括处理以下问题:

该用户已登录吗?或者他们是一个全新的用户?他们是否需要一个他们有权浏览的网页?如果有的话,他们已经拥有哪些课程?他们每门课都取得了多少进步?今天的热门话题是什么?每个话题中评分最高的课程是什么?我应该按什么顺序列出这些课程?我可以向用户推荐哪些课程,他们可能会喜欢?有什么课程在打折吗?这个用户有我应该告诉他们的任何通知或消息吗?

后端开发人员编写代码使所有这些工作。后端开发人员的角色是在给定的web应用程序中实现所有必要的“业务逻辑”。通常,这需要使用服务器、实际应用程序逻辑和数据库。正如您在前面的堆栈示例中看到的,许多公司同时使用多种编程语言和数据库。

最流行的后端脚本语言包括Java、Python和PHP,尽管Ruby、Node.js、Go、Scala和c++等其他语言也很常用。后端开发人员经常使用Django (Python框架)和Laravel (PHP框架)等服务器端框架。其他流行的框架包括Flask、Express、Spring、Phoenix和Ruby on Rails。这些工具帮助开发人员创建web应用程序并响应传入的请求;他们中的一些人还做得更多!

后端开发人员还经常处理复杂的数据,并与MySQL、PostgreSQL、MongoDB等数据库进行交互。

前端开发人员

“前端”指的是在浏览器中运行的web应用程序的部分。在我们之前的膳食包类比中,前端是你家里的厨房,你需要用你从邮件中收到的食材来组装膳食。当你请求一个像udemy.com,服务器构造一个网页,并将其发送回你的浏览器,但请记住,网页实际上只是一堆让浏览器运行的代码。前端开发人员编写这些代码。

Web浏览器了解三种主要工具:HTML、CSS和JavaScript。这些技术允许我们创建漂亮(或难看)的交互式网络应用程序。它们是任何前端开发人员的面包和黄油。每种工具都有特定的作用:

例如,当你在Facebook上发布一条新评论时,JavaScript代码会监听你点击“提交”或按下回车键。然后,它从表单中读取新的注释,并将数据发送到服务器,以便将其保存到数据库中(多亏了一些后端逻辑)。最后,它会更新当前网页,将您的新评论显示在现有评论的旁边。JavaScript还可以用于构建基于浏览器的游戏。

前端开发人员大部分时间都在使用这三种前端技术。此外,大多数现代web应用程序都是用JavaScript库和框架构建的,比如React、Angular和Vue,它们可以帮助开发人员管理复杂前端的创建。前端开发人员经常与网页设计人员和用户体验设计人员密切合作,为应用程序构建用户界面。许多初学者认为前端开发就是“装饰”和“让东西看起来很漂亮”,但事实并非如此bob外围官网!许多前端开发人员花时间解决浏览器限制带来的技术难题,并编写复杂的JavaScript逻辑。

完整堆栈开发人员

现在我们来到本文的中心问题:完整堆栈开发人员到底是什么?从理论上讲,完整堆栈开发人员是精通开发堆栈每个部分的编码万事通bob外围官网

与我们的膳食包类比一致,全栈开发人员构建膳食包并烹饪它。完整的堆栈开发者应该能够自己创建一个完整的web应用程序,包括前端和后端。他们应该一天编写JavaScript和CSS,第二天编写Python(或其他语言)和SQL,这些都是高级别的。这是理想状态,但实际可行吗?

近年来,这种全栈的定义受到了严重的抵制。开发者支持者Brian Rinaldi写道:“我不喜欢‘全栈开发者’这个术语。’我认为这让公司很容易提出不切实际的要求,并设定一个无法实现的标准,尤其是对于初级开发者。”

在当今这个超级复杂的应用程序和不断变化的技术的世界里,要保持对一种语言的最新趋势和工具的领先地位已经很困难了,更不用说栈的每个部分了。当然,也有一些优秀的开发人员对开发堆栈的每个部分都有深刻的、百科全书式的知识,但他们是例外。bob外围官网我们大多数人都是凡人,只是努力在不破坏应用程序、不崩溃成泪坑的情况下度过一天。

全栈的更现实的定义

现在,许多开发人员更喜欢完整堆栈开发人员的更容易实现、更广泛的定义。这个人在部分领域是专家,但在整个领域都能自如地工作。一个完整的堆栈开发人员可以从头开始编写整个应用程序,包括前端和后端代码,尽管它可能并不都是高级级别的。

IDEO首席执行官蒂姆•布朗使用“T型人”这个词来描述那些既有广泛的知识基础(“T”的水平部分)又在一个或多个领域拥有深厚的专业知识(“T”的垂直部分)的人。完整堆栈开发人员应该是“t形开发人员”。换句话说,一个完整的堆栈开发人员需要有广泛的经验和对整个堆栈的理解,并在某个专业领域有专门知识。考虑他们“万事通,至少精通一门。”

例如,一个假设的全栈开发人员可能对JavaScript、React和其他前端工具有专家级的经验,但他们也应该对编写基本的后端逻辑、使用数据库、实现身份验证和部署等感到舒适。在后端代码方面,他们可能比专门的后端开发人员“更弱”,但总的来说,他们拥有更全面的技能集。

为什么这个区别很重要

作为一名专业的开发人员并没有什么错。在许多情况下,专业的前端或后端专家更容易被聘用,而且可能要求更高的薪水。与此同时,许多公司需要拥有广泛技能的全能开发人员。这在初创公司和小型公司中尤其常见,因为这些公司的开发人员可能需要跨栈工作才能将产品推出市场。

它并不适合所有人,但作为一个完整的堆栈开发人员确实有它的一组优势。熟悉堆栈的所有部分会使您成为一个更“有同情心”的开发人员。充分理解应用程序的工作方式有助于您确定哪里可能出错。它使您能够与团队中更专业的开发人员进行协作和交流。最后,全栈开发人员可以使用他们的技能来构建自己的原型和辅助项目。

如果你是初学者,不要被这些职位的术语或标签所困扰。不要强迫自己去学习世界上所有的语言和框架。专注于一两个工具并坚持使用它们,不管在不同技术之间跳跃有多么诱人。

我建议所有初学者学习HTML、CSS和JavaScript,即使你打算成为后端开发人员。前端和后端之间的界限定义得很差,在您的旅程中可能会学到一些这两方面的知识。要成为“样样精通,样样不精”相对容易,但记住,这里的目标是成为“样样精通,但至少精通一门”,这需要更多的工作。

页面最后更新:2020年6月

Web开发的顶级课程bob外围官网

完成2021年Web开发训练营bob外围官网
安吉拉Yu博士
4.7 (150052)
畅销书
2021年网络开发者训练营
柯尔特斯蒂尔
4.7 (215122)
2021年的完整Web开发:从零到精通
安德烈Neagoie
4.7 (49644)
完整的2021年Web开发课程-构建15个项bob外围官网目
bob外围官网发展岛(英国)
4.5 (6073)
10兆响应网站与HTML, CSS和JavaScript
《代码与创造》,乔治·罗米兹,拉莎·诺扎兹
4.8 (450)
畅销书
用Go构建Web应用程序——中级水平
特雷福本纪念册
4.7 (29)
热&新
全栈Web开发训练营2021bob外围官网
Darragh奥尼尔
4.5 (703)
掌握Laravel并使用Laravel创建高级应用程序
JuanDMeGon, programa作者:JuanDMeGon
4.6 (125)
用HTML5, CSS3和Bootstrap构建现代响应式网站
艾尔达扬
4.8 (1123)
评价最高
SASS -完整的SASS课程(CSS预处理器)
《代码与创造》,乔治·罗米兹,拉莎·诺扎兹
4.6 (558)
畅销书

更多网页开发课程bob外围官网

网络开发bob外围官网的学生也要学习

让你的团队。领导行业。

通过Udemy for Business订阅您组织的在线课程和数字学习工具图书馆。

请求一个演示

柯尔特·斯蒂尔(Colt Steele)的课程