写点什么

程序员眼中最有价值的 10 条开发经验

作者:Oliver Jumpertz

  • 2021-08-23
  • 本文字数:3255 字

    阅读完需:约 11 分钟

程序员眼中最有价值的10条开发经验

本文最初发布于 Oliver Jumpertz 的个人博客,经原作者授权由 InfoQ 中文站翻译并分享。


到现在,我已经做了超过 21 年开发,可以说,我生命中超过一半的时间都在编程,那既是我的职业,也成了我的习惯。


下面是我在开发过程中学到的 10 条最有价值的经验。


你永远不可能什么都知道


尤其是在开始的时候,我以为我什么都能学会,在开发生涯的大部分时间里,我都是这样想的。但是,每次我学了什么新东西,就打开了一个全新的世界,里面有不同的概念和技术。


那似乎很有吸引力,你很愿意尝试,希望把什么都学会,但这是一个没有终点的旅程。如果要学的话,总是有其他的库、框架以及其他很酷的东西可以学。


因为似乎永远无法达成自己的目标,所以最终你的热情会慢慢冷却。最好是立足于你最擅长的东西,然后因需而学,即在真正需要的时候才学习新东西。这可以让你保持清醒,维持学习的动力。


你还可以把这一点应用在任何其他的领域。不是什么都知道才能达成预期的结果。利用这一点来打造自己的优势,在需要的时候学习。


好的团队可以让你的能力呈指数增长,而非线性增长


独立工作很好,但也会把你局限在自己的能力范围内。


但在一个好的团队中,交谈和讨论可以在很大程度上影响你的思维过程。问题变得很容解决。根据我的经验,这种效果通常是呈指数的而非线性。


不过,这也有个限值,团队太大了也不行。根据我的经验,这个限值取决于参与的人员。


站在个人的角度来说,尽量让自己身边的都是一些很容易相处的人。你会发现,工作完成得比以前快,甚至也更快乐。

编写的代码应该便于阅读


有一段时间,我觉得自己很聪明,追求编写高度优化的代码,运行速度越快越好。然而,很长一段时间之后,当我回过头来看这些代码时,我全然不知道那会儿做了什么。在开始真正的工作之前,我总是要花很大一块时间来回顾代码。更糟糕的是:99% 的情况下,那些优化都是不必要的。


代码首先应该便于人阅读和理解。如果你认为特定的代码路径可能存在性能瓶颈,就测试它。在有疑问的路径上添加度量执行时间的指标,然后进行分析。你经常会发现,你有疑问的代码实际上并没有问题。更多的时候,你会发现真正的问题其实是完全不同的东西。


如果有些代码真有问题,请尽量添加注释,说明为什么优化这段代码。如果你觉得需要说明自己做了什么优化,做就是了。你可能经常会听到人们说,你永远都不应该陈述代码做了“什么”。我的观点是:如果你无法让代码更容易理解了,而且知道其他开发人员需要你的帮助才能理解代码,那么添加注释即可。


你可以听从反对这种方法的人,把更多时间和金钱花在未来的问题上,你也可以忽略他们,确保每个人都有机会参与进来做开发。团队是有独立性的。便宜行事。

耐心是你最好的朋友


曾经,我就没什么耐心,现在,我有时候仍然受此困扰。


我经常要花时间修复一个 Bug 或完成一个特性。经常,学习新东西的时间会超出预期。

如果你觉得总要赶时间,那么你应该问问自己,为什么会有这种感觉。


是你自己的原因吗?那就停下来。你可以明天或后天完成。然后,下次处理类似的问题时,速度会更快。

如果是因为你的雇主,那么应该想想这家公司是否适合你。


有许多管理者认为,软件交付越快越好。他们设定不切实际的最后期限,对开发人员的期望过高。那些管理者真是不懂软件是如何开发出来的。


有时候,你会遇到全新的东西。你得费点功夫才能想出办法。随着你经验越来越丰富,你会越来越擅长处理此类情况。


试着保持耐心,不要把自己置于压力之下。当你能保持冷静,整理思路,并形成想法时,你的工作会更出色。而且,可以肯定,这对你的心理健康也是有益的。


不给自己压力,可以说是地球上最难的事情了,你总是免不了会这样做。那没什么问题。你只要尽力不要那样做就行了。时间长了,那会对你造成伤害。

