020-29815005
预约专线时间:09:00-23:59

何为全栈工程师?

新闻来源:本站 日期:2021-06-01
JAVA开发工程师,大数据云计算工程师,PHP工程师,UI设计师,与其他互联网热词一样,”全栈“工程师也是英译过来的,英文全文是:Full-Stack Developer,你想啊,中国人民怎么会用客栈的栈、堆栈的栈来形容工程师呢?
  谈论一个概念,首先得给一个定义,一般来说,全栈工程师就是指技术多面手,掌握多种技能,能够独立完成non-trivial application的人。non-trivial怎么解呢?就是有一定复杂度的,具备一定规模的意思。基于此,我和我的程序员朋友们,对全栈工程师的认识是:在技术栈的各个领域都能够做到出色的工程师。有了这个标准,我和程序员们面面相觑,发现没有一个是全栈工程师。技术领域浩如烟海,更新换代之迅猛如炸雷不及掩耳,别说盗铃了。互联网短短20年的发展,累积的技术信息已经不是我们终其一生能够消化的了,知道尚不可为,何以做到出色?

  但是,这个标准稍稍降低一点,早期的程序员差不多就都能叫全栈了。2001年左右我们开发B/S产品,用来展现UI和数据的程序代码中混杂了Java、HTML、CSS和JavaScript,根本不可能把前端和后端拆开编写,而后端业务逻辑本身就是Java实现的,你不写谁写?懂了业务逻辑和算法还不行,你得把数据存数据库和文件系统吧,什么?你不懂SQL?我靠那你还是程序员吗?你不能每次和数据库交互都让一个进程去敲门吧,数据库招你惹你了?这时候就得有个连接线程池。异常得统一处理吧,得支持集群吧,给用户部署了得能自动扩展吧,没测试怎么办?你自己写的代码写的业务逻辑写的界面,你不保证正确性谁保证?


java


  总之在那个年代,每个程序员差不多什么都得会点,但有的人在这个领域强一些,有的人在那个领域出色一些,不一而足。现在看来,那时候我们应该叫全沾工程师,什么都会点,能解决问题,但是单个人,除了自己擅长的技术,在其他领域,都没能做到出色。

  如果这个标准再降低一点,比如说把「non-trivial」去掉,随便做个Application,那就容易多了,一个零基础智力正常的成年人去培训班学习几个月,差不多就能做出一个网站、一个移动App还包括后端,或者一个数据挖掘的展示页面。但这个范围仅仅局限在会上,和做好、出色,差距明显。可以看做是入门级的工程师,只不过和前端工程师、移动开发工程师、Java工程师相比,什么技术都懂一点点而已。

  这种工程师,我们可以把他们叫做全站工程师,基本上,进入企业之后,都得有老师傅带着,手把手教,练习和实战,才能做「non-trivial」的项目。为啥叫全站呢,意思就是老师傅讲东西的时候,都在旁边站着。有没有真正的全栈工程师?有,比如菲尔普斯在游泳层面勉强算全栈,奥运会咔咔拿7枚金牌,你服不服?你说我也会四种泳姿……您那叫会,会和做好,差着几十个二把刀。当然了,二把刀也没什么不好,至少比拿根儿木头杵着强多了。鼓励大家在立足本职成为专家的基础上,成为一个认真的二把刀。

  什么是全栈工程师呢?我人为在语言层面对汇编、C、C++、Java、PHP、Python、Linux都有深入的理解,使用起来如臂指使,对项目策划、引擎、协议和服务端架构也是驾经就熟。对他来说语言只是工具,为了更便捷的开发而使用。在工作和生活中,花200%的时间让自己在擅长的领域成为超越80%的人,然后,需要学什么就去学什么,一味追求大而全,反而会适得其反。

  就像有人给自己设定目标要学英语、学乐器、学编程、学设计、学会计、学书法、学厨艺最终一事无成一样,我骨子里也希望自己做个「样样精通」的「全才」,然而事实上自己把时间更多的花在收集信息和焦虑上,反而没有将时间用在真正的技能学习上,最终获得了「样样稀松」的结果。

  这就如同很多游戏中的稀缺技能点一样,玩家永远加不满所有的技能树,如何有策略的使用有限的技能点来解决对应的问题,成了每个玩家必修的课程。

  现实生活中,亦是如此!