在诸多的企业尤其是创业型公司中,HR 在招聘时往往希望可以招到一名技术全能型人才,而这种人才又被称之为全栈开发者,那么对于全栈开发者而言,都需要具备哪些技能?
作者 | Chris Coyier
译者 | 谭开朗,责编 | 屠敏
出品 | CSDN(ID:CSDNnews)
以下为译文:
最近,在我参加的一个Web技术会议上,一位开发同事问了我这个问题。这位开发同事遇到的很多新人都自称是全栈开发人员,有点像Bob自称是Tony的意味,名不副实。
本文以这位开发同事提的问题作为标题,我感觉他了解人们所说的“全栈开发人员”这一基本概念,但我不确定他到底想表达什么。他的问题带有一种语气,一种不喜欢这个词的语气。
传统释义:
“全栈”开发人员被认定为,既可以做前端开发工作,也可以做后端开发工作。
现如今都需要DevOps(例如Git、测试和将网站投产)。“栈”是所有这些内容的组合,所以全栈开发人员可理解为:当涉及到构建网站时,全栈开发人员可以搞定所有的事情。
这些年来,有些栈已经声名狼藉了。你可能听说过LAMP栈(linux Apache MySQL php)?
LAMP栈的全栈开发人员意味着掌握Linux、Apache、MySQL和PHP。(抽象地说:服务器软件、web服务器、数据库、后端语言。)一个网站在这个栈上运行,而我负责它的开发,在某种程度上,我自认为我一名全栈开发人员。
“某种程度”是一种宽泛的说法。我对Linux一无所知,但我知道它运行于我的web服务器。我对Apache了解不多,但我知道可以使用HTAccess指令。我知道我发起MySQL请求的数量,我也知道我只了解wordPress/ target=_blank class=infotextkey>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/
本文为 CSDN 翻译,转载请注明来源出处。