写点什么

程序员眼中最有价值的 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:017085
用户头像
万佳 前InfoQ编辑

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

关注

评论 2 条评论

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

从函数计算到 Serverless 架构

hum建应用专家

云计算 Serverless

不得不服!真心被这份阿里大牛开源的“全彩版图解HTTP手册”折服了

JAVA活菩萨

Java 程序员面试 大厂技能 秋招 大厂面经

爆了!1213页LeetCode算法刷题神册(全彩),GitHub万星仅是开始

JAVA活菩萨

Java 程序员面试 大厂技能 秋招 大厂面经

架构师学习心得总结

泋清

#架构实战营

结合实际聊聊电平转换电路(常用电平转换电路总结)

矜辰所致

电路设计 8月月更 电平转换电路

Github爆火!程序员疯抢的Java面试宝典(PDF版)限时开源

Java工程师

Java 面试 大厂

【大厂面试真题解析】蔚来数字化业务后端一面(2022.8.6)

面试官问

后端 面试题 大厂面试 面经分享 蔚来

数据建模已死,真的吗?

Kyligence

数据建模 数据模型 数据指标

MySQL 原理与优化:Limit 查询优化

老崔说架构

兆骑科创创业大赛竞赛平台,双创服务,投融资对接

兆骑科创凤阁

看完腾讯大佬90天整理的“Redis深度笔记”,我直接当场膜拜

Java工程师

Java redis 源码

深入理解Linux I/O系统

C++后台开发

性能优化 Linux内核 网络io C/C++后台开发 C/C++开发

大咖说·对话生态|当Confluent遇见云:实时流动的数据更有价值

大咖说

数字化转型 Confluent 大数据应用

深圳堡垒机厂家有哪些?重点推荐哪家?

行云管家

网络安全 堡垒机 深圳 运维审计

玩转云端 | 天翼云电脑的百变玩法

天翼云开发者社区

云平台 云电脑

面向推荐的汽车知识图谱构建

之家技术

人工智能 机器学习 知识图谱 汽车

宁夏等保测评机构有哪些?如何选择?

行云管家

等保 堡垒机 等级保护 等保测评 宁夏

Dapp系统开发及智能合约部署技术

薇電13242772558

智能合约 dapp

防汛添利器,数字技术筑起抗洪“大堤”

天翼云开发者社区

云计算 大数据

暴雨天,看天翼云如何“快准稳”防涝

天翼云开发者社区

云计算 大数据 云平台

SpringMVC(二、请求和响应)

开源 springmvc 8月月更

.NET现代应用的产品设计 - DDD实践

MASA技术团队

.net DDD 实战 MASA Framewrok

从TRPO到PPO(理论分析与数学证明)

行者AI

太厉害了!华为大牛终于把MySQL讲的明明白白(基础+优化+架构)

冉然学Java

Java MySQL 编程 架构 微服务

vivo手机上的系统级消息推送平台的架构设计实践

JackJiang

网络编程 架构设计 消息推送 即时通讯 即时通讯IM

6大论坛,30+技术干货议题,2022首届阿里巴巴开源开放周来了!

阿里技术

数据库 云计算 大数据 #开源

真香现场!全网首发Spring5秘籍手册+架构导图,我爱了.

冉然学Java

Spring5 技术栈 笔记 java 日志 构架

开源一夏│别逗,作为程序员你竟还没参与过开源项目?

开源 经验分享 签约计划第三季 8月月更

关于使用WebStorm两年所总结的一些常用插件和功能

安安安

前端 webstorm

兆骑科创创新创业大赛平台,人才引进,项目路演

兆骑科创凤阁

R7 6800H标压处理器+RTX 3050独显 无畏Pro15锐龙版高能开卖

科技热闻

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