什么是全栈工程师
前端工程师:在打开一个网站时,屏幕上的一切都属于前端。前端工程师负责创建用户界面背后的代码。这些工程师不仅要熟悉HTML、JavaScript与CSS,还要掌握很多框架。这些框架有Foundation、Angular JS、Ember JS、Backbone及Bootstrap等等。前端工程师要与设计师和其他专家协同工作,从而将网站从模型转换为可使用的模式。
后端工程师:在你每天所访问的网站背后有服务器网络、数据库以及各种应用,他们相互协作将你所请求的网页与数据传递给你。后端工程师负责构建这些组件。他们要擅长各种编程语言,如Python、.Net、Ruby、Java及PHP等等,从而通过这些语言来编写程序。他们还需要使用各种数据库程序如MySQL、SQL Server及Oracle等来操纵信息并将其传递给最终用户。后端工程师需要与组织中的各种经理及其他成员通力配合来完成工作。
全栈工程师:全栈工程师既要了解后端开发,也要了解前端开发。他们是“全方位”的工程师,熟悉服务端的同时又懂客户端用户体验。全栈工程师理解Web开发进程的每一个方面,同时又会就整体策略与最佳实践对相关干系人提出建议与指导。
2023-08-27 广告
2018-07-06 · 知道合伙人互联网行家
全栈工程师,也叫全端工程师,英文Full Stack developer。是指掌握多种技能,并能利用多种技能独立完成产品的人。
如何成为全栈工程师?
a全局性思维
现代项目的开发,需要掌握多种技术。互联网项目,需要用到后端开发、前端开发、界面设计、产品设计、数据库、各种移动客户端、三屏兼容、restFul API设计和OAuth等等,比较前卫的项目,还会用到Single Page Application、Web Socket、HTML5/CSS3这些技术以及像第三方开发像微信公众号微博应用等等。
Web前端也远远不是从前的切个图用个jQuery上个AJAX兼容各种浏览器那么简单了。现代的Web前端,你需要用到模块化开发、多屏兼容、MVC,各种复杂的交互与优化,甚至你需要用到Node.js来协助前端的开发。
所以说一个现代化的项目,是一个非常复杂的构成,我们需要一个人来掌控全局,他不需要是各种技术的资深专家,但他需要熟悉到各种技术。对于一个团队特别是互联网企业来说,有一个全局性思维的人非常非常重要。[1]
b.善于沟通
项目越大,沟通成本越高,做过项目管理的都知道,项目中的人力是1+1<2的,人越多效率越低。因为沟通是需要成本的,不同技术的人各说各话,前端和后端是一定会掐架的。每个人都会为自己的利益而战,毫不为已的人是不存在的。
而全栈工程师的成本几乎为零,因为各种技术都懂,胸有成竹,自己就全做了。即使是在团队协作中,与不同技术人员的沟通也会容易得多,让一个后端和一个前端去沟通,那完全是鸡同鸭讲,更不用说设计师与后端了。但如果有一个人懂产品懂设计懂前端懂后端,那沟通的结果显然不一样,因为他们讲的,彼此都能听得懂。
c.创业公司
对于创业公司来说,全栈工程师的价值是非常大的,创业公司不可能像大公司一样,各方面的人才都有。所以需要一个多面手,各种活都能一肩挑,独挡多面的万金油。对于创业公司,不可能说DBA前端后端客户端各种人才全都备齐了,很多工作请人又不饱和,不请人又没法做,外包又不放心质量,所以全栈工程师是省钱的一妙招。虽然说全栈工程师工资会比一般的工程师会高很多,但综合下来,成本会低很多。
Stack
developer。是指掌握多种技能,并能利用多种技能独立完成产品的人。
【价值】
一、全局性思维
现代项目的开发,需要掌握多种技术。互联网项目,需要用到后端开发、前端开发、界面设计、产品设计、数据库、各种移动客户端、三屏兼容、restFul
API设计和OAuth等等,比较前卫的项目,还会用到Single
Page
Application、Web
Socket、HTML5/CSS3这些技术以及像第三方开发像微信公众号微博应用等等。
Web前端也远远不是从前的切个图用个jQuery上个AJAX兼容各种浏览器那么简单了。现代的Web前端,需要用到模块化开发、多屏兼容、MVC,各种复杂的交互与优化,甚至你需要用到Node.js来协助前端的开发。
所以说一个现代化的项目,是一个非常复杂的构成,需要一个人来掌控全局,它不需要是各种技术的资深专家,但它需要熟悉到各种技术。对于一个团队特别是互联网企业来说,有一个全局性思维的人非常非常重要。
二、沟通成本
项目越大,沟通成本越高,项目中的人力是1+1<2的,人越多效率越低。因为沟通是需要成本的,不同技术的人各说各话,前端和后端是一定会掐架的。每个人都会为自己的利益而战,毫不为已的人是不存在的。
而全栈工程师的沟通成本几乎为零,因为各种技术都懂,胸有成竹,自己就全做了。即使是在团队协作中,与不同技术人员的沟通也会容易得多,让一个后端和一个前端去沟通,那完全是鸡同鸭讲,更不用说设计师与后端了。但如果有一个人懂产品懂设计懂前端懂后端,那沟通的结果显然不一样,因为他们讲的,彼此都能听得懂。
三、创业公司
对于创业公司来说,全栈工程师的价值是非常大的,创业公司不可能像大公司一样,各方面的人才都有。所以需要一个多面手,各种活都能一肩挑,独挡多面的万金油。对于创业公司,不可能说DBA前端后端客户端各种人才全都备齐了,很多工作请人又不饱和,不请人又没法做,外包又不放心质量,所以全栈工程师是省钱的一妙招。虽然说全栈工程师工资会比一般的工程师会高很多,但综合下来,成本会低很多。
比如说我吧。最初使用PB做项目;玩着玩着,从动态界面生成、显示效率优化到数据库调优就全都能插上手了;然后,基于自己对底层知识的理解,还能用PB玩一些黑科技,实现官方没有提供支持的功能(用俺同事的话说就是“你都玩到圈外面了”)。
甚至,我还直接和客户方技术人员交流,修补了很多过去需求调研时留下的坑(被客户评价“够半个XX工程师”、“[去做他们行业的工程师] 日常问题应该没有能难倒你的了”),然后自己设计方案、制定计划并成功完成;之后这个软件才通过客户验收。
你看,从需求调研到方案设计;从数据库设计到网络通信协议制定再到后台逻辑、软件界面……这差不多算全栈了吧?
后来用C/C++做项目,然后就知道了内存屏障、cache、分支预测,知道了模板推导、编译期计算;于是开始学着去写能讨好CPU的代码……埋头底层N年,逐渐熟悉了linux环境。
于是,往下,改过linux kernel module、挖过tcp/ip协议栈、查过各种加密/验证算法/体系的底细(不能说了如指掌,但清楚其来龙去脉、自己也亲手实现过一些核心算法);中间,玩过apache/nginx/django,用C写过cgi页面,折腾过hadoop/gluster;上层嘛,用gtk/wpf等等都写过界面,用脚本写过自动探测机器硬件然后自动裁剪linux kernel生成最小化系统的东东,用python+django实现过自己的oauth2页面(当时oauth2刚刚推出,还没有现成实现可用)……
从kernel一口气玩到web页面,从C折腾到js……随便哪个环节都能掺乎进去,也都搞出过商业软件。按照定义,这似乎也勉强能算“全栈”吧?
这个“全栈”和当初的“全栈”,含金量是否一样?
样样行,样样怂?您可千万别这样表扬我。
“样样怂“这个评价可谓恰如其分;”样样行“可实在是愧不敢当。
在我看来,所谓“全栈”,大概就是“自以为已经在自己所能接触领域的各个地方都留下过爪印”吧。
很遗憾。虽然的确经常自我膨胀;但有一点很清楚:我从未做到过“在所有地方都留下爪印”。各种意想不到的细节且不提它;比如各种加密算法背后的数学原理及其证明,其上覆盖的淤泥太深太硬:既然根本没有能力去挖掘它,凭什么在那里留下爪印呢?
更重要的是,很多地方我甚至都不知道其存在。
一旦跳出自己所熟悉的井口、被新鲜事物糊到脸上……所谓“全栈”就是个笑话。
所以,成为一个全栈工程师的体验就是:这只青蛙又进入了新一轮的膨胀周期,现在它迫切需要一块分量十足的“醒工砖”,否则很可能就要被困死在熟悉的井底了