我眼中的全栈工程师

现在越来越多的创业公司都想找全栈工程师,因此市场上就出现了很多伪全栈工程师,特别是学会了Node的前端工程师,前端工程师会Node就全栈了?这严重不符合我对全栈工程师的理解,这篇文章我主要是说下我对全栈工程师的个人看法。在我眼里,全栈工程师是下能玩硬件和驱动,上能写网页和js,中间能玩转服务器和数据库,没事还能自己做个安卓或iOS App, 对IT系统有着全面深刻的理解,熟悉所负责项目的整体技术栈。
我认为全栈工程师的特质应该有以下几个:强大的解决问题能力;广博的知识面,快速学习能力,不给自己设限,主动学习新技术;熟悉多种编程语言,熟悉整个系统从上到下的技术实现。

无人机之父拉菲罗·安德烈

强大的解决问题能力

我觉得强大的解决问题能力是全栈工程师最重要的素质,也是全栈工程师的核心能力。
全栈工程师的解决问题能力,应该不局限于软件研发中碰到的技术问题,范围可以扩展到工程和科学相关的问题。这一点我们要向国外的极客大神们学习,国外很多极客具备硬件,软件,网络和人工智能等领域的全方位能力,例如无人机领域的大神拉菲罗·安德烈。亚马逊运营中心里酷炫的、数以万计的Kiva机器人,就出自他手。公司被亚马逊收购后,这位“疯狂”的科技极客把注意力投向了无人机领域,三年时间研制出全球首个全向无人机。2015年获得“电子工程领域的诺贝尔奖”的IEEE机器人和自动化国际会议大奖,被人称为无人机之父。

在软件开发过程中所遇到的问题,真正的技术问题只占一部分,很多问题可能是工程或管理方面的问题。全栈工程师善于用全领域的知识积累从更本质的层面上找到解决问题的办法,而不是局限于某一种技术上寻求解决方案。例如前段时间遇到的HTML5 Hybrid App在某些安卓手机上兼容问题,最终的解决方案就是修改js代码,而是直接把Cordova的webview内核换成了腾讯X5内核,这个如果没有全栈技术能力是不可能做到的。

快速学习能力,不给自己设限,主动学习新技术

全栈工程师应该时刻保持开放的心态,主动学习新技术,能够快速进入新技术领域。广博的知识面有助于通过类比和知识迁移的方式,提高学习掌握新技术的速度。
例如做Java Web后端可以去熟悉前端开发的技术。做安卓开发的可以去学习iOS开发。做iOS的可以去学习下HTML5移动开发,研究下js。
我们现在计算机体系其实都是相通的,不同的编程语言体系,不同的操作系统平台,同样的任务或技术架构的处理方式可能是类似的,因此全栈工程师
现在我们已经进入了移动互联网的下半场,未来的大趋势是人工智能,全栈工程师对于人工智能,机器学习,深度学习等领域也要尽早准备学习了。

熟悉多种编程语言,熟悉整个系统从上到下的技术实现

我个人认为全栈工程师至少要熟悉5种编程语言,工作中不能只用一种特定编程语言。
现在TIOBE排行榜上主流的编程语言Java, C/C++, C#, Python, Javascript, PHP,Ruby,OC等都应该熟悉,Groovy,Scala,Go,Swift,Kotlin等相对比较新的编程语言也应该熟悉或了解几种。这样就可以根据具体情况(项目特质和团队情况)选择合适的技术栈,而不是整个系统只能用一种语言完成。当然了,大的项目具体的代码肯定应该由团队分工合作完成,但全栈工程师还是应该对项目整个技术栈具备一定的掌控力。
做Java Web应用的全栈工程师,应该熟悉Java,Javascipt,CSS,HTML,SQL,XML等常用语言,并且熟悉常用的前后端技术框架,例如Spring,JPA,Mybatis,Jquery,AngularJs,React等。用PHP,Python,Ruby,微软.net等技术栈做Web应用的应该也类似。
做移动互联网应用的全栈工程师,应该熟悉Android,iOS开发或微信开发,以及服务器端接口的开发,这样才能做到沟通无障碍。

全栈工程师的钱景和前景

成为一名真正的全栈工程师需要经过长期的持续学习和不断折腾,其中的甘苦只有自己知道。但和数年坚持一个领域的专家型人才相比,在薪酬方面全栈工程师可能并没有优势,这是可以理解的,因为在就业市场上,特别是像BAT这些比较大的公司,倾向于给行业顶级水平的人才很高的报酬,这符合赢者通吃的社会法则。而全栈工程师,由于关注和学习的领域太多,有限的精力必然被分散,导致在某个特定领域会比不上领域专家,因此在职业生涯早期和中期并不容易拿到足够高的收入。

从长期回报看,全栈工程师在架构师,CTO,技术合伙人等高端技术职务上会比领域技术专家更有优势,全面的技术背景有助于做出更加全面客观的技术架构和决策,从而对所在组织产生很大的正面影响。

对于创业公司,全栈工程师发挥空间会更大,多面手的特长可以帮助团队快速完成早期技术产品,成为公司创始人或技术合伙人,发展前景会很大。每一个全栈工程师,都有过一个创业梦。能否创业成功,在于是否有足够的勇气,综合能力和机遇。

真正的全栈工程师,对新技术有着强烈的好奇心,敢于不断地走出自己的舒适区,勇敢进入新的技术领域!

本文独立博客地址

Contents
  1. 1. 强大的解决问题能力
  2. 2. 快速学习能力,不给自己设限,主动学习新技术
  3. 3. 熟悉多种编程语言,熟悉整个系统从上到下的技术实现
  4. 4. 全栈工程师的钱景和前景
,