如何成为更优秀的工程师?

嵌入式资讯精选 2018-10-28 09:51 次阅读
来自Heap(一家主要为企业提供用户数据分析架构的企业)早期员工Michael Malis,就如何成为一名更加优秀的工程师给出了自己的日常训练方式: 读论文; 学习一种新的工具; 读书; 录屏。 其中第四点比较有趣,大家感兴趣可以直接跳到第四部分,看看他是如何具体实施的。以下为正文。 如何成为更优秀的工程师? 我的成为更好的工程师的方法是建立一套训练体系。这套体系里有一些固定的练习,我每周都会进行。设计这套训练体系有两个非常明确的目标: 学习解决之前不会解决的问题; 学习如何更快更好的写程序。 训练计划主要是由四个练习组成的,每一个都会帮助我向上面的两个目标前进。这四个练习是: 读论文; 学习新工具; 读书; 写程序的时候录屏。然后回顾一下,看看能不能写得更快。 下面我会详细地介绍一下我是怎么做的。我想分享一些练习的细节,还有我从中获得的收益。 读论文 这项练习的目标是拓展CS相关的知识。在这之中我发现有两方面直接收益。第一是一些论文可以改变我对一些固定问题的思考模式。举个栗子,The Tail at Scale这篇论文验证了反直觉的长尾延迟的本质。 其中我认为比较有趣的是关于在大量机器上运行一个请求是怎样影响延时的问题。作者研究了Google一项服务的实验数据。这项服务将请求拆分,然后分发给不同的服务。 他们用数据评估了一下,将请求分发给100个服务的情况。作者发现,如果你测量从100项服务获得回复的时间,一半以上的时间花费在等待最后五项服务的回复上。 这是因为最慢的5%的请求要比其他请求慢非常多。论文也给出了一些方法来降低长尾延迟。我发现这些方法,在我这边的一些工作上也可以用。 第二个好处是我发现读论文可以让我融会贯通不同系统的知识。举个栗子,Google的分布式数据库Spanner。 Spanner用了很多不同的技术,比如Paxos、two phase commit、MVCC和predicted locks。通过阅读相关论文,我就能建立对于这些不同的技术的理解。这可以让我以一个整体来理解Spanner,并且和其他系统比较Spanner的利弊。 我读的论文主要来自于以前读过的论文的参考文献或者Morning Paper的封面文章。Designing Data Intensive Applications这本书的参考文献里也有很多值得一读的论文。 学习新工具 解决问题最简单办法之一就是用一个解决这种问题的工具。这个练习就是选一个工具,然后学习一下它。 通常我的练习过程就是,安装工具,练几个教程,然后简单看看手册。我这么学过的工具范围从bash指令比如JQ、Sed到分布式系统比如Kafka、Zookeeper。 学习bash指令让我解决日常问题的效率提升了很多。类似的,学习不同的分布式系统可以让我明白如何针对不同的问题运用不同的工具。 读书 我用书来补充从论文里或者学习工具无法获得的知识。我读过的书主题范围比较广。比如最近读过的: Refactoring– 这本书让我明白好的代码是什么样的,以及如何将不好的代码转化为好的代码。 Getting Things Done– 这本书让我明白如何安排工作的优先级以及如何追踪工作进展。它帮我建立了一套体系来确认优先完成重要的工作。 The First Time Manager– 最近我刚好做了团队管理员,需要协调不同的团队一起工作,还要主持团队会议。这本书有助于我理解管理的基本原理。 录屏 这个训练是我的最爱。这个练习也是对我解决问题改变最大的。运动员经常会看自己的录像来让自己做的更好。 所以我决定也这么搞一下,来提升编程能力。我从自己的录屏里学到的经验包括: 它可以帮助你在写代码的时候就测试代码。这样可以通过快速定位Bug来减少DEBUG方面消耗的时间。如果之前的代码都没有Bug,那Bug肯定是在你新写的代码里。 当DEBUG时,针对要DEBUG的对象专门添加函数是非常有必要的。举个栗子,之前一个玩具的项目,我要写一个LRU缓存。写了个Bug,它不能清除正确的元素。这时我就可以快速地添加一个打印当前缓存状态的函数来看一下是哪里出问题了。之后我就可以看一下缓存的期望状态和现在实际情况的差别。这样就可以让我快速定位Bug。 在开始写代码之前,花五分钟决定一下方向会非常的有效。这么做有两点好处。首先是能够确认方向是正确的。更重要的是,这样可以强迫自己选择单一的方向。因为看了我的录像后,我发现我在选择实现方向上经常犹豫很长的时间,其实两个方向都还OK。 所有这些经验现在回顾的时候都很明显。但是在我看录像,发现我在哪里花费大量时间之前都没有能够系统地将这些经验总结出来。 我做这项练习的步骤是: 记录一些我写程序的录像。可以是工作中的,也可以是在LeetCode这种刷题网站上刷题的时候。 十倍速看一遍录像,并且记录每个时刻我在做什么。 然后统计一下在大的类别上分别花费的时间。比如花了多少时间DEBUG,花了多少时间写功能。 看看花时间最长的类目。然后仔细研究下为啥花费了这么长的时间。 提出一些能够让我节约时间的方法。有一些办法可以让我把代码结构化,然后可以让我少写一些代码或者更快找到Bug。 我强烈推荐写代码的时候录屏。这是一种最简单的不断做一些小的改变来让自己效率更高的方法。 这套训练策略我坚持差不多一年了。感受到自己发生了很大的改变。学到了很多之前没有学过的关于系统和工具的知识。 现在解决问题也要比之前快。希望你能考虑一下这些练习,然后自己也尝试一下。
原文标题:如何成为更优秀的工程师? 文章出处:【微信号:mcuworld,微信公众号:嵌入式资讯精选】欢迎添加关注!文章转载请注明出处。
收藏 人收藏
分享:

