对所有技术浅尝辄止的所谓「全栈工程师」已经OUT,那么现在,我们需要怎样的跨领域技术综合者呢?

我敢打赌,没有人可以凭借一己之力掌握下图这些领域不断更新的先进知识。单单是紧跟每个类别中的进化和新的编程接口,就几乎是一个全职的工作量。

在Web 2.0时代,全栈工程师是可能的,但是随着新一代创业公司的兴起,推动了各种技术的边际突破。从机器智能到数据分析、再到可穿戴/移动设备,让一个程序员个体实现跨全栈编程实际上变得不现实了。

在还没有移动和Web的上世纪七十年代后期,通常是一个人从头到尾写全部的程序,在程序员和硬件之间并没有很多其他的软件层。8位处理器和内存非常有限的机器,迫使程序员使用规范的汇编语言。

随 着上世纪80年代末和90年代初客户机/服务器处理(client/server computing)的演进,以及90年代末20世纪初互联网浪潮的来临,编程应用很快成为一项团队行为。新技术的每一面都是如此复杂,以至于需要专门的 专家,即一个人精通好几层(如前端/数据库/应用服务器等)。维护一个商业网站成为一门专业,包括操作网络设备(e.g.路由器和负载平衡器等),调整 Java虚拟机,以及使用各种数据库索引机制。

到了21世纪中期,创造几乎任何东西,从简单的网站到下一代SaaS服务,都十分地昂贵。上 涨的费用直接与从各个层相关的许多个人之间的开销通信(并且经常错过通信),以及在一层级联到其它层和成部署参数的改变有关。正如Marc Andreessen(网景创始人,现风投)在Twitter上刷屏讨论烧钱问题时说:「大量员工将使通信效率呈指数式下降,导致所有一切速度放慢。」(More people multiplies communication overhead exponentially, slows everything down.)

另 一方面,创造新一代Web 2.0网站的技术越来越精简和简化。程序员从使用复杂的企业级Java堆栈和数据库(e.g.Oracle),切换到更直接的LAMP组合(Linux操 作系统,Apache,MySQL和PHP/ Python/Perl)。新的语言和框架(e.g.Diango和Ruby on Rails)使得网站和数据库之间的层自动化。前端框架(e.g.jQuery)帮助简化了不同浏览器之间错综复杂的关系。云服务(e.g.Amazon Web Services)简化了部署,提供了钥匙网络。

到21世纪后期,对许多程序员来说,提供一个完整的消费者或SaaS的网站成为 可能,包括一个动态的Web客户端,服务器端的业务逻辑,一个可伸缩的数据库,部署和运营支持。这种新品种的全栈工程师可以和一支团队一样完成整个任务的 环。当这个项目做大了,全栈工程师可以实现一个人在应用的所有层加一个功能,这样就减少了和不同层的人沟通的通信成本,从而加速功能交付。

如果你建的网站是上面这样的全栈模型,找到全栈工程师可以有效地解决问题。但是现如今,我认为,这并不是够格的全栈工程师。第一张图才是更全面的全栈。

我 们正处在向更多复杂科技迅速转型的中期,随着时间的流逝,在每一层都需要专家。开发优秀的iOS和Android应用需要理解这些平台错综复杂的专家。在 实际操作中,转向新的数据库,比如MongoDB,需要不断的关注和调整。在云服务(e.g.Amazon)上运行一个应用需要了解它的各种服务的细节, 以及如何实现跨区域故障转移的专业知识。即便是古老的Web前端,现在都演变成CSS4、JSON和JavaScript的MVC框架,比如 Angular.js和Backbone.js。

在这个全新的世界中,关键是至少有这样一个人:对每一个部件都至少有功能性的了解,同时可 以把不同的层连接起来,和不同领域的专家一起合作,从而最终实现某个功能。在这种意义上,这些连接层、建桥的软件工程师,即精通某一层或好几层的专家,就 是比全栈工程师少一点,比全栈综合者(Full Stack Integrator)多一点儿的人。

总之,「全栈工程师」,可以安息了。在无限广阔的未来,我们欢迎在某一特定领域有深入技术见解的「全栈综合者」!

