会写程序还不够,硅谷杰出软件工程师都有的 5 种能力

曾任职于Google和Quora等公司、现任Quip软件工程师的Edmond Lau,于 《The Effective Engineer》 一书中访问任职于Facebook、Instagram和Google等知名网路公司的资深软件工程师,归纳出他们眼中高生产力的杰出软件工程师都具备的五种能力。

一、不害怕探索陌生程序语言

接触新专案或是转换工作跑道时,都有可能需要学习全然陌生的程序语言,许多人对此感到害怕,甚至未尝试就先放弃。其中,跳脱舒适圈的恐惧往往多于学习程序,会担心是否无法重现过去工作的好表现,甚至因此怀疑自身能力。

不论是多厉害的工程师,一定都有起点,就像打造Microsoft Windows基础的微软资深工程师Dave Cutler为文组出身,没受过正式电脑科学教育,比起同辈花更多时间在错误中学习。在这之中,最重要的两个关键为具备「成长心态」(growth-mindset)而非「固守心态」(fixed-mindset),以及「乐于学习」(optimize for learning)的态度。

学习陌生程序语言这项关键能力会越练越上手,并让你在学习过程中成为更好的程序设计师。

二、精通Debug

「为什麽程序跑出来和我预期的不一样?」是许多工程师会遇到的问题。Debug能力往往是影响工程师是否能顺利完成专案的关键因素,却被大部分人低估。Debug的系统性思考如下:

  1. 先假设造成bug的可能原因。
  2. 若假设为真,界定此假设可能导致的结果。
  3. 试著检视是否有和这些结果衝突的现象。
  4. 若有衝突表示假设错误,要重複上述思考过程。

由此可知,想加快Debug速度,要提升「提出假设」和「检视假设」的能力。假设能力可随著Debug经验的累积而提升,检视能力则需加强善用检测工具的技能。在此过程,必须先假设所有东西都是可检视的,并找出可用来检测或加快检测速度的工具或机制,千万不要只用自己熟悉的工具。

三、开发节省时间的工具

减少时间做那些电脑就可做的工作,例如开发节省时间的工具和使工作流程自动化。

曾负责Facebook软件基础建设团队的软件工程师Bobby Johnson,带领该团队从6人成长至超过1百人。他观察到,团队中表现出色的人多数写了许多工具,这些看似和绩效无直接相关的工具开发时间可能佔三分之一的工作时间,却因此大大提升工作效率,其中包含用来部署程序、监测系统,以及其他可节省时间的工具。

四、优化重複性工作的速度

软件工程师每天可能要搜寻、浏览函数定义很多次,善用键盘快捷键可省下可观的时间。例如,每次搜寻需花12秒,类似的步骤每天要重複20次,若用快捷键可将搜寻时间缩短到2秒,一年下来即省了40个小时。其他状况如每次Debug都需要在不同装置测试,除了要分别打开app,还要设定测试情境,这时候就可以思考如何加快这类重複性工作的速度。

五、发展系统性思考模式

写完程序码、让程序可运作仅是冰山一角,要产出真正有价值的程序,必须从程序本身提升到整个系统来思考。

  • 你的程序和其他程序库以及其他人写的功能是否相容?
  • 程序是否测试完成,并确保其他成员可执行你写的这些功能?
  • 部署你的程序需要改变哪些生产环境?
  • 新程序对其他正在运作的系统是否有负面影响?
  • 客户和使用者的新程序使用情况是否如预期?
  • 新程序是否达到公司期待的效果?

从巨观的角度思考问题,可让你更懂得如何调配时间和精力以让程序达到最佳效果。

本文作者:佚名

来源:51CTO

时间: 2024-08-03 23:31:06

会写程序还不够,硅谷杰出软件工程师都有的 5 种能力的相关文章

写代码可能是成为软件工程师最容易的部分

当然,写代码是超级重要的,但是我认为它只是整个过程中的一小部分,且不一定是最难学的. 学习如何写代码要花些时间,但是只要有足够的训练(每天写代码,坚持数年),你就能真正擅长它. 你知道的,我相信在某种程度上,每个软件开发人员几乎能给任何软件写代码.(当然有时候这要用更长的时间,但是你不再感到害怕,肯定能按照你的方式来运行.) 我和自己的同事都看到了这种现象.我今天的一部分工作是把项目分配给开发人员,我的团队有一些成员,常常能够适应任何项目.这些家伙就是我说的能够给任何软件写代码的人. 基本上,我

硅谷高科技公司软件工程师薪酬比拼:Twitter排第一