评论

相关推荐

录音工程中需要避免那6个容易发生的错误

在一个录音工程中,对声音的拾取并不是唯一重要的一部分-通常除此之外还有很多方面需要考虑。为了达到最好....
的头像 Midifan 发表于 11-17 11:37 120次 阅读
录音工程中需要避免那6个容易发生的错误

NLP-Progress库NLP的最新数据集、论文和代码

方向是自然语言处理的同学们有福啦,为了跟踪自然语言处理(NLP)的进展,有大量仁人志士在 Githu....
的头像 中国人工智能学会 发表于 11-17 09:21 54次 阅读
NLP-Progress库NLP的最新数据集、论文和代码

大数据的基础起源发展和处理流程应用及面临的挑战和展望

大数据作为当今的热点技术,受到了各行各业的广泛关注。为了进一步认识大数据,本文从大数据的基础、大数据....
发表于 11-15 17:11 41次 阅读
大数据的基础起源发展和处理流程应用及面临的挑战和展望

从微观角度来看Linux内核设计

这就是究极形态了,我们添加了第四行的代码,来看&_min1,它的意思是取_min1的地址,而&_mi....
的头像 Linuxer 发表于 11-15 16:29 167次 阅读
从微观角度来看Linux内核设计

常见的可视化告警

折线图可能是最常见的可视化方式了,它可以让用户很直观地按照时间维度了解系统的情况。系统中每个单一或聚....
的头像 Linux爱好者 发表于 11-15 12:49 491次 阅读
常见的可视化告警

山外官方K60开发板参考代码合集V5.3(支持FX、FN和DNZ)

本文档的主要内容详细介绍的是山外官方K60开发板参考代码合集V5.3(支持FX、FN和DNZ)
发表于 11-15 08:00 11次 阅读
山外官方K60开发板参考代码合集V5.3(支持FX、FN和DNZ)

成功的工程师通常都具备哪些思维

