全栈工程师,一直以来都是软件行业热议的话题,只要提到全栈工程师大家就觉得很高大上,当然也有人直接说万金油而已,往好听说是全栈工程师,综合能力全,但是实际上就是什么都会哪都不精通。有人唾之以鼻,也有人称赞不已。 对于许多创业公司来讲,全栈工程师也是不错的选择,花一个人钱做一个团队的事何乐而不为呢。所以全栈工程师也就成了仅次于架构师的一个职位。
那么什么是全栈工程师呢?大家都各有说辞,有的人说精通前后端,有的人说初级架构师,那么不妨看看百度词条:
百度词条-全栈工程师
其中百度词条也说到全局思维这一点,还有根据这些年我的工作经历,个人认为全局思维才是全栈工程师最核心的一点。 最近不少人说到互联网寒冬的说法,还有不少人说程序员是吃年轻饭的,最多不会超过35岁这业界黄昏点,对此引起不少人的焦虑。其实在我看来这些人云亦云引起的焦虑,其实最主要的原因就是现在企业对程序员的要求越来越高,需要的不仅仅是只会单一技能,企业不再需要只会敲代码的一个工程师。 职场从来都不是平静的,他只会淘汰掉不需要那群人,选出优秀的那一部分进入管理层圈子。古人就说过“近朱者赤,近墨者黑”,跟随优秀的人在一起,就会看到不一样的天空。有些圈子你没进入你就看不到那个圈子里的世界,你就理所当然地认为是寒冬来临。 在IT程序开发这个大环境下,大家都是程序员,如果你拥有全局思维,那么你就是下一个管理者人选,所以你到35岁还是只会代码,或则工作了5年,你依旧只会单一技能,这能怪公司吗?能说寒冬吗?这问题本身在于自己,是你自己给自己画出了寒冬这个怪圈。
个人经历
接下来,我从个人经历的角度,说说全栈工程师。
3年前我进入程序行业,第一时间就把自己的目标定位成了全栈工程师,所以制定了一个3~5年的计划,希望5年之内成为一名全栈工程师,于是我就开始了对全栈之路的摸索之路。
个人历程
第一年开始Android开发,当时从应用层开发,再到硬件驱动(传感器)开发,虽然如今Android开发有些日落黄昏的节奏,但是这一年带给我的收获也是蛮大的。
第二年开始了web前端开发,从H5、CSS3、ES6,再到vue.js、react.js,还有当前比较火的微信小程序,也为我打开了前端的视野。 第三年开始了javaweb的学习,Servlet、Jsp、struts2,spring全家桶等,让我对开发编程有了全新的认知。由此我意识到所有开发都是以数据为导向,尤其对当前人工智能的解释,人工智能就是数据分析。 三年的开发经历,让我从单纯的代码搬运工,逐渐开始对项目思考,对整个项目系统架构思考,08年这一年也开始管理小团队,学会了对项目分析,从需求上审视业务功能,逐步培养自己对于项目的全局思维能力,以及开始考虑产品推广,市场反馈等问题。 之前有群友讨论说,后端开发才是最好晋升管理的首选,目前所有项目经理及管理层,多数都是由管理层转的,当时我就在想,为什么这样,当时我心中答案就是——全局思维。是的,这也就是全栈工程师的核心思维,这一点算是我这三年来的领悟吧。 后台人员相对于前端,移动端,测试,还是有产品而言的,后端人员考虑项目就是项目数据本身,数据就是这个项目的主干。如今的社会是以数据为导向的世界,对于整个软件系统,数据穿插在整个项目中,无论是前端,还是移动端,还是产品或则测试,所以无形中为后端人员培养了全局思维能力,这也是后端人员更容易转管理层的原因。简单讲,全栈工程师就是项目经理进入管理层的首选对象。
那么怎么成为全栈工程呢?这也是许多人非常迷茫的问题,大家总认为全栈工程师很神秘,高深莫测的样子,其实并不是那样的神秘,这都是一个知识的积累过程,一步一步积累而来的,下面我们看看下面这张图吧
软件系统组成
从上图就可以清楚地看到,全栈工程师需要具备的能力大体分为三类,移动端开发,web前端开发,以及后端开发。也许对于很多人来说,也许就会不由自主地感叹:这些知识太多了吧。我曾经看到过这么一句话:“一名优秀的程序员,一年至少需要学习一门新的程序语言,以应对未来多变的软件行业。”
移动端开发
移动端开发就目前而言,需要学习模块主要为Android或者IOS。其中在国内,Android的应用越来越为广泛,智能穿戴,门禁系统,车载电视,家庭网路电视等。以Android移动开发为例需要学习的大纲为:
学习语言
详细知识大纲,如下图所示:
Android学习大纲
目前Android,大家都说android开发越来越不景气。其实不是,只是企业不再需要初级android人员,如今android也开始倾向于硬件开发,TV电视端开发比较多。android开发选择android studio,ios开发xcode,同时也要学会一些混合开发知识,比如weex,react native,cordova等。
web前端开发
一般前端开发,多指web前端开发,主要为网页开发,现在同是包含微信小程序开发,前端开发学习大纲分为pc端和移动端,大体学习大纲为:
前端学习
前端开发目前比较常用开发工具为Hbuilder,vs code,Web Storm等,并且还需要熟悉npm,yarn ,webpack等。
后端开发
后端开发目前常用为java,c++,c,python,php等,我这里就列举java后端学习大概方向:
java学习大纲
后端开发而后也分为大数据方向,分布式系统架构方向等,服务器方面后端也要学会常用linux命令,熟悉常用的web应用服务器,如tomcat,Apache ,nginx等,比如C语言,c++相关开发选择vs,java开发选择idea,es等,详细请查看java团长的博客http://www.cnblogs.com/java1024/p/8583274.html,他的体系介绍比较完整。 而后还需要学习其他方面的辅助知识,git,svn等代码版本管理工具。
总结
全栈工程师的核心能力就是全局思维,能够独自一人把控整个项目,不像常规单一职责的工程师一样不同的人有不同的看法持一孔之见。因为拥有全局统筹能力,所以全栈工程在未来会更加受到欢迎,同时全栈工程师之路所要学习的东西往往会比单一开发者要多得多,不过付出总会有收获的。如果决定成为一名全栈工程师,就不要在意别人的说辞,坚持走下去,走下去无论最后那份答卷会怎么样,最终的结果都不会令你失望。
如果说全栈工程师被称作万金油,被认为会很多却不精通,从而被认为油,那么就让把“油”字去掉,成为“万金”工程师,当然也可以不去掉,至于原因火影迷应该都知道“油”。
火影忍者-自来也
以上纯属个人见解,如有异议,还望指正。
最后奉上一句:
未来职场是留给会写作的人,不会写作的人,正在失去你的职场核心竞争力。