高级工程师应具备的能力

作者:Cat Chen
链接:http://www.zhihu.com/question/22420900/answer/21458811
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  我觉得任何一方面的具体经验都不重要,重要的是思维方式和学习能力。首先说思维方式,那就是不为自己设限,不会想着自己是前端工程师,所以后端的东西我就一点也不碰。Facebook 的工程师,级别越高就需要保持越大的影响力。如何创造更大的影响力,就是寻找当前杠杆效应最明显的问题来解决。有些问题你解决了的话,投入进去的时间每小时能换回来一千美元;有些问题你解决了的话,投入进去的时间每小时能换回来一百万美元。然而哪些问题更值得解决,这是动态的,往往还存在衰减效应。如果现在性能瓶颈在后端,你做了一个季度两个季度优化后,瓶颈就已经不在后端了,你再优化下去衰减效应就会越来越明显。等瓶颈变成前端了,你是不是就说因为你不懂,所以不愿意碰?那就相当于寄望于公司有个前端很懂性能优化的人来解决,但如果公司没有这样的人那就没有人来解决了。

  Facebook 的众多海报当中,有一张写的是「任何一个 Facebook 的问题,都不是别人的问题」。有问题,你就需要去评估是否值得解决。如果值得解决,你就应该着手去解决,而不是假设公司内会有另外一个人比你更合适解决这个问题。这时候很可能你就需要去做你从来没有做过的事情,需要学习你原本可能完全不懂的技术。如果你是个专门做数学模型的博士,加入 Facebook 原本是打算做搜索结果优化的,结果发现这不是最急需解决的问题,JavaScript 性能才是最需要解决的问题,你怎么办?如果你以为 Facebook 需要的是你做数学模型的经验,那你就错了。Facebook 需要的是你完成博士学位的学习能力。你从来没做过 JavaScript 并且觉得 JavaScript 很恶心?正确的做法是立即在网上买几本 JavaScript 入门的书连夜看完,然后着手分析性能瓶颈并且解决。在你完成手动优化后,你还可以思考一下能否把这做成自动化,例如说在代码提交时分析 JavaScript 语法树并且指出可能成为性能瓶颈的地方,又或者说从用户浏览器那里收集性能数据扔到 Hive 然后再从中分析产生瓶颈的特征。这些都可能涉及到一些你没有做过也没有学过的东西,但问题摆在那里你就需要去解决,而无论这要求你去钻研什么。这就是我所说的学习能力。

  这是高级工程师和初级工程师的主要差距。尽管在高级到初级这一维度上,美国工程师和中国工程师是有重叠的,但美国的教育体系和行业传统使得美国应届生比一般中国工程师更偏向于高级那一端。美国学生的优势在于,他们的教育体系让他们习惯面对开放性问题。一家公司万千问题当中,此时此刻哪一个最值得解决?这不是中国工程师擅长的问题,因为实在是太开放了。中国教育让人擅长在给定条件下解决问题,太开放反而不知道从何入手。此外因为绝大多数文献都是英文的,所以要钻研什么对于能读懂英文的人来说都可以非常成体系的学习,这对于很多拒绝阅读英文的中国工程师来说很不利。拒绝阅读英文意味着永远只能接受别人的二手资料,对于很多概念的理解只能停留在技师的层面,而无法上升到工程师或者科学家的层面。

时间: 2024-10-11 00:19:39

高级工程师应具备的能力的相关文章

科略教育—管理者应具备五大能力

管理者需要有些比非管理者更出色的能力,而这些能力并不神秘,只要注意,我们都可以作到.?1.激励的能力???优秀的管理者不仅要善于激励员工,还要善于自我激励.要让员工充分的发挥自己的才能努力去工作,就要把员工的要我去做变成我要去做,实现这种转变的最佳方法就是对员工进行激励.如果我们用激励的方式而非命令的方式向员工安排工作,更能使员工体会到自己的重要性和工作的成就感.激励的方式并不会使你的管理权力被削弱.相反的,你会更加容易的安排工作,并能使他们更加愿意服从你的管理.作为一个管理者,特别是高层管理者

优秀PHP程序员应具备的5大能力

MySQL能力 在开发上的应用基于几个能力体现: (1)了解:知道用PHP连接数据库;懂得写一些简单的SQL;建一些简单的索引;懂得用工具简单操作一下数据库(增删改库表结构数据等等). (2)熟悉:懂得在开发应用上设计数据库,建立一些有效的索引,用explain分析SQL性能,压力测试等等. (3)很熟悉:深入了解数据库索引.存储引擎原理以及运行机制,能有效地构建高性能可扩展的数据库结构/架构,有效地优化数据库性能配置并加以调试,分析数据库运行状态. (4)精通:简单地说具备以上所有能力的同时,