如果你是一个天才工程师(马上可以离开),可以独立完成一个很多事情,你可以是一个怪咖,因为我相信没有一....
的头像 工程师人生 发表于 11-14 17:01 102次 阅读
成功的工程师通常都具备哪些思维

一位工程师的日常工作感悟

年轻的同学喜欢按学习曲线来看自己过去的每一年,但是这种方式很快就会步入到瓶颈,学习曲线增长突然会变得....
的头像 工程师人生 发表于 11-13 10:17 138次 阅读
一位工程师的日常工作感悟

程序员需要学习哪些技巧

在过去的七年半中,我在Ronimo游戏公司指导过十几个程序员实习生,审阅了数百份简历。我发现他们中的....
的头像 工程师人生 发表于 11-13 10:04 131次 阅读
程序员需要学习哪些技巧

英特尔现代代码:您的突破性创新更快

了解英特尔的现代代码计划如何帮助开发人员为今天和明天创建更快的代码
的头像 英特尔 Altera视频 发表于 11-13 06:38 25次 观看
英特尔现代代码:您的突破性创新更快

如何使用英特尔AdvisorXE实现从串行代码转换到并行代码转换

我们探索了使用英特尔®AdvisorXE的英特尔®ParallelStudio XE 2015套件的....
的头像 英特尔 Altera视频 发表于 11-13 06:12 19次 观看
如何使用英特尔AdvisorXE实现从串行代码转换到并行代码转换

电动汽车背景及动力电池安全事故和电池验证性测试及数据分析概述

本文档的主要内容详细介绍的是电动汽车背景及动力电池安全事故和电池验证性测试及数据分析概述。
发表于 11-12 08:00 51次 阅读
电动汽车背景及动力电池安全事故和电池验证性测试及数据分析概述

AVR单片机输入输出与IO设置的代码详细资料免费下载

本文档的主要内容详细介绍的是AVR单片机输入输出与IO设置的代码详细资料免费下载。
发表于 11-12 08:00 14次 阅读
AVR单片机输入输出与IO设置的代码详细资料免费下载

AVR单片机的IO口的设置及应用的代码详细资料免费下载

本文档的主要内容详细介绍的是AVR单片机的IO口的设置及应用的代码详细资料免费下载。
发表于 11-12 08:00 20次 阅读
AVR单片机的IO口的设置及应用的代码详细资料免费下载

AVR单片机的位操作的代码详细资料免费下载

本文档的主要内容详细介绍的是AVR单片机的位操作的代码详细资料免费下载。
发表于 11-12 08:00 24次 阅读
AVR单片机的位操作的代码详细资料免费下载

AVR单片机位操作及上拉应用的代码详细资料免费下载

本文档的主要内容详细介绍的是AVR单片机位操作及上拉应用的代码详细资料免费下载。
发表于 11-12 08:00 30次 阅读
AVR单片机位操作及上拉应用的代码详细资料免费下载

使用AVR单片机编写的花样流水灯循环方式代码资料免费下载

本文档的主要内容详细介绍的是使用AVR单片机编写的花样流水灯循环方式代码资料免费下载。
发表于 11-12 08:00 21次 阅读
使用AVR单片机编写的花样流水灯循环方式代码资料免费下载

使用AVR单片机编写的花样流水灯操作方式代码资料免费下载

本文档的主要内容详细介绍的是使用AVR单片机编写的花样流水灯二位操作方式代码资料免费下载。
发表于 11-12 08:00 29次 阅读
使用AVR单片机编写的花样流水灯操作方式代码资料免费下载

使用AVR单片机编写的读出读入的应用代码详细资料免费下载

本文档的主要内容详细介绍的是使用AVR单片机编写的读出读入的应用代码详细资料免费下载。
发表于 11-12 08:00 28次 阅读
使用AVR单片机编写的读出读入的应用代码详细资料免费下载

使用AVR单片机编写的宏定义的应用代码详细资料免费下载

本文档的主要内容详细介绍的使用AVR单片机编写的宏定义的应用代码详细资料免费下载。
发表于 11-12 08:00 24次 阅读
使用AVR单片机编写的宏定义的应用代码详细资料免费下载

