摘要

今天我想给大家谈对全栈工程师(Engineering Culture • Recommended)的一点理解和想法.

我的理解

纵使目标再大,人的精力有限,于我来说,早些时候远大目标隐约是“成功的软件工程师”这个样子,但是目标是需要逐渐细化的。这些年我渐渐对自己的定位和未来有了一个清晰一点的认识。确实我有很强的观点,觉得软件工程师需要有足够的全面性,在《我眼中的工程师文化》中我也说“工程师文化,不是只有权力的一面,它对工程师的要求,是每个人都要足够能干,都要做许多的事”

但是,全面性不代表没有专精、没有方向。深度和广度统一的问题已经有许许多多过往的人和我说过了,不存在一个在某一领域精深的牛人但是知识却很窄,也不存在一个博学大师但是却没有一个自己擅长的领域;而方向更是不可回避的问题,以前和朋友开玩笑总结了几类工程师的发展方向,就像打怪升级一样,有数据库专精、有前端专精、有语言设计专精、有机器学习领域专精,甚至还有企业流程咨询专精、敏捷实践专精的……领域划分实在是太宽阔了,就看技能点数如何分配。

我当然也给自己寻找了方向。大家有关注我个人的公众号的朋友就会发现,公众号下面罗列3个领域,它们分别是:iOS技术,HTML5技术,机器学习,全栈工程师,这大概是对当前的我一个侧面最粗略的描述:

