要定义全栈工程师,先要定义全栈;要定义全栈,先要定义栈。php
栈定义好了,天然就有了全栈(栈中全部知识和技能),也就有了全栈工程师(掌握栈中全部知识和技能的人)的概念。前端
在不一样情境下,栈的范围是不同的,而不是一成不变的。每家公司都有本身的开发技术栈。java
对于不一样人,他所理解的栈的范围也是不同的。python
好比,要作一个网站,涉及到产品设计、开发(前端、后端)、测试、运维等等工做,每一个工做又须要技术选型,好比后端用java、php、python仍是其余,运维是本身采购服务器(涉及软硬件管理),放到本身的机房(涉及机房设计方案等知识)仍是托管,仍是购买云服务器。定了实现方案后,栈的概念就快出来了,最小的,最基本的栈,有的人认为就是包含先后端开发相关技术;有的人扩展了这个栈,除了开发,还应该加上产品设计、运维、测试,这个栈就变大了。后端
栈是动态的,不一样人能够有本身心中的栈,也就有了本身心中的全栈。服务器
解决一个问题所需的全部知识,定义了一个栈;解决另外一个问题所需的全部知识,定义了另外一个栈;运维
完成一个项目所需的全部知识,定义了一个栈;完成另外一个项目所需的全部知识,定义了另外一个栈;ide
完成一个产品所需的全部知识,定义了一个栈;完成另外一个产品所需的全部知识,定义了另外一个栈;测试
栈定义好了,也就有了全栈,相应的,就有了全栈工程师。网站
每一个人,心中定义了本身的栈,也就有了他心中的全栈,在他眼中,也就有了全栈工程师应该具有哪些知识和技能的标准。
可是,全栈不是“全部技能”,这也是不可能的。听了“全”就理解成一应俱全,是一种误解。没有人能够掌握全部知识和技能。