使用AVR单片机编写的宏定义加数码管的代码详细资料免费下载

本文档的主要内容详细介绍的是使用AVR单片机编写的宏定义加数码管的代码详细资料免费下载。
发表于 11-12 08:00 29次 阅读
使用AVR单片机编写的宏定义加数码管的代码详细资料免费下载

使用AVR单片机编写的中断代码详细资料免费下载

本文档的主要内容详细介绍的是使用AVR单片机编写的中断代码详细资料免费下载。
发表于 11-12 08:00 31次 阅读
使用AVR单片机编写的中断代码详细资料免费下载

使用AVR单片机编写的16按键代码详细资料免费下载

本文档的主要内容详细介绍的是使用AVR单片机编写的16按键代码详细资料免费下载。
发表于 11-12 08:00 35次 阅读
使用AVR单片机编写的16按键代码详细资料免费下载

使用AVR编写的多位数码管代码和电路原理图资料免费下载

本文档的主要内容详细介绍的是使用AVR编写的多位数码管代码和电路原理图资料免费下载。
发表于 11-12 08:00 35次 阅读
使用AVR编写的多位数码管代码和电路原理图资料免费下载

使用英特尔编译器和库中的新功能构建快速代码

https://software.intel.com/zh-cn/intel-advisor-xe使....
的头像 英特尔 Altera视频 发表于 11-12 07:03 44次 观看
使用英特尔编译器和库中的新功能构建快速代码

代码现代化是什么,如何使用它来优化代码

Robert Geva谈论代码现代化是什么以及开发人员如何使用它来优化代码。
的头像 英特尔 Altera视频 发表于 11-12 06:00 77次 观看
代码现代化是什么,如何使用它来优化代码

Python编写代码的风格规范是怎样的

分号Tip不要在行尾加分号, 也不要用分号将两条命令放在同一行.行长度Tip每行不超过80个字符例外....
的头像 人工智能 发表于 11-11 09:21 259次 阅读
Python编写代码的风格规范是怎样的

5G除了带来快,还将带来7650亿全新商业模式和沉浸式互动生活

当然,5G技术带来的不仅是“速度”,还有全新商业模式和沉浸式互动体验——视频、游戏、音乐、广告、AR....
的头像 VR陀螺 发表于 11-10 10:16 439次 阅读
5G除了带来快,还将带来7650亿全新商业模式和沉浸式互动生活

数字电子技术复习试卷和答案资料免费下载

本文档的主要内容详细介绍的是数字电子技术复习试卷和答案资料免费下载 在每小题列出的四个备用选项中只....
发表于 11-09 08:00 37次 阅读
数字电子技术复习试卷和答案资料免费下载

可以通过主程序访问配置位吗?

您好,您可以通过主程序访问配置位吗?主要是代码保护配置位。 以上来自于百度翻译       以下为原...
发表于 11-08 15:17 25次 阅读
可以通过主程序访问配置位吗?

十年工程师生涯分享

再过几天就是我从业十年的纪念日啦,回首这过去的十年,个中辛酸和快乐只有经历过后才有切肤的体会,有加班的烦劳,有择业的困惑...
发表于 11-08 09:46 77次 阅读
十年工程师生涯分享

开发人员在使用Git时几种常见错误

如果你想把一个分支的修改合并到当前分支,你可以用git rebase。它和git merge的区别是....
的头像 论智 发表于 11-08 09:17 192次 阅读
开发人员在使用Git时几种常见错误

应用现代代码和并行计算在科学探索和发现中的重要性

Lukas Breitweiser讨论了应用现代代码和并行计算在CERN openlab实习环境中推....
的头像 英特尔 Altera视频 发表于 11-08 06:47 73次 观看
应用现代代码和并行计算在科学探索和发现中的重要性

利用现代代码模拟大脑发育,以找到治疗疾病的方法