持续性是关键


持续不断地做某件事可以帮助你成为专家。不是一次性投入 20 个小时,而是每天投入 15 分钟或 1 个小时。


不断的重复可以让你越来越擅长做某件事。开始的时候,你会经常查资料,逐渐地,你查的次数会越来越少。你的大脑慢慢地习得了相应的模式并保存了下来。

总是有比你优秀的人你可以向他学习


技术领域如此宽广,你无法把什么都学会。


其他开发人员学习的东西和你不同。在某些事情上,他们就有了知识优势。将此转化为你自己的优势!

你同事可能比你更擅长后端、CSS 或更底层的事情,而你也有自己的优势。你可以向他们学习,他们也可以向你学习。


这绝不是你应该嫉妒或放在心上的事。可以和别人建立联系来丰富自己的知识,这是很好的事情。你可以从别人多年的经验中受益,借此增长自己的知识。而且,你还可以从他人的失败中汲取教训,这样你就不会再犯同样的错误。


社交网络很重要


走出去,和人建立联系。现如今,这特别重要。


我曾经以为,一份出色的简历就可以为我打开所有的大门,但我错了。


在不认识你的时候,人们会根据一张纸来评价你。但是,在人们认识了你之后,他们可能已经了解了你的优势和不足。这使得你获取下一份工作或合同容易了许多。它会不断地为你带来学习、工作和互动的机会。

经常休息可以让你更高效


如果没有遇到困难,你可能会一直编码或工作而没有注意到时间的流逝,但你的大脑需要经常休息。

休息有助于大脑恢复活力,处理先前摄入的信息。做些完全不同的事情,等等你的大脑。可以去喝杯咖啡,聊聊天,但至少要离开办公桌。


在休息之前,你可能已经注意到自己的效率越来越低。当你休息完回来时,你发现效率又回来了。你有可以高效地工作了,直到下次休息。


曾经,我并不在意休息,因为我想完成自己的工作。事实证明,每隔一段时间休息一下大脑可以让我更快地完成工作。


有一条很好的经验法则是,每小时至少休息 5 分钟,四个小时后可以休息更长时间,最多 30 分钟。更好的做法是:听从你的身体,据此调整休息时间。


如果你开始觉得累了,效率下降了,或者注意力不集中了,那么就休息一下。

如果你希望在自己的职业生涯中更进一步,就需要有很好的人缘


在我职业生涯的初期,我以为,只要我付出足够的努力就可以获得回报。但事实证明,事情并非如此,至少在我看来是这样。没有人过来给我提供晋升机会或为我加薪。我觉得自己只是在无人注意的情况下继续工作。


当我可以大声说出自己对工作的看法,并开始与同事和管理者互动时,我的事业有了起色。如果一个问题在某种程度上适合我,那么我肯定就可以分得该项任务。在某些事情上,我成了名人,经常有人找我寻求帮助,我升职了。我在这里就不罗列早期取得的诸多成绩了。反正我的经理已经知道了。


为什么会这样?因为我经常与我的同事和经理谈工作。我从不吹牛。我如实陈述,很乐意帮助同事。私下里,我也经常和人们交流,增进彼此间的了解,建立起了很好的关系。


至少对于我来说,这很有效。你的经历可能有所不同,因为那和公司及其文化关系密切,但可能也值得一试。

大多数公司都不是你希望的样子


当我终于有机会从事专业工作时,我寄予了过高的期望。我想象着自己和顶级的工程师、技术专家一起解决令人望而生畏的问题。事实证明,我错了。


不要误解我的意思,我周围的工程师很棒,但只是和我想象的不一样。和我们共事的技术专家近乎无聊。问题也没有那么难。


我了解到,所有工程师都会犯错,也没有人什么都知道。毕竟,他们也是人。而技术专家通常恰恰就是那些解决我们所面临的问题的人。


技术越枯燥,就越能帮我们解决某些特定的问题。


开发软件就是为了解决问题。其中有一些会更令人厌烦。并不是每一名开发者都一直在开发将要改变世界的软件。通常,一个为人们的日常生活提供便利的小前端,或是将文件从 A 移动到 B 的 API,就是你赚钱的抓手。


一定要记住,并不是每家公司都有 FAANG 的规模。即使有那种规模,要解决的问题有时也同样令人厌烦。


