全栈是一个外来词,翻译自full-stack,表示为了完成一个项目,所需要的一系列技术的集合,栈是指一系列模块的集合。
全栈中的栈与计算机数据结构中的堆栈不是同一个概念,后者是指先入后出的串行数据结构。队列是指先入先出的串行数据结构。
计算机行业从业者天生就带有全栈光环。
例如:你要开发一个WEB项目,工程师需要掌握的知识至少包括:
服务器(Linux)、数据库(MySQL)、服务器端编程语言(PHP/Python)
前端标记语言和脚本语言(HTML/CSS/JavaScript)等,这些技术中的任何一个,都需要好几年的学习和练习才能达到精通的程度。
服务器、数据库、服务器端编程语言、前端标记语言和脚本语言等组合在一起就是一个栈,这个栈是用来制作WEB站点的,所以又叫做WEB栈(Web-Stack)。
如果要开发一个手机中运行的应用,开发者需要的知识包括:服务器、数据库、服务端编程语言、IOS或Android开发技术。这些技术的集合称为App栈(App-Stack)。
对于全栈工程师,业界并没有严格的定义,并不是说一定要一个不少的具备哪几项知识才能叫做全栈工程师。绝大多数更倾向于:应该从能力和思维方式两个方面,来判定一个人是否是一个合格的全栈工程师。
国外是如何定义全栈工程师的呢?
在著名的问答网站Quora上有人提出了这个问题,一个获得高票回答的是:
全栈工程师是指:一个能处理数据库、服务器、系统工程和客户端的所有工作的工程师。根据项目的不同,客户需要的可能是移动栈、Web栈,或者原生应用程序栈。
简单来说:全栈工程师就是可以独立完成一个产品的人。
注:以上内容摘自`余果`的《Web全栈工程师的自我修养》一书。