100offer的用户是怎样看「全栈」的?

用户背景
周 瑾(化名),7年以上开发经验,国内一本毕业,BAT资深研发工程师,具备多个大型平台前端架构设计开发经验,有iOS、MAC开发经验,有移动Web开 发经验,精通NodeJS,熟悉后端开发的流程和技术面,具备全栈开发能力。团队管理经验丰富。在5月第3期拍卖中收获37个面试机会,现已入职北京某创 业公司。

100offer:普通程序员如何向全栈发展?

周瑾:我认为工程师可以分为两 种:一种喜欢钻细一个东西,然后以此为生;还有一种喜欢不断折腾,需要去满足自己了解未知的欲望。拿我自己来说,我属于后者。我有创业经历,也做过大公司 的螺丝钉。螺丝钉其实满足不了我对技术的兴趣,所以在工作过程中我在不断寻找自己的技术边界,并试图打破它。就这样,技术开始变得一点点全面起来。

全栈绝对是自我驱动的一个过程,我其实是在不知不觉中会了这么点东西,变成了所谓的「全栈」似的。业界的高手多得很啊^^

100offer:全栈工程师适合创业公司,还是大公司?

周瑾:创业公司比较喜欢招全栈,这和创业公司的需求有关系,因为创业初期的公司可能需要一个人做几个人的活。另外,可能老板是技术出身,了解部门之间衔接所需要付出的巨大沟通成本,所以倾向于更少的沟通单位。

其 实大公司也不错,大公司有更人性化的工作时间,且稳定,一般情况下是不会让员工的工作饱和到满(当然有些个别组很过分)。在大公司的时候,我完成了自己的 工作,喜欢折腾什么就折腾什么,然后你觉得自己可以了就可以申请转岗成其他职位(当然这里也要自己承担角色转换带来KPI问题,毕竟换了领域就是一个新兵 了嘛)。

总之,全栈不应该是对所有技术浅尝辄止,而是一专多能或多专多能。无论是自己去创业,还是放到固定岗位上都能大放异彩。

100offer:全栈工程师有什么优势呢?

周瑾:我其实不怎么觉得全栈有优势,我只能说能看到这种人身上的一点点共性。视野,思维和学习能力确实有点优势,但我认为共性是性格上的。我接触到的在互联网行业跨领域性的人,其实都比较单纯,或者说编程对于这类人来说不是一种谋生途径而是一种个人兴趣。

我觉得全栈更多的是自己对纯技术的渴求,深入任何一个技术领域都是很细致的一件事,全栈与否更多的是一种经验上量变到质变的过程。