一个中高级PHP工程师所应该具备的能力

很多面试,很多人员能力要求都有“PHP高级工程师的字眼”,如果您真心喜欢PHP,并且您刚起步,那么我简单说说一个PHP高级工程师所应该具备的,希望给初级或已经达到中级的PHP工程师一些帮助. 一.平静的心态 和所有程序员一样,要写一手好的程序,没有好的心态是不行的.遇事不可急躁,不可轻言放弃.在 程序开发过程中,尤其是初中级程序员,写出的程序或架构会遇到很多问题,其中一些问题比较弱智,而有些问题根本没有碰到过,于是不可太过急躁,应该逐个排 查问题的最初源泉,将其干掉.急躁的心态去开发系统是对项目

网络性能监控工具应具备何种技能?

现代网络性能监控工具应具备何种技能.以前,企业网络工程师不得不为各种连接的服务器.应用程序和终端设备提供网络接入和足够的带宽.从OSI模型角度看,这些工具主要关注于1-4层网络.由于通过一个网络的所有流量和数据流都共享全部的带宽和队列资源,更高的OSI层次多少被忽略了. 网络问题 除了提供简单的在线/断线状态和使用率信息,网络性能监控产品还能执行更复杂的自动化网络故障修复任务.这其中包括路由协议监控和计划外路由变化警报.此外,有一些产品还能使用智能技术去理解各种WAN技术.虚拟堆叠和QoS特性的

研究生要具备什么能力,学什么?

前些日子科学网热议师生关系,忍不住说了几句,每次都想到此为止,该去忙别的了.看到一些迷茫的眼睛,我还是再写些自己的经历和看法与大家分享. 我上小学早,四岁进学,还是上我妈教的班,虽然肚子里已经有了百多个字,加法也会,但一节课熬不住困,醒来还喊妈,几月后被退回幼儿园,重修了两年大班,才明白小学与幼儿园不同:上课不能打瞌睡,不能喊妈.升到初一没几天,地理老师吓了我一身汗.那是她的第二节课,一上来就点名抽查,一个留级生站起后很溜地答了两句,“我国地形西高东低,山脉多南北走向,还有-还有-”,就卡壳了.

嵌入式基础知识与嵌入式设计应具备的基本技能

嵌入式系统的定义:               以应用为中心,以计算机技术为基础,且软硬件可裁减,适应应用系统对功能.可靠性.成本.体积.功耗的严格要求的专用计算机系统. 嵌入式系统的特点:               系统内核小:嵌入式系统一般是应用于小型电子装置的,系统资源相对有限,所以内核较之传统的操作系统要小得多               专用性强:嵌入式系统的个性化很强,其中的软件系统和硬件的结合非常紧密,一般要针对硬件进行系统的移植               系统精简:嵌入式系统

程序员应具备的7大技能

1.  对技术的热忱 热情是一种无形的东西,当你所列清单上的所有事情都做不好的时候,它常常能帮你熬过这段时间.对IT的强烈热爱,也会让你的其他大部分特点都遥遥领 先,这是纯粹的智商和商业头脑所无法比拟的.当你在IT行业工作了多年之后,热情也会帮你在早上起床之后期待今天的工作.没有热情,IT领域将会成为一个 空有外壳没有灵魂的地方. 2.  懂得数据分析 数据是IT企业和它所服务的企业的命脉.对公司数据有深入的了解,可以对软件应用程序与数据的衔接提供重要的见解.此外,从商业的角度看,如果你对 一个

成为一个优秀的软件开发工程师应该具备的能力

很多人都希望成为一个优秀的软件开发工程师,那么,成为一个优秀的软件开发工程师应该具备哪些能力呢? 下面是我个人的见解,有不同想法的欢迎提出讨论. 在学习之初,我们往往强调的是开发技术,对于软件开发者而言,这是最初级也是最简单的要求. 我们想要把我们学到的知识运用到工作生活中,就需要了解行业知识了. 遇到问题如何解决就需要我们的思维能力了. 只有把这三者有效的结合起来,我们才可能成为一个优秀的软件开发工程师.

浅谈软件开发者应具备的基本素质

我们常常能在一些电子产品的发布会上听到新产品修复了某些BUG.开发出了某些先进的功能: 我们常常会听到某些黑客攻击某些网站的消息,也可能受过某些电脑病毒的侵害: 我们也常常能在一些科幻大片里见到程序员在紧急关头敲打代码拯救世界. 每天,我们都在使用着电子产品,使用着软件程序开发者的成果.但是,对于普通人,软件开发又高深.难以涉猎.而作为软件开发者,又应该怎么样对待软件开发,应当具备哪些素质?我正在学习软件开发,下面从个人的角度,浅谈自己的看法. 开发软件的基本前提是站在他人的角度考虑问题:软件开