柯尔特斯蒂尔

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

什么是堆栈?

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

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

2021年的Web开发者训练营

最近更新于2021年4月

  • 614课
  • 所有级别
4.7 (201623)

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

探索课程

优步的技术堆栈包括:

堆栈的各个部分

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

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

重要的是要理解,当您请求一个像udemy.com这样的网页时,服务器不会响应一个完美的网页准备好供您使用。相反,它用对一般人来说毫无意义的代码作出回应。浏览器的工作就是将这些代码转换成人类可读的网页。

整个过程有点像一个食品工具包服务,邮寄给你一盒你必须自己烹饪的食材。首先,你请求一套餐包,比如杏脯鸡配香醋四季豆。餐饮用品公司会收到你的要求,并为你制作餐盒做所有必要的工作:购买食材,包装,并为你制作说明。最终,该公司响应带着餐包,几天后你会收到一盒生鸡胸肉,杏蜜饯,香醋酱,青豆,还有一套烹饪指南。你仍然没有吃到饭本身;在这一点上,它只是一组成分。你必须亲自动手在自己的厨房里准备饭菜。

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

后端开发人员

后端也称为服务器端,是运行在服务器上的“幕后”逻辑。在我们的餐包类比中,后端是餐包到达前门之前发生的事情。配料都是买来的,说明书都写好了,然后打包寄给你。类似地,当你请求一个像udemy.com,服务器必须做一堆工作,为您创建网页“meal kit”。

这包括处理以下问题:

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

后端开发人员编写代码使所有这些工作。后端开发人员的角色是在给定的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。这些技术允许我们创建漂亮(或丑陋)的交互式web应用程序。它们是前端开发人员的生计。每种工具都有特定的角色:

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

前端开发人员大部分时间都在使用这三种前端技术。此外,大多数现代web应用程序都是用React、Angular和Vue等JavaScript库和框架构建的,这有助于开发人员管理复杂前端的创建。前端开发人员通常与web设计人员和UX设计人员密切合作,为应用程序构建用户界面。许多初学者认为前端开发只是“装饰”和“使事物看起来漂亮”,但事实并非如此!bob外围官网许多前端开发人员把时间花在解决浏览器限制带来的技术挑战和编写复杂的JavaScript逻辑上。

完整的堆栈开发人员

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

与我们的餐包类比一样,一个完整堆栈的开发人员构建餐包并烹饪它。完整的堆栈开发者应该能够独立创建完整的web应用程序,包括前端和后端。他们应该一天适应编写JavaScript和CSS,一天适应编写Python(或其他语言)和SQL,这都是高级水平。这是理想情况,但实际可行吗?

近年来,对全栈的定义有很大的阻力。开发人员倡导者Brian Rinaldi写道:“我不是‘全栈开发人员’这个词的粉丝。’我认为这给了公司一种不切实际的要求,并设定了一个无法实现的标准,特别是对于初级开发者来说。”

在当今这个应用程序极其复杂、技术不断变化的世界里,要掌握一种语言的最新趋势和工具已经够难的了,更不用说堆栈的每个部分了。毫无疑问,有一些高级的开发人员对开发堆栈的每一部分都有深入的、百科全书式的知识,但他们是例外。bob外围官网我们中的大多数人都只是普通人,试图在不弄坏应用程序、不崩溃到泪流满面的情况下度过一天。

完整堆栈的更现实的定义

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

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

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

为什么这种区别很重要

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

这并不适合所有人,但作为一个完整的堆栈开发人员确实有它的一系列优势。熟悉栈的所有部分会让你成为一个更有同情心的开发人员。充分了解应用程序的工作方式可以帮助您确定哪里可能出错。它使您能够与团队中更专业的开发人员协作和沟通。最后,完整的堆栈开发人员可以使用他们的技能来构建自己的原型和副项目。

如果你是一个初学者,不要去了解这些位置的术语或标签。不要给自己太大压力去学习太阳底下的每一种语言和框架。专注于一两个工具并坚持使用它们,不管你多么想在不同的技术之间跳跃。

我建议所有初学者学习HTML、CSS和JavaScript,即使你打算成为后端开发人员。前端和后端之间的边界没有很好地定义,在您的旅程中您可能会对这两者都有所了解。成为“样样精通,样样不精”的人是相对容易的,但是请记住,我们的目标是成为“样样精通,至少精通一门”的人,这需要付出更多的努力。

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

完整的2021年Web开发训练营bob外围官网
安吉拉Yu博士
4.7 (125530)
畅销书
SASS -完整的SASS课程(CSS预处理器)
《代码与创造》,乔治·洛米泽,拉莎·诺扎兹
4.4 (343)
畅销书
JAMStack:完整的指南
雷Viljoen
4.8 (138)
10个响应式网站,包含HTML, CSS和JavaScript
《代码与创造》,乔治·洛米泽,拉莎·诺扎兹
4.6 (216)
畅销书
从8个项目开始引导5个项目
Yossef Ayman比较饱满
4.4 (22)

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

学习Webob外围官网b开发的学生也可以学习

让你的团队。领导行业。

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

请求一个演示

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