在诸多的企业尤其是创业型公司中,HR 在招聘时往往希望可以招到一名技术全能型人才,而这种人才又被称之为 全栈开发者,那么对于全栈开发者而言,都需要具备哪些技能?
最近,在我参加的一个Web技术会议上,一位开发同事问了我这个问题。这位开发同事遇到的很多新人都自称是全栈开发人员,有点像Bob自称是Tony的意味,名不副实。
本文以这位开发同事提的问题作为标题,我感觉他了解人们所说的“全栈开发人员”这一基本概念,但我不确定他到底想表达什么。他的问题带有一种语气,一种不喜欢这个词的语气。
传统释义:
“全栈”开发人员被认定为,既可以做前端开发工作,也可以做后端开发工作。
现如今都需要DevOps(例如Git、测试和将网站投产)。“栈”是所有这些内容的组合,所以全栈开发人员可理解为:当涉及到构建网站时,全栈开发人员可以搞定所有的事情。
LAMP栈的全栈开发人员意味着掌握Linux、Apache、MySQL和PHP。(抽象地说:服务器软件、web服务器、数据库、后端语言。)一个网站在这个栈上运行,而我负责它的开发,在某种程度上,我自认为我一名全栈开发人员。
“某种程度”是一种宽泛的说法。我对Linux一无所知,但我知道它运行于我的web服务器。我对Apache了解不多,但我知道可以使用HTAccess指令。我知道我发起MySQL请求的数量,我也知道我只了解WordPress环境下的PHP。
从这个角度看,我根本算不上一名开发人员。另一方面,全栈通常指的是将前端工作混合在一起,我足以胜任,而且仅凭我的前端技能,我可以在我职业生涯的这几十年中构建几十个(或数百个)个网站。不管怎么说,全栈是绰绰有余了。
还有许多其他的栈。
LAMP对如何构建前端没有特别的规定。在它那个时代,你需要构建一个后端来输出html,而这就是你的前端。
自从JavaScript出现以来,另一个臭名昭著的栈是MEAN栈(MongoDB Express angular Node)。
替换掉栈中的某个部分也是完全合理的。也许你会在LAMP栈中使用Nginx而不是Apache,或者使用PostgreSQL而不是MySQL。值得注意的是,MEAN栈的每一层都被新技术所取代。Node把JavaScript引到后端,它可以驱动web服务器、处理路由、连接数据源、运行构建过程、编译代码等等。
全球的全栈开发人员几乎用JavaScript编写项目。难怪有些人认为自己“全栈”了。一种单一的语言,比如JavaScript,可以在浏览器中运行,并且是一项重要的前端技术,那它就是一项可以广泛移植的技能。
MEAN栈可以像LAMP栈一样轻松地交换层。可以使用Fauna或Firebase之类的来做数据存储。也可以使用vue或react,而不是Angular。又或许不需要Express,因为框架有路由或在客户端运行的。
Shawn Wang开创了另一种流行的栈STAR(Design Systems TypeScript Apollo React):
这就是JavaScript。
值得注意的是,虽然我们仍然把它看作是一个栈,但是我们对服务器和服务器软件的考虑却很少,以至于它们并不是堆栈的关键部分。并不是说开发人员和公司不把它当回事,而是它现在比过去更加抽象。我想以无服务器的世界为例。问题不在于我们的服务器应该使用什么操作系统,而在于运行JavaScript最划算的平台。
因此,堆栈会随着时间而发展。但问题不只是在于使用什么技术,而是我们把哪种技术应用于堆栈技术中。全栈的意义也是随着时间的变化而变化的…我们现在所处的时代是,掌握了JavaScript就可以彪炳为全栈。你可以使用客户端网站框架或架构师组件,或将它们组合起来构建整个前端。你可以编写web服务器。您可以编写后端代码联调api。你可以执行所有的状态管理。你可以构建流程和部署管道。如果你愿意,甚至可以将css引入到JavaScript中。
尽管我们主要聚焦于JavaScript,但人们的技能也不仅限于此。再加上HTML和CSS,Git foo,还懂一点DevOps,你就是一个真正的web全能型人才了。你都能做到!
实际上,我觉得这很帅。它确实增强了开发人员的技能。虽然前端开发的门槛是一个值得考虑的问题,但是想到全部都降低了门槛的话也很有趣。对于我来说,看到前端开发不断发展,直到几乎要统治整个栈,这是一件非常酷的事情。可以说是全能的前端开发人员。
这让我想起了WordPress site-slinger的强大之处。你可以做很多事情,即使你不能完全理解到其中的每一点。
全栈,为什么能让开发人员如此自豪?他们中的许多人在自我介绍时都是带着自豪的微笑。出于某种原因,他们觉得有必要在介绍自己时强调是全栈。
我感觉这是因为:骄傲。
骄傲是一件棘手的事情。我的父母经常告诉我说,他们为我或我所做的事情而感到自豪,这对我就意味着整个世界。这对双方都是好事。但是,奇怪的是,骄傲也是七宗罪之一,如其所说,这也可能是所有其他罪的根源。我不想夸大事实,但我认为这两者之间有某种联系。被认可而感觉自己强大和有能力是一回事,但自夸和感觉不到自己能力有限是另一回事。
我们会遇到很多瓶颈,尤其是在争取出色的完成工作时,而不仅仅是敷衍了事。如今,要想脱颖而出,就必须以身作则。你的视觉设计技巧如何?你是构建设计系统还是实现现有的系统?你维护系统有多少年了?你对困难重重的技术债务有很好的判断力吗?你如何与同事实现合作共赢?你能推进用户测试吗?你在诊断性能瓶颈方面怎么样?如果有严重的服务器问题该怎么办?彪炳为全栈是否有助于理解服务器日志?你精通访问性审计吗?你是否处理过复杂的关系数据和查询迟缓的问题?
我并不是说谁不是一位全栈开发人员,或者谁没有资格获得这个特殊的荣誉——只是网站是一个有着不同需求和不断变化的堆栈的大世界,它需要多方位的技能。如果你正在面试一份需要全栈开发人员的工作,不管怎么样,请告诉他们你是个全才。
原文: https://css-tricks.com/what-does-it-mean-to-be-full-stack/
作者 | Chris Coyier
译者 | 谭开朗,责编 | 屠敏
出品 | CSDN(ID:CSDNnews)
前端程序员看到“全栈”这个概念,大概会有两种反应:1. 卧槽,这个好,碉堡了,2. 你懂毛,全栈就是样样稀松。即使只学一门技术,水平很菜的人也多的是,而全栈工程师当中样样都做,而样样都做得不错的也不少。
很多人为了成为全栈工程师或者已经是全栈工程师面对着巨大的困境。1.一个工作两年的切图都比一个全栈工程师切图好,一个8k的java都比3W的全栈写的代码快,他们经历着博而不精的煎熬。2.成为全栈很多人需要花费大量的学习时间,到最后依然是无功而返。
随着技术的发展、用户量的增加、客户端种类变多,每一个小小的细节都需要优化和考虑。在海量的访问量面前,也许改变一个按钮的位置和颜色就能影响上千万次的用户体验
故事要从我 14 岁那会说起。当时的我学过 PHP、HTML/CSS 和 JavaScript,而且对自己的朋友充满嫉妒。作为在网上发布的第一篇“严肃”文章,我想从自己的成长经历谈起——当然,之后我还会更新更多文章,毕竟学无止境嘛
现代的全栈应用程序通常由六层组成:数据访问、后端模型、API 服务端、API 客户端、前端模型和用户界面。我们需要大量的胶水代码才能将它们全部连接起来,并且领域模型在整个栈中存在重复。因此,开发的敏捷性受到了极大的影响
内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!