全栈工程师,英文 Full Stack developer,是指那些掌握多种技能,并能利用多种技能独立完成产品的人。固然,如今「全栈工程师」很吃香,很是吃香!这是由于在移动互联网时代,IT 系统变得越发复杂,须要拥有全局思惟的工程师来搞定各类「疑难杂症」。不只要玩得转前端,还要搞得定后端,总之各类技术都懂,因此其重要性可见一斑。前端
近日,移动开发精英俱乐部围绕「如何成为一个全栈的工程师?」进行了讨论,主持人是优才学院的创始人伍星老师,让咱们一块儿看看大神们的精彩言论吧!(本文系国内 ITOM 管理领军企业 OneAPM 工程师整理)程序员
程序员眼中的「全栈」数据库
伍星-优才创始人:全栈,最先来自于 Facebook 的「咱们只招全栈工程师」,从表面看是指技术栈,是完成一套产品所面要的所有技术和技能。谷歌在它的书中也提出,它们只招创意型人才,其实这是一致的、相通的!后端
饶培泽:全栈,在我看来是一种态度,无路遇到何种问题都能积极的去解决。全栈,也不是说会什么,而是由于有好奇心与驱动力,因此什么都想搞明白,学习起来天然能快速上手。缓存
iOS小码哥:全栈,也能够说「我是一块砖,哪儿须要我,我就往哪儿填。」表明着快速学习的能力和超强的适应能力。安全
梦航:全栈,在必定程度上能更好的作出架构,减小维护成本。性能优化
卓竞劲:我支持思想和知识层面的「全栈」,而非刻意技能上的全栈。网络
饶培泽:其实,能从前端写到后端的人很多,可是能专职来作吗?这么说吧,不少公司的后端都能写前端,但可不敢让他们写产品级别的代码。若是后端人才若是能去了解前端的知识点,合理去进行整合互补,这样是咱们所鼓励的。数据结构
药交汇:全栈围绕产品服务,重点是考虑问题的角度、广度。我的理解也能够当作责任感的一种体现,前端、后端均可以也不表明全栈。只不过是围绕着问题的解决方案,其根本仍是本着对一件事情负责的态度,展开全方面的跟踪。架构
伍星-优才创始人:从谷歌对创意型人才的描述能够看出,这更多体如今可以主动地承担工做和解决问题。好比谷歌讲过一个例子,Adwords 是几个非相关工程师主动解决了小问题带来大收益的。
Facebook 的人才培养一开始是不分工的,「新兵营」以后才分工,而且轮岗不少,这中间暗含了:学习能力要至关强,我想学什么,都能学什么,须要我作什么,都能胜任。
因此咱们对全栈提出以下看法。首先要技术全面,做为全栈工程师,其技术固然要比较全面。从前端到后端、从运维到优化、从 PC 到移动都难不倒。 但又有本身比较精通的一方面。也就是说,做为全栈工程师既要有「专深」,一样也要有「广博」,这样才能在解决问题时不受局限,才能融会贯通。
第二就是思惟和心态。全栈工程师以积极主动的姿态来面对和解决工做中的问题。以全局的观点来看待本身所从事的项目, 而不仅是本身负责的一小部分。以作成产品、作成一件事的观点来看待整个开发流程,而不只仅是技术实现。 由于只能这样的心态和观点,他才会积极主动地去学习其余技术,用其余技术解决问题
第三是上升能力,全栈工程师并不意味着全能,什么都会。可是全栈工程师有良好的基础技能。 这个技能,既包括计算机科学的基础,也包括英语基础,有了这个基础, 加上积极的态度,开放的心胸,就能快速地学习所须要的技术,好比像 Swift 语言,那都不是事儿。 并应用在所须要的开发工做中。
第四就是职业价值,像 Facebook 说,他们只喜欢全栈工程师,创业公司也会说,咱们须要全栈工程师。不管是在大公司,仍是创业公司, 全栈工程师都将成为抢手人才!那是由于,全栈工程师不但技能全面,并且心态积极,学习能力强!
伍星-优才创始人:因此全栈不是一种技能,而是一种能力。学习能力,开放心态是优先的!
李睿君:其实后面有段时间以为全栈须要一方面熟悉本身自己专业的领域,另外一方面须要关注另外一段的技术,这样在须要另外一端技术,或是沟通时都能有帮助
着建彬:对感兴趣的东西不要当成「工做」来作,其实兴趣才是最大的动力。我以为全栈应该是由「兴趣」驱动的。
伍星-优才创始人:即便是领域专家,他对别的也会有了解和研究的。优秀的技术人员,对全部的技术应该有一种自然的好奇心和折腾劲
药交汇:我前端和后端都经历过,其实,在前期人员不全的状况下,结合业务并外出调研梳理了产品线框图、PRD、流程图,到制定了设计规范,到协调资源,而后制定研发周期,最后到输出...... 曾一度觉得这就是全栈,可是后来思考,这些只不过是本着对事情负责的态度,才驱动作了不少研发以外的事。就算一我的的技术全栈精通也要服务于根本产品。
伍星-优才创始人:项目进度和管理,比全栈自己要难。由于技术仍是死的,人是活的,并且多种多样的。就像业务架构师,自己曾经技术应该不错,即便学新技术,应该也是有特殊长处和看法的,不过不学不写罢了。这种人是标准的技术 leader ,技术能力并不必定是以某特定语言的写码能力而界定。
通常而言,全栈工程师在产品和沟通这块都有优点,因为技术全面,他能和各方沟通的比较愉快 。甚至和产品经理也沟通好。我也算是一个全栈,此前和各个产品经理沟通都很愉快。由于他不理解的地方,我会和他讲清楚,分析清楚,为何这个不能作,为何那样作很差,那样作更好,有理有据,其实,产品经理也是讲道理的,不像咱们在网络上常常「吐槽」的那样。若是再加上自己的技术声望和良好沟通的方式,程序员和产品经理相处其实会很和谐的。
若是成为一个全栈工程师?
王威:个人理解是,不只本身领域的精通,而后其余部分也应该快速学习。在我看来,若是想成为全栈的话,还得靠上项目了。在普通公司的话,通常每一个人只关注本身的领域,对跨领域的项目通常不会碰,能够本身利用业余时间来写,好比本来作APP的,有空能够写一下后端的东西,其实开始那一步比较困难。
张洋:全栈不仅是技术,还须要心态、责任等方方面面。
江月:我以为 facebook 要求全栈,并非但愿程序员技术全面但不精通。而是至少有一个领域精通,并且能够快速研究另一个领域的技术点。
伍星-优才创始人:能成为全栈,意味着技术能达到必定高度,而高度,确定是以长处见知的。我我的更倾向于认为,一专多能。
王威:成为全栈的话,还得靠上项目了。。。在普通公司的话,通常每一个人只关注本身的领域,对跨领域的项目通常不会碰,本身私下来写,好比本来作 APP 的,本身私下写后端的东西,其实开始那一步比较困难。
药交汇:关键是责任感的转变,由「被动」到「主动」,才能实现自我超越。
拯救与逍遥:我我的见解,不是先有了「我要成为全栈」的目标,而是对技术的好奇和追求,以及积极应对当前业务发展的不断挑战,最终才能锻炼出了全栈。
薄建业:我以为,最好的方法就是项目驱动;从另外一方面也说明,说为全栈,在必定程度上,也是被逼出来的。
王威:我比较同意项目驱动型。好比 APP 端的,例如作个相似于云笔记的软件,那么后端数据该怎么保存,接口该怎么定,该用哪一种语言来实现后端,在分析你想要的目标的时候就能找到该用哪一种技术该学哪一种技术。好比后端用 PhP 写,这时候就会推进本身去学 PHP,好比本身是作安卓,那么语言衔接上,有可能选择 JAVA 作后端,这时候就学 J2EE 的东西,围绕这个需求来实现,而后学数据库......其实说到底仍是得有」目标项目」来进行推进。
林曦:后端概念太泛了,不一样业务需求和规模须要的技术支撑彻底不一样。
王威:好比作高并发,能够 NodeJs 、 Golang 、 Erlang ,或者干脆用 Java、PHP 等等。其实作项目的第一步,后端写出业务服务接口,在业务量上来以后考虑好比性能优化,好比负载均衡,或者再好比后端架构分层等等。
文彦峰:其实,接入也有不少要作的,通常要和终端一块儿作,路由、负载、流量控制、安全、监控、旁路、优化 TCP 协议栈、内核参数再到硬件的支持等等。作业务,好比网关、鉴权、微服务框架、服务治理、缓存、消息中间件;存储,单机房如何保证数据不丢,多机房是单向同步,双向同步,出了异常怎么经过日志恢复,数据的检查,静态检查点的选择。怎么作分片,怎么扩容不影响原来的分片?
王威:因此说到底仍是得有这个项目需求,围绕着需求来分析须要的技术,而后再研究技术了。感受纯按照兴趣来学新的技术,做为对这一个技术有个优缺点简要了解,在须要的时候能快速学习。我我的仍是以为,想成为一个「全栈」,就找一个想法并实现它。
周渊:好比,你以为 NBA 好看,想要作一个 APP 能提醒比赛,那么天天下班后,没事写几个小时代码,三个月后,你就会发现作成了。
林曦:我以为作个「入门型」的全栈比较容易,真正能作到都有必定深刻的了解很难,融会贯通更难。
拯救与逍遥:先自学基础入门,进阶的话,能够随公司项目,初期不能直接参与,可是咱们能够主动思考技术方案,而后参照其余同事最后落地的方案,对比总结。能力慢慢提高,真正上手的机会总会有的!
周渊:最重要就是,Just Do It !
林曦:不过大公司相对有一个好处,就是能遇到「牛人」的几率也比较高,因此开发过程当中,某一个部分遇到瓶颈的时候想要找人讨论或者请教,找他们也是比较好找的。
周渊:高人点拨,确实重要,可是创建在你入门的基础上。
拯救与逍遥:不少时候,咱们不能作最想作的事情,并且要停下来推进一下,阻碍咱们继续前行的事情。可是,有些坑,有些历练是必须的,别人说一万遍,咱们仍是得本身历练。并且不少技术选型,都是在真正落地以后,才暴露出问题。
王威:采坑是必然的!运气好的话,采坑的代价低,运气很差的话,采坑代价可能毁掉整个项目。不过有些坑,有多是在技术选型的时候就会暗含的,这个时候确实很差找。
王威:咱们业务在往图数据迁移的时候也踩了不少坑,由于咱们是社交软件,因此不少需求是基于用户关系的,好比喜欢、不喜欢、好友等等。。。最开始以为 neo4j 挺方便的,导入数据的时候发现,免费版就是个坑爹的玩具。。。收费版貌似5千刀一个月还说多少,巨贵。。。
王威:创业有这个好处就是人少,一我的当多我的用,这个时候就有不少机会去摸新的东西,不过缺点就是没人带,本身摸石头采坑。。。
王威:不过对于我来讲收益大于采坑风险。。。因此仍是得围绕这个需求,一圈一圈的挖掘更好的解决方式,这个是一种学习的过程。尤为是在风险可控范围内,绝对鼓励你们尝试新的东西。
到最后你的选择不少时候依赖你团队的水平,怎么把这些人水平带起来,你这些才能作细
最好的成长就是在业务中成长
林曦:架构也是活的,须要不断生长,不断修改。不过,前期埋的坑也只有后期加班吞了,没有一劳永逸的架构!
董飞:我以为重要的仍是分享,别人帮你填了坑,你也能够帮别人填坑。而媒介就是博客,你们能够互帮互助。
王威:说到写博客,我以为能够把思惟给规范化,把想法记录下来的同时还能注意到之前没注意到得细节,绝对是学习新姿式最必要的补充。
伍星-优才创始人:曾经,我就主动地提出来帮公司承担一些的运维方面的事情。而后就本身学习,请教,后来很天然地就成为全栈了。固然,全栈并不意味着上班学别的,咱们上班时间把公司的事情作好,这才是成为全栈的前提。
伍星-优才创始人:还有一点,就是咱们在写代码的过程当中,要考虑怎么优化,怎么写得更快更好,而不是像「搬砖」似的,简单的重复。「搬砖」工做很快就会被淘汰掉,积累核心竞争力才是发展的根本 。
王威:好比作APP,在写从服务端拉取数据的时候,就能够考虑一下他们为何要提供这样的数据结构?这样的接口如何进行实现的?有这些疑问的时候,就会促进本身去看看去了解一下相关的知识,这样才能不断通向全栈之路。
固然,完成是一码事儿,完成好是另外一码事儿。全栈的意义不是全都泛泛地去作,而是在作深本身的领域同时,也能借鉴其余的技术,至少在团队开发时候沟通成本会减小不少。
赵建彬:其实,产品并不会关心你代码怎么写,关键本身要写出让本身以为满意的、高质量的代码。
薄建业:全站人才能够站在更高的视角,提供「一揽子」的解决方案,避免踩深坑!
文彦峰:热衷于技术,成全栈是迟早的事儿,技术全面某方面又比较深刻,天然能解决别人解决不了的问题,能作别人作不了的事情,团队中的影响力,行业中的影响力,也天然就有了,造成正向循环,仍是挺不错的!
伍星-优才创始人:就像罗辑思惟跨年公开课说的那样,核心竞争力,就是你的不可替代性。咱们不能单纯地说「全栈」好,不少初学者会被误导,是由于他们不了解什么是全栈,怎么才能成为全栈。就像武功也有练「走火入魔」的。
其实,加入一个快速成长的团队创业。是成为全栈的最快捷途径。这个团队,也多是大公司内部创业团队。也多是你们都把工做看成创业的团队。而没有好奇心,没有折腾劲,没有学习能力,没有开放心态,是不可能成为全栈的!
http://quanzhan.ucai.cn/intro (本文是优才学院创始人伍星对全栈的理解,发布后2014年4月份,到如今也没有改变,欢迎你们阅读。)
本文系国内 ITOM 行业领军企业OneAPM 工程师编译整理。咱们致力于帮助企业用户提供全栈式的性能管理以及 IT 运维管理服务,经过一个探针就可以完成日志分析、安全防御、APM 基础组件监控、集成报警以及大数据分析等功能。想阅读更多技术文章,请访问 OneAPM 官方技术博客
本文转自 OneAPM 官方博客