软件工程师已经成为高科技公司最为重要的财产,因此他们往往也拿着非常高的薪酬.那么在硅谷这个http://www.aliyun.com/zixun/aggregation/9993.html">科技创新的重镇,他们的薪酬怎样呢,我们来看看GlassDoor针对初级工程师做的一个排名,结果可能有点出乎意料: 排名第一位的为Twitter:平均年薪114917美元 Facebook:平均年薪111428美元 LinkedIn:平均年薪110902美元 思科:平均年薪105562美元 苹果:平均年

为什么软件工程师应该养成写作的习惯?

在学校里,有"文科生"和"理科生"的区分,学习内容不同,思维方式也有差异.我是一名理科生,大学里我的专业是计算机科学,毕业后我的工作是软件工程师.在这个过程中,我发现文理科之间的鸿沟始终无法弥合.我见到的很多工程师害怕写文章,而文科生看到代码就头疼. 我认为,程序员应该养成写作的习惯.因为写文章会锻炼许多对于编程十分有益的技能. 写文章和写代码最核心的共同之处在于它们都需要清晰思考的能力.顶尖的软件工程师往往也是优秀的写作者,他们的文章和代码一样富有逻辑性,行文流畅

深圳招C#软件工程师

问题描述 招聘C#软件工程师1名,程序员1名软件工程师要求:1.有小项目开发经验2.独立完成过小项目,熟悉软件项目的流程和文档3.工作地点:深圳宝安西乡4.工资待遇:2500元/月-3500元/月,不包吃住,无加班费5.项目提成:提成为利润的5%,每个月做一次结算6.出差补贴:(n-1)*40,交通住宿正常报销,若自己解决住宿,按当地2星级的50%折现7.工作时间:正常时间8:30-11:30,13:30-17:30,5天工作制,但根据项目进展可能需要经常加班8.需要敬业.细心+冒险创新精神9.

Java软件工程师,IT时代的新宠儿

问题描述 IT专业人员的调查报告中发现,超过百分之八十的公司正在使用Java技术或是运用Java开发专案.Gartner的分析报告上说,1995年学习HTML的风潮相比,当前学习Java更是一种专业的趋势,因为这些需求来自於大量B2B应用系统,而这些需求会延续很长一段时间.目前,超过一半儿的开发人员都使用Java,而明年,这一数字可能再增加10%.Java吸引了部分VisualBasic和C/C++的用户.Garvin说,"这就意味着,在明年使用Java的开发人员将首次超过使用VisualBas

一张图看懂数据科学家、数据工程师和软件工程师之间的区别

大家都知道,这三种角色各有不同定位,也知道他们之间有许多一致的地方,但是否能讲明白这其中的区别呢? 国外 ETL 服务商 Stitch 的 CEO Jake Stein,近日对这个话题进行了总结.他还绘制了一张工具图,来呈现他们在日常工具使用上的不同.对于新手,也可以通过这张图来看典型的"数据科学家"."数据工程师"和"软件工程师"都要掌握哪些工具. Jake Stein:随着数据的爆炸式增长,对数据处理的专家技能需求也随之井喷.这带来的结果之一

北京某IT公司招聘Java软件工程师有感

&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp; 当今社会不论什么职业的都需要一个不断学习的环节,软件工程师也一样.虽然软件工程师的工作不同于程序员但是一个软件工程师其前身必定是一个优秀的程序员,软件的开发工具.开发技术在不断地发展.在校学生所能学到的东西很难跟得上发展的需要但是也不能说那些东西完全没有用,只有在完全理解了相应的基本技能之后你才能很轻松地掌握新的技能,软件技术都是一个循序渐进的过程.所以学好学校所能

软件工程师需要数学的真正理由

[软件工程师需要数学的真正理由](http://blog.csdn.net/g9yuayon/article/details/8737) 作者:Keith Devlin 翻译:g9yuayon 本文译自 The Communication of ACM 第44卷,2001年第10期 软件工程师们常常宣称他们从来不用在大学里学到的任何数学知识. 说到这个,他们还会说连大学里学到的计算机专业知识都用不了多少.我搞了三十年数学,就让别人来谈计算机专业方面的情况,不过就数学的使用情况而言,我不得不坦白承

硅谷软件工程师生活的另一面

硅谷科技创业公司的软件工程师有着令人羡慕的一面:从高薪.奖金.股权到免费食物和一站式健身俱乐部.但这种生活是有代价的.软件工程师通过Quora谈论了他们生活中不为人知的另一面. Google的一位网站可靠性工程师从早上9点工作到晚上7点,有时还要加班到10点.他必须在5分钟内响应警告.如果他在回家的路上收到警告,他必须立 即从背包里拿出笔记本进行调试,而不能回家后再干.一位在芯片公司公司的软件工程师称他没有时间留给家人,经常回到家已经午夜了,而闹钟会在早上6点30 响起.还有工程师抱怨称,薪水虽