从本质上讲,我认为关于全栈的讨论也是一种与IT行业的全能和专家有关的论点,以及关于开发技能的深度和广度的争论。
那啥是全栈,就是。。所有的你啥都得会。。




先说编程语言
你得先要精通多种编程语言,例如JAVA,Go,PHP,C#,Python,Ruby,Perl等。因为大多数核心业务流程都需要用这些语言编写。
但你不但掌握语言语法,并且非常熟悉如何基于一种或多种语言对项目进行结构,设计,实现和测试。例如,如果选择JAVA,那么你需要掌握面向对象的设计和开发,设计模式,基于J2EE的开发组件等。
第二个就是框架,使用开发框架和第三方库
流行的开发语言通常伴随着一个良好的开发框架,如JAVA Spring,MyBatis,Hibernate,Python Django,PHP thinkphp,yin,nodeJs express ,go的gin,beego等。
第三个就是前端技术
在现在的项目和产品开发中,前端技术变得越来越重要。除产品功能外,用户体验也是测试产品成功率的标准之一。
所有这些都取决于前端技术的实现,需要掌握一些基本的前端技术,如HTML5,CSS3,JavaScript,并进一步研究前端框架或第三方库,如JQuery,LESS, SASS,AngularJS或REACT。
第四个数据库和缓存
任何产品或项目都需要数据库来存储数据。作为一个全栈工程师,还需要至少有一个或两个数据库,并知道如何与数据库进行交互。
目前,流行的数据库是MySQL,MongoDB,Redis,Oracle,SQLServer等。作为文档类型的数据库,MongoDB在Internet产品中得到了更广泛的应用。对于较大的项目,建议使用MySQL或商业Oracle作为后端数据库。而内存数据库(如Redis)可用于缓存以提高系统性能。
第五个,基本设计能力
关于全栈工程师的大多数文章或讨论很少与设计要求相关。但我认为设计技巧非常重要,基本原型设计,UI设计,UX设计的原理和技巧也需要了解。




全栈工程师的好处就是,参与了横向技术要求,所以可以使用各种技术快速的进行产品原型设计,有更广泛的视角和更积极的思维模式。而且,他们对技术和产品更敏感。所以,这种人总能对产品或设计有自己的看法。而且,还可以为团队中的每个人提供帮助,并大大减少团队沟通,技术对接的时间和技术成本。
但是会有人什么都精通吗?有是有,但不是每个人都会全栈,就算是会也不会精通。因为技术的成长是要靠经验的累积,说白了就是熬时间,三五年的程序员说自己全栈,这个只能说全栈的也是皮毛。。