Roman Bauer讨论了在他的研究中使用计算机建模来模拟大脑发育,以找到治疗神经系统疾病的方法,....
的头像 英特尔 Altera视频 发表于 11-08 06:46 132次 观看
利用现代代码模拟大脑发育,以找到治疗疾病的方法

如何使用英特尔SDK for OpenCL调试工具调试OpenCL主机和内核代码

了解如何使用英特尔®SDKfor OpenCL™调试工具来调试OpenCL™主机和内核代码
的头像 英特尔 Altera视频 发表于 11-08 06:33 94次 观看
如何使用英特尔SDK for OpenCL调试工具调试OpenCL主机和内核代码

如何进行英特尔SGX应用程序调试

在本视频中,我们将讨论调试英特尔®软件保护扩展(英特尔®SGX)。 英特尔®SGX区域可以在调试模....
的头像 英特尔 Altera视频 发表于 11-08 06:18 86次 观看
如何进行英特尔SGX应用程序调试

解决芯片工程师的两大痛点

看看今天的物联网和智能设备领域,你可能会觉得现在是成为芯片工程师最好的年代。设备越来越小,将越来越多....
发表于 11-07 16:38 413次 阅读
解决芯片工程师的两大痛点

开关稳压器LT1766EGN#TRPBF主要应用于哪些产品

开关稳压器  LT1766EGN#TRPBF 这是料号  主要应用于哪些产品 ...
发表于 11-07 11:36 119次 阅读
开关稳压器LT1766EGN#TRPBF主要应用于哪些产品

常用的算法技巧总结

就有很多重复计算了。这个时候我们要考虑状态保存。例如用hashMap来进行保存,当然用一个数组也是可....
的头像 算法与数据结构 发表于 11-07 10:38 255次 阅读
常用的算法技巧总结

程序员用代码讲述一段悲伤的故事

程序员用代码写出的那些美丽而优雅的故事,都是由无数个悲伤的版本升级而来的,即便是擅长写happy e....
的头像 电子发烧友网工程师 发表于 11-07 09:50 282次 阅读
程序员用代码讲述一段悲伤的故事

使用线程和矢量化将串行代码转换为并行

软件必须是并行和矢量化的,以充分利用今天和明天的硬件。但并非所有线程或矢量化设计都值得。工具可以非常....
的头像 英特尔 Altera视频 发表于 11-07 06:47 117次 观看
使用线程和矢量化将串行代码转换为并行

200行代码教你自制微信机器人

今天干脆把这套代码的思路讲清楚了,也好之后和大家形成更有效深入的讨论。
的头像 电子发烧友网工程师 发表于 11-06 08:36 370次 阅读
200行代码教你自制微信机器人

使用App Game Kit开发跨平台应用程序

了解App Game Kit,一个易于使用的跨平台开发环境。 用户可以使用BASIC脚本编写代码,....
的头像 英特尔 Altera视频 发表于 11-06 07:38 141次 观看
使用App Game Kit开发跨平台应用程序

英特尔Fortran编译器支持编写并行代码

Fortran博士Steve Lionel谈到了在英特尔Fortran编译器中编写并行代码的内置支持....
的头像 英特尔 Altera视频 发表于 11-06 06:43 115次 观看
英特尔Fortran编译器支持编写并行代码

网络研讨会重播:英特尔GPU加速

媒体应用程序开发人员:获取有关添加硬件加速的提示和技巧,并利用英特尔GPU功能,通过先进的英特尔媒体....
的头像 英特尔 Altera视频 发表于 11-06 06:02 138次 观看
网络研讨会重播:英特尔GPU加速

BERT的官方代码终于来了

预训练(Pre-training)的成本是相当昂贵的(需要4到16个Cloud TPU训练4天),但....
的头像 新智元 发表于 11-05 17:17 535次 阅读
BERT的官方代码终于来了

为什么说未来是全栈工程师的世界

