全栈工程师的概念兴起要归纠于Facebook的某位工程师,在一次OSCON会议中,他提出来Facebook只招全栈工程师。其实可能只是一次偶然的表态,但是这次表态却引起来很大的反馈。几乎所有的技术界都在议论全栈工程师的概念了。
所以我们来讨论一下全栈工程师到底应该包含几层意思。
不给自己设限
全栈工程师就是指你可以在一个栈的任何的一个地方,所以你并不会让自己限定在某一个位置。比如专门做服务器,专门研究Java,专门写HTML+CSS。
更认可人的学习能力
学习能力不是你有什么学历,而是你面对变化时及时响应的能力。如果一个人不能影响变化,可能很快就与主流世界脱节。因此终身学习,不断的学习新的东西可能是未来对于个人来说很重要的生存技能。
更加尊重人的主观能动作用
当一个人在一个岗位重复做同样一件事情的时候,这个人一定是没有成就感的。也许这种生活只能是苟且,而全栈就可以调用所有人的主观能动,并让所有人在面对问题时更加的积极,而不是相互的推卸责任。
让组织更加具有活力,有竞争力
全栈工程师的概念就是让每个人都有机会做他最乐于去作,并且发挥的作用最大的工作。而不是将一个组织固定住,从而可以最大的发挥组织的竞争与协作机制。促进组织的创新能力与竞争力。
小结
所以全栈工程师更多的是一种概念模型,在真实的环境中还是比较困难的。毕竟能学好多样技术,并且能随时切换的人材还是少数的。只有象Facebook这样的顶级公司才有可能招到这样的工程师。并且大部分的开发者是很难成为全栈工程师的。
但是作为一种目标还是值得大部分的开发者拥有。
Web全栈工程师
由于全栈工程师的概念太过于广泛,所以我更加喜欢使用Web全栈工程师来描述Web领域对于多领域感兴趣的工程师,而本人也是以Web领域的知识为主要的学习对象。所以我对Web全栈工程师有如下的几点理解:
1、掌握HTML+CSS技术
能重构网页,能手写HTML代码,能手写CSS/SCSS。
一句话,就是能切图,并且知道合理的使用HTML写出相应的效果。
知识并且会基于Web Component开发最好。
2、掌握JS
至少熟悉一种主流的JS框架:比如angular, react, vue, jquery等
3、掌握一门后端语言
熟悉并掌握至少一门后端开发语言/环境。比如nodejs, php, python, java等
4、具备大学计算科学的知识体系。
即对OS,网络,数据库,硬件等有基本的认识。
所以这些都是技能层面的。
再加上上面所讲的非技术层面的。