100 offer:为什么你不需要做一名全栈工程师?相关推荐

  1. 拿不到 offer 免费学 | 廖雪峰的“大数据分析全栈工程师”课程第11期开始招生...

    8月,开课吧与百度.微软.阿里.滴滴以及创新工场等头部企业展开深度合作.至此,开课吧系统化课程<大数据分析全栈工程师>将注入更多"大厂脱敏数据.实战项目.云服务等"新鲜 ...

  2. 拿不到 Offer 免费学,廖雪峰的“大数据分析全栈工程师”课程第11期即将封班!...

    随着大数据.人工智能的发展,企业每天会产生海量数据,而BAT等大厂日均数据更是达到了PB级别.企业则需要大量"数据人才"来处理这些复杂数据,帮企业精细化运营.因此,"大数 ...

  3. 【微信小程序控制硬件⑦ 进阶篇】动起来做一个微信小程序Mqtt协议控制智能硬件的框架,为心里全栈工程师梦想浇水。

    文章目录 一.前言: 二.涉及的技术点: 三.框架的运行原理: 四.框架代码流程: 4.1 主线程: 4.2 获取设备列表显示设备,以及订阅在线的设备: 4.3 点击某设备如何实现携带此设备信息到控制 ...

  4. 如何做一名优秀网络安全工程师

    如何做一名优秀网络安全工程师 随着信息化的快速发展,网络安全问题更加突出,对网络安全人才建设不断提出新的要求.网络安全企业需要发现和雇佣深入了解网络安全实践和流程的优秀安全人才.以下总结梳理了优秀网络 ...

  5. 如何做一名算法应用工程师?

    1.定义 机器学习算法,或者说"算法工程师"这个职位名称里的"算法",并不是计算机系本科课程<算法与数据结构>里那个算法.那门课里讲的,是排序.查找 ...

  6. 想做全栈工程师?你要学习的还有很多。

    程序语千百种,想要学 Coding 就必须先确定你的目的是什么,有的是拿来写 App 的,有的是专写操作系统,有的则是拿来写网页的 -- 各种不同的目的都有其最适合的语言. 常见的语言如 C++.Ja ...

  7. 从平头哥讲起,谈谈全域旅游,说说为什么要做全栈工程师

    相信身为互联网+时代的人,都已经听说了[平头哥]的大名,这个一生都行走在干架路上的非洲生物,让我想起了去北京旅游的高铁上,看到的一本杂志,其杂志名称已经不记得了,但是有一个词让我印象深刻[生态旅游]. ...

  8. 人工智能为什么要做全栈工程师

    武汉团队将人工智能深度学习应用于游戏创作大武汉客户端5月31日讯游戏中,你能想象你的对手是人工智能吗? 金山武汉团队深度参与的一款生存手游,在业界率先将人工智能应用于游戏制作. 5月31日,金山武汉总 ...

  9. 做个全栈工程师真的好吗?

    全栈工程师是什么意思?用大白话讲就是万金油,什么都会,无所不能,是全能型的人才,就是你前端.后端.数据库.服务器等等什么都会! 万金油指人或物在任何情况下都能起到作用,有无所不能的意思,此时为褒义. ...

  10. 拿不到offer免费学,廖雪峰的“Web 全栈架构师”开班了

    互联网时代已进入后半场,行业环境发生了显著变化.互联网人,尤其是技术人员,如何在加速更迭的技术浪潮中持续充电,提升自身价值,是当下必须面对的挑战. 业内知名的 廖雪峰老师 联合了 开课吧 专门为工作1 ...

最新文章

  1. Go 学习笔记(1)— Ubuntu 系统 Go 环境搭建、VS Code 配置 Go 开发环境、VS Code 远程开发配置
  2. 数字证书及网络加解密原理
  3. python读音有道词典-利用python实现命令行有道词典的方法示例
  4. Scala学习之路 (六)Scala的类、对象、继承、特质
  5. 在EO中获取某字段基于表的列名
  6. 【原】iOS触摸事件深度解析
  7. Vue:错误Component template should contain exactly one root element解决
  8. 最近遇到个关于接口的奇怪的问题
  9. web的标准网页设计与php课后,第3章web标准与html
  10. 基于Ubuntu的linux环境制作嵌入式SD/TF启动卡
  11. 第145章 SQL函数 TO_NUMBER
  12. 二维数组传参(二维数组作为函数参数)
  13. ROS中机械手臂的运动规划
  14. R语言在Ubuntu环境下添加times new roman字体
  15. 一阶线性齐次,非齐次方程的通解和解的结构定理,推导过程。
  16. Python爬虫-bug处理办法(持续更新)
  17. 网络游戏专业术语中英文对照版
  18. MiniGUI——第一个程序helloworld
  19. UTF-8的编码规则
  20. Android开发者选项——GPU呈现模式分析

热门文章

  1. 带农历的html日历插件,魔镜日历插件-可生成带农历的日历月历年历-CDR插件
  2. Linux 非源码安装 xrdp
  3. Kubernets的资源管理
  4. java swing GUI窗口美化
  5. 【冬瓜哥论文】浅析固态介质在存储系统中的应用方式
  6. 怎么做到css和html分开,CSS结构与表现分离怎么实现?
  7. JUC学习笔记(二)——常用的辅助类
  8. java调用百度云api_百度云—使用机器人视觉SDK调用百度API方法教程
  9. java导出csv文件,使用Excel打开中文乱码
  10. 吴恩达机器学习打卡day6