技术在过去的几十年里进步很快,也将在未来的几十年里发展得更快。今天技术的门槛下降得越来越快,原本需要....
的头像 工程师人生 发表于 11-05 14:20 236次 阅读
为什么说未来是全栈工程师的世界

从一个毕业技术小白,到现在资深工程师,他获得这些!

无论当我在网上、论坛上、还是实际生活碰到的种种电子毕业生的时候,我学的有必要把我的路写写,大家可以扔鸡蛋也可以拍砖哈!先...
发表于 11-05 09:32 417次 阅读
从一个毕业技术小白,到现在资深工程师,他获得这些!

如何使用单片机实现一闪一闪亮晶晶音乐的代码

本文档的主要内容详细介绍的是如何使用单片机实现一闪一闪亮晶晶音乐的代码详细资料免费下载。
发表于 11-05 08:00 64次 阅读
如何使用单片机实现一闪一闪亮晶晶音乐的代码

采用英特尔实感技术的面部表情控制轮椅

使用英特尔®实感™技术控制轮椅
的头像 英特尔 Altera视频 发表于 11-05 07:20 129次 观看
采用英特尔实感技术的面部表情控制轮椅

Apache Spark上的分布式机器学习的介绍

Apache Spark上的分布式机器学习
的头像 英特尔 Altera视频 发表于 11-05 06:31 162次 观看
Apache Spark上的分布式机器学习的介绍

GitHub发布史上最大更新

10 月 16 日,在年度 GitHub Universe 正式召开,在大会上不仅发布了GitHub....
的头像 算法与数据结构 发表于 11-03 09:31 356次 阅读
GitHub发布史上最大更新

RT-Thread发布“超轻量级“日志组件ulog

ulog 可以将日志输出到终端、串口、网络,文件、闪存等位置,这些地方在 ulog 里统称为后端。u....
的头像 RTThread物联网操作系统 发表于 11-02 09:45 313次 阅读
RT-Thread发布“超轻量级“日志组件ulog

未来的工程师会做些什么

更新: Grace和Noah一直忙于他们的夏季项目。 查看他们的工作,并在每个星期的8月份回来看看更多。 我参加工程课已经很长时...
发表于 11-01 15:45 66次 阅读
未来的工程师会做些什么

L6470运行命令可能比移动命令慢

嗨, 我们注意到Run命令能够以Move命令运行更慢的速度,即使是最小的Minspeed也是如此。 这是正确/正常还是我们有代...
发表于 11-01 14:20 45次 阅读
L6470运行命令可能比移动命令慢

Linux基础教程之linux wget下载进度条变成多行显示如何解决

在之前为了 解决Putty客户端连接到CentOS之后显示乱码 的问题,设置了 LANG=zh_CN....
发表于 10-31 17:04 29次 阅读
Linux基础教程之linux wget下载进度条变成多行显示如何解决

关于放大器设计工程师必须知道的100个基本问题(ZT)

网上看到以对答形式总结的基本原理、概念及实用经验,非常棒的资料,转发分享,放大器应用是个经验活,希望大家多分享交流: ...
发表于 10-31 09:04 125次 阅读
关于放大器设计工程师必须知道的100个基本问题(ZT)

MCLibrary SW-Stm32100中缺少MCLibrary_src文件

嗨,我在电机控制库中缺少MCLibrary_src的文件。我在构建代码时发现错误。我有错误的照片。请看,请帮助我。 谢谢 以上...
发表于 10-30 17:49 36次 阅读
MCLibrary SW-Stm32100中缺少MCLibrary_src文件

一个老工程师给新毕业大学生的几点建议

作为一个二十年前毕业的大学生,我和现在的许多人一样走过了,迷茫,选择,再迷茫,再选择的过程。现在把我所经历的一些东西写出...
发表于 10-29 09:32 192次 阅读
一个老工程师给新毕业大学生的几点建议

STM32F407内部温度偏差太大

求高手指点… 代码如下: static void        AdcPinComInit(void) {   &nbs...
发表于 10-29 08:34 157次 阅读
STM32F407内部温度偏差太大