硅谷杰出工程师的五个能力

2024-01-23 04:32

本文主要是介绍硅谷杰出工程师的五个能力,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

曾任职于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,还要设定测试情境,这时候就可以思考如何加快这类重複性工作的速度。

五、发展系统性思考模式

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

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

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

这篇关于硅谷杰出工程师的五个能力的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/635234

相关文章

EasyPlayer.js网页H5 Web js播放器能力合集

最近遇到一个需求,要求做一款播放器,发现能力上跟EasyPlayer.js基本一致,满足要求: 需求 功性能 分类 需求描述 功能 预览 分屏模式 单分屏(单屏/全屏) 多分屏(2*2) 多分屏(3*3) 多分屏(4*4) 播放控制 播放(单个或全部) 暂停(暂停时展示最后一帧画面) 停止(单个或全部) 声音控制(开关/音量调节) 主辅码流切换 辅助功能 屏

计算机视觉工程师所需的基本技能

一、编程技能 熟练掌握编程语言 Python:在计算机视觉领域广泛应用,有丰富的库如 OpenCV、TensorFlow、PyTorch 等,方便进行算法实现和模型开发。 C++:运行效率高,适用于对性能要求严格的计算机视觉应用。 数据结构与算法 掌握常见的数据结构(如数组、链表、栈、队列、树、图等)和算法(如排序、搜索、动态规划等),能够优化代码性能,提高算法效率。 二、数学基础

《计算机视觉工程师养成计划》 ·数字图像处理·数字图像处理特征·概述~

1 定义         从哲学角度看:特征是从事物当中抽象出来用于区别其他类别事物的属性集合,图像特征则是从图像中抽取出来用于区别其他类别图像的属性集合。         从获取方式看:图像特征是通过对图像进行测量或借助算法计算得到的一组表达特性集合的向量。 2 认识         有些特征是视觉直观感受到的自然特征,例如亮度、边缘轮廓、纹理、色彩等。         有些特征需要通

未雨绸缪:环保专包二级资质续期工程师招聘时间策略

对于环保企业而言,在二级资质续期前启动工程师招聘的时间规划至关重要。考虑到招聘流程的复杂性、企业内部需求的变化以及政策标准的更新,建议环保企业在二级资质续期前至少提前6至12个月启动工程师招聘工作。这个时间规划可以细化为以下几个阶段: 一、前期准备阶段(提前6-12个月) 政策与标准研究: 深入研究国家和地方关于环保二级资质续期的最新政策、法规和标准,了解对工程师的具体要求。评估政策变化可

如何成为一个优秀的测试工程师

链接地址:http://blog.csdn.net/KerryZhu/article/details/5250504 我一直在想,如何将自己的测试团队打造成世界一流的团队?流程、测试自动化、创新、扁平式管理、国际标准制定、测试社区贡献、…… 但首先一点是明确的,就是要将每一个测试工程师打造成优秀的测试工程师,优秀的团队必须由优秀的成员构成。所以,先讨论“如何成为一个优秀的测试工程师”,

文心快码前端工程师观点分享:人机协同新模式的探索之路(三)

本系列视频来自百度工程效能部的前端研发经理杨经纬,她在由开源中国主办的“AI编程革新研发效能”OSC源创会·杭州站·105期线下沙龙活动上,从一款文心快码(Baidu Comate)前端工程师的角度,分享了关于智能研发工具本身的研发历程和理念。 以下视频是关于【人机协同新模式的探索之路】的观点三。 人机协同新模式的探索之路(三) 经纬说: 那么第三个阶段,我们会进一步的去探索

兼容Trino Connector,扩展Apache Doris数据源接入能力|Lakehouse 使用手册(四)

Apache Doris 内置支持包括 Hive、Iceberg、Hudi、Paimon、LakeSoul、JDBC 在内的多种 Catalog,并为其提供原生高性能且稳定的访问能力,以满足与数据湖的集成需求。而随着 Apache Doris 用户的增加,新的数据源连接需求也随之增加。因此,从 3.0 版本开始,Apache Doris 引入了 Trino Connector 兼容框架。 Tri

各类AI工具编程能力测试对比

各类AI工具编程能力对比 现在各类AI工具火爆,擅长各类问题解决,闲来无事,验证下各类AI工具的编程能力如何。问题:c++ 实现杨辉三角,并main函数测试 kimi 对话窗口输入问题,得到了c++的完整程序: #include <iostream>#include <vector>// 函数用于生成杨辉三角的前n行void generatePascalTriangle(int n)

信息安全工程师模拟测试题

信息安全工程师:信息安全工程师证书属于软考中级资格证书之一,为了适应“十三五”期间计算机软件行业发展需要,满足社会多方对信息安全技术人员的迫切需求,信息安全工程师在2016年下半年首次开考,目前一年仅考一次。 信息安全工程师模拟测试题 一、基础知识二、软件应用 信息安全工程师 属于《国家职业资格目录(2021年版)》目录中的证书,通过考试将颁发由人社局和工信部盖章

监理工程师职业资格考试

根据住房城乡建设部、交通运输部、水利部、人力资源社会保障部关于印发《监理工程师职业资格制度规定》《监理工程师职业资格考试实施办法》(建人规〔2020〕3号)文件精神,监理工程师职业资格考试实行全国统一大纲、统一命题、统一组织。 一、实施部门 住房城乡建设部、交通运输部、水利部、人力资源社会保障部。 二、科目介绍 监理工程师职业资格考试设《建设工程监理基本理论和相关法规》《建设工程合同管理》