宁波IT培训
美国上市IT培训机构
400-111-8989
全栈开发到底是什么意思?
传统释义:
“全栈”开发人员被认定为,既可以做前端开发工作,也可以做后端开发工作。
现如今都需要DevOps(例如Git、测试和将网站投产)。“栈”是所有这些内容的组合,所以全栈开发人员可理解为:当涉及到构建网站时,全栈开发人员可以搞定所有的事情。
01
这些年来,有些栈已经声名狼藉了。你可能听说过LAMP栈(Linux Apache MySQL PHP)?
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的强大之处。你可以做很多事情,即使你不能完全理解到其中的每一点。
02
会议上遇到的开发同事继续说道:
全栈,为什么能让开发人员如此自豪?他们中的许多人在自我介绍时都是带着自豪的微笑。出于某种原因,他们觉得有必要在介绍自己时强调是全栈。
我感觉这是因为:骄傲。
骄傲是一件棘手的事情。我的父母经常告诉我说,他们为我或我所做的事情而感到自豪,这对我就意味着整个世界。这对双方都是好事。但是,奇怪的是,骄傲也是七宗罪之一,如其所说,这也可能是所有其他罪的根源。我不想夸大事实,但我认为这两者之间有某种联系。被认可而感觉自己强大和有能力是一回事,但自夸和感觉不到自己能力有限是另一回事。
我们会遇到很多瓶颈,尤其是在争取出色的完成工作时,而不仅仅是敷衍了事。如今,要想脱颖而出,就必须以身作则。你的视觉设计技巧如何?你是构建设计系统还是实现现有的系统?你维护系统有多少年了?你对困难重重的技术债务有很好的判断力吗?你如何与同事实现合作共赢?你能推进用户测试吗?你在诊断性能瓶颈方面怎么样?如果有严重的服务器问题该怎么办?彪炳为全栈是否有助于理解服务器日志?你精通访问性审计吗?你是否处理过复杂的关系数据和查询迟缓的问题?
如果你正在面试一份需要全栈开发人员的工作,不管怎么样,请告诉他们你是个全才。加油,少年。