还有一点很重要:外面有许多和你一样的开发者。你可以发挥你的影响力,并非所有同事都和你想的那样是顶级的。他们就是普通的开发者,工作做得非常好,而且和你懂的一样多。


如果你希望读到更多类似这样的文章,请在 TwitterLinkedIn 上关注我。


原文链接:


https://blog.oliverjumpertz.dev/the-10-most-valuable-lessons-i-learned-as-a-developer

2021-08-23 17:017008
用户头像
万佳 前InfoQ编辑

发布了 677 篇内容, 共 362.2 次阅读, 收获喜欢 1802 次。

关注

评论 2 条评论

发布
用户头像
说的非常好!
2021-08-24 16:14
回复
用户头像
说的蛮好的。
2021-08-24 09:22
回复
没有更多了
发现更多内容

速度与稳定性的完美结合:深入横测ToDesk、TeamViewer和AnyDesk

阿Q说代码

远程办公 ToDesk TeamViewer AnyDesk

时隔几年,再来聊聊低代码

互联网工科生

软件开发 低代码 JNPF

Luminar Neo for Mac(AI技术图像编辑软件) 1.17.0完美激活版

mac

Luminar Neo 苹果mac Windows软件 AI技术图像编辑软件

云原生的实践探索和深入学习

Geek-yan

一分钟了解人工神经网络(ANN)

小魏写代码

淘宝商品详情API:挖掘实时数据金矿,点燃电商增长引擎

Noah

Apache Doris 在某工商信息商业查询平台的湖仓一体建设实践

SelectDB

数据库 大数据 数据仓库 数据分析 apache doris

淘宝源数据商品详情API:解锁电商实时数据,驱动业务增长

Noah

测试开发 | 工业制造中的人工智能应用:智能制造引领未来产业革命

测吧(北京)科技有限公司

测试

SecureFX for Mac v9.4.3注册激活版:实现高效安全的文件传输

iMac小白

个人年度总结:深度学习与AIGC技术在智能诗歌生成中的应用

熬夜磕代码、

Scrutiny for Mac v12.8.3激活版:网页开发人员的得力助手

iMac小白

SecureCRT for Mac:实现安全稳定的远程工作

iMac小白

数据库产品层出不穷,金融行业如何选择?|FCon 专访

SelectDB

数据库 大数据 数据仓库 数据分析 apache doris

千万用户的人群过滤,做好这几个点,竟然支持亿级流量

Geek_j8uecm

架构 后端 高并发

在极狐GitLab 上使用 DVC 实现简单机器学习

极狐GitLab

Machine Learning MLOps

一文教你提高写代码效率,程序员别错过!

伤感汤姆布利柏

效率 程序员 敏捷开发 低代码

海外云手机怎么帮助您运营facebook?

Ogcloud

云计算 facebook 弹性云手机 手机云服务

lazada商品评论接口(lazada.item_review)

tbapi

lazada商品评论接口 lazada评论接口 lazada商品评价接口 lazada评论API接口 lazada商品评论API接口

测试开发 | 个性化推荐引领社交媒体新潮流:定制化互动,畅享个性世界

测吧(北京)科技有限公司

测试

精细经营:为 Web3 游戏长期卓越奠定基石

Footprint Analytics

区块链 Web3 游戏 加密攻略

iZotope RX 10 for mac:音频处理的最佳选择

iMac小白

面试官:什么是虚拟线程?为什么要有虚拟线程?

王磊

Java 面试

叮,你有一份来自2023开放原子开发者大会的邀请函,请查收!

开放原子开源基金会

Java 开源 程序员 开发者 算法

天猫商品评论数据接口(Tmall.item_review)

tbapi

天猫API接口 天猫商品评论接口 天猫评论接口 天猫商品评论内容接口 天猫评论API接口

使用TikTok云手机轻松拓展全球市场

Ogcloud

云计算 TikTok 手机云服务

智能辅助技术的未来前景:创新与便利的引领者

测吧(北京)科技有限公司

测试

Integrity Pro mac v12.8.3激活版:全面提升Mac性能

iMac小白

Node.js 文件操作:学习如何删除文件

Liam

node.js 后端 nodejs Node文件系统 NodeAPI

Integrity Plus for Mac:数据完整性校验的得力助手

iMac小白

程序员眼中最有价值的10条开发经验_语言 & 开发_InfoQ精选文章