点击上方“java工会”,选择“置顶公众号”
关注我,查看更多全栈相关技术!
全栈工程师,英文叫Full Stack Developer,是指掌握多种技能,并能利用多种技能独立完成产品的人。
我认为全栈工程师的特质应该有以下几个:强大的解决问题能力;广博的知识面,快速学习能力,不给自己设限,主动学习新技术;熟悉多种编程语言,熟悉整个系统从上到下的技术实现。
以下几种人,很典型并大有人在:
1.、会个 php + js+mysql就吵吵自己是全栈,前后通吃。
2、会做app、会做网站、会弄数据库、配置服务器环境,自己就是全栈了,有任何问题找我。
3、java、c++ 语言的转型前端 或者去做硬件然后掌握了不少框架 和工具之后,就说我是全栈了。
4、配置了服务器、了解了一门后台语言、听说和查阅过各种前端框架用法之后膨胀的,并立志我要做一个全栈。
我都不想说了,以上几种人在各位的实际生活中,公司中绝对都见过,而且吹牛逼的也很厉害,感觉公司离了他不能转,有任何难题就一句话: 简单,我会啊!结果 他留下的坑比要填的坑还要大。
具体原因
1、基础知识太渣,急于求成表现,盈利
2、坐井观天,会一项或者几项技能之后,自信心膨胀
3、技术浮于表面,经不起细节和解决具体问题方案的推敲
4、缺乏对解决问题的深度思考和负责人的能力
看我总结的公式:
普通人
全栈 = 全干 = 啥都会 = 啥都不会
真全栈
全栈 = 全都不干 = 全都有解决方案 = 各个行业都能干
我觉得强大的解决问题能力是全栈工程师最重要的素质,也是全栈工程师的核心能力。 全栈工程师的解决问题能力,应该不局限于软件研发中碰到的技术问题,范围可以扩展到工程和科学相关的问题。这一点我们要向国外的极客大神们学习,国外很多极客具备硬件,软件,网络和人工智能等领域的全方位能力,例如无人机领域的大神拉菲罗·安德烈。亚马逊运营中心里酷炫的、数以万计的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开发或微信开发,以及服务器端接口的开发,这样才能做到沟通无障碍。