![这里写图片描述](https://img-blog.csdn.net/20160524102129994)

谈谈我对自己这三个领域的认识:


iOS,H5:是我一直以来感兴趣的领域移动端开发,早有人说现在互联网技术和发展甩传统软件好几条大街,尤其在见到很多朋友、牛人投身互联网领域,我更对它充满憧憬;

机器学习:算是我比较感兴趣的领域,算法的世界很有意思.

全栈工程师:是我的方向之一,粗略地说我现在也已经符合这样的标准,但是仁者见仁智者见智,这是以我的观点而言的,每个人对它有不同的理解,在这里我会说说我的看法。


其他人的理解

关于这个话题,当前颇有争议,虽说大部分工程师表示认可。在Google搜索“Full Stack Developer”的第一条记录,是Laurence Gellert(前汤森路透的工程师)写的一篇名为《What is a Full Stack developer》的文章,这篇文章的观点其实还是非常切合主线的:

To me, a Full Stack Developer is someone with familiarity in each layer, if not mastery in many and a genuine interest in all software technology.

并且罗列了满足“full stack”应当掌握的各层技术,包括服务器、网络、主机环境,数据建模,业务逻辑,API层/Action层/MVC,界面,用户体验和理解用户、业务所需。

在国内,知乎这个帖子应该算是热帖了,每个人都有自己的看法,比如第一条回复就提到了思维方式和学习能力,但是其中有很多观点偏离了“全栈”这个主线,变成了“我心目中的理想工程师”这样的讨论,就不符合初衷了。

全栈工程师的发展

在系统、全面的大公司,全栈工程师并没有一个稳定的发展职位。我无比赞同知乎那个帖子里面这样的一句话:


一个真正的全栈工程师,目标只有一个:创业。


听起来有些悲凉,但事实就是如此。任何一个方向颇具深度的工程师,都有希望为自己在那个特定的领域赢得自己的一席之地,是权威,也是技艺精深的专家。但是对于所谓的“全栈”而言,很多情况下根本就称不上优势,你会写数门程序语言,会设计API,会写前端代码,会做手机APP,甚至会切图,会和用户沟通,但是倘若在这些方向都难说有哪一项足够强大,那全面性又能在大公司的晋升线路上谋得什么?

但是创业的小公司就完全不是这样了,你不能指望有DBA、技服、产品经理、美工、前端设计师、服务器工程师、操作系统管理员……无数角色,你只能有那么少得可怜的几个人,每个人都必须是全才,搞得定各种事情,经验丰富、视野广阔。出了问题,一个人就可以搞定,而每个人,都可以彼此备份。

这也是“学习能力”在全栈工程师中扮演无比重要角色的原因。毕竟,在全面的工程师,也不可避免地涉足自己不熟悉的领域,快速学习并且把问题搞定,在这样的过程中体现自己的价值。

全栈工程师拥有更广阔的视野和更广泛的学识。全栈工程师可以从更高的角度去看待问题,这比某个领域的专家,更不容易做出错误的决策。

事实上,软件工程本来就是一个复杂的事情,需要工程师掌握和学习的知识很多。在我前一家公司,有这样一个故事,好几年前,公司尝试给软件工程师分档,甚至依此使用不同的雇佣实体:让来自子公司A的最优秀的工程师设计了程序,再让来自子公司B的平庸工程师去实现。最后这个方案彻底失败了,两家子公司的工程师被迫合并,这也证明了,软件工程是一项复杂的脑力劳动,想像流水线工人那样,把整个环境简单地切分成若干个过程,然后通过简单劳动完成,是不可能的。你可以举出很多外包、内包公司中上述的例子,但是在我看来,这只是对劳动力的压榨而已,别指望这样的形式能做出什么伟大的产品来。

“全栈”不等于“全面”

“Full Stack”,这个词其实在英文中使用很普遍,可以直译为所谓“全面的技术栈”(软件工程中,每个领域都拥有相应的数种不同技术,这就是这个领域的技术栈),现在人们加入了自己的理解,但无论如何,它绝不等于“comprehensive”。换言之,一个全栈工程师,绝不等于一个全面的工程师。接触多点领域当然有好处,但是浅尝辄止、仅仅停留在入门级别,那这个领域内,给别人、给项目造成的危害,甚至大过那些一窍不通的人。举例来说,你是愿意去给一坨屎一样的设计和代码修修补补呢,还是愿意干脆重新弄一个呢?当然,也不要走极端,有一些领域的知识,可以透明,那就透明吧,比如,使用云服务的时候,你可以对硬件知之甚少,这对工作并无碍。仅仅为了全栈的名号,追求这样的知识储备并无必要。

“全栈”不等于“全端”

全栈工程师的划分,绝不止以“互联网应用”的维度,更特别地,绝不止以“互联网网站”的维度。微博上很多人说到全栈,就提“全端”,我认为,这实在是莫大的误解,二者是严重不等同的。前端+后端,这只是其中一种粗暴的划分方式而已。就像同事中,有对操作系统熟悉的,有对机器学习熟悉的,把他们粗暴地归结为“后端”工程师,是毫无意义的。即便说到创业,也远远不止互联网领域啊。事实上,要能比较熟悉其中几个领域,就已经是非常难得的人才了。我想不出还有什么其他行业,会像软件行业这样需要不断地扩充自己。

最后,我想用一个无比简单的词来描述全栈工程师,肯定不够准确,但也足够直接 那就是视野!

关于全栈工程师的一点想法相关推荐

  1. 大写的服!用耳朵也能写代码?盲人程序员自学编程成为全栈工程师

    作者 | 年素清 责编 | 王晓曼 出品 | 程序人生 (ID:coder _life) 蔡勇斌幼年失明,靠着顽强的毅力和不服输的精神自学编程,成为了一名全栈工程师.作为一名盲人,为了让全中国的其他盲 ...

  2. 云巴创始人张虎:一个优秀的软件工程师必然是全栈工程师

    张虎,云巴 (yunba.io) 创始人兼CEO,致力于为开发者提供优质云后端服务.他有十几年的软件研发经验,精通嵌入式系统.服务器端架构.虚拟化等.张虎曾就职于华为.Oracle,他是Oracle ...

  3. 全栈工程师的思考 | 步步进阶经验之谈

    什么是全栈工程师 在现在这一个时代来说,不会有人掌握所有的编程语言.技能,以后应该会有,但是掌握这些全部技术的不是人类了.所以,其实我们需要的是懂得多种技术的,并能借些独立完成产品的人. 当我们需要做 ...

  4. 《Web全栈工程师的自我修养》

    1. 什么是全栈工程师 Full-Stack Engineer Facaebook只招全栈工程师? Web开发流程 产品经理-->交互设计-->视觉设计-->开发(前端.后端)--& ...

  5. 大龄开发者究竟该何去何从?2019年Python全栈工程师,都是开发人员改怎么转向高收入?

    是继续做技术还是"强迫"自己转型做管理? 作者 | Petr Zemek 译者 | 弯月,责编 | 郭芮 出品 | CSDN(ID:CSDNnews) 以下为译文: 很多人因为喜欢 ...

  6. 《web全栈工程师》:中总结的20条军规和必读书单

    作为一个前端新人,应该不断学习加强各种基础技术,而且也要多看别人的建议,别人成功的经历或许不能让你复制,但是你总能从中有所收获,身体和灵魂总要有一个在路上. 今天抱起了实习时候充充翻过的一本书< ...

  7. 全栈工程师修炼指南 - 学习/实践

    1.介绍 TBD 2.应用背景 TBD 3.学习 参考: https://xueyuanjun.com/books/php-fullstack 后续补充 ... 4.推荐书籍 TBD 5.学习体会 T ...

  8. 如何成为全栈工程师?

    转自:http://mp.weixin.qq.com/s?__biz=MzA3NTIzMzIxNQ==&mid=208316668&idx=1&sn=c57fb38fa7b1d ...

  9. 《Web全栈工程师的自我修养》读书笔记

    <Web全栈工程师的自我修养>读书笔记 [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://w ...

最新文章

  1. python 将ipv4的格式转换
  2. 《从零开始系列-Project 2010视频教程 (102课时)》 教你进行有效的项目管理
  3. 【简便解法】1074 宇宙无敌加法器 (20分)_40行代码AC
  4. 十问十答 GPL 许可证
  5. 2019入门级云主机选型测试报告
  6. iPhone 5用户们,苹果又喊你更新了,不然可能会变砖!
  7. jsp文件命名规范_代码规范整理
  8. Orabbix监控oracle
  9. 解压版mysql中文变成_解压版MYSQL中文乱码问题解决方案
  10. 咖说丨破碎的互联网下,加密技术正在恢复数据主权!
  11. 公司员工考勤系统Java代码
  12. 笔试的图形推理题怎么做?
  13. html如何自动获取屏幕高度,css如何获取屏幕高度?
  14. 2018年的生活及工作计划
  15. idea加密解密C++实现
  16. 研究中学习【方法】 | Heckman二值选择模型
  17. 北航计算机刘强,刘强 LIU Qiang
  18. GEA无法运行Python 程序
  19. 华为鸿蒙新机2k曲面屏,华为5G新旗舰已确认,双曲面屏+升级到鸿蒙2.0,价格很感人...
  20. 陆涛喜欢夏琳吗_夏琳·香布利斯(Charlene Chambliss):从心理学到自然语言处理和应用研究

热门文章

  1. 英威腾GD200电路图 GD300原理图 CHF100图纸 pdf格式
  2. 10个优秀的日志分析工具
  3. 怎么用一分钟,画出一份思维导图?
  4. ospf:简介+功能配置1(Cisco系)
  5. winapi属于底层开发吗_请问一下关于VC++的Winmain函数(WINAPI是什么?)
  6. numpy.linspace函数
  7. 取消A64 默认耳机模式
  8. 音乐播放器项目:使用网易云音乐api开发网页版音乐播放器开发难题(一)
  9. Spark:运行原理 图解
  10. uni-app入门并使用学习