xSky 实验室关注高性能计算,分布式系统/存储,大数据/机器学习/WebRTC
目录
  • 首页
  • 技术相关
  • 原创作品
  • 人工智能/机器学习
  • 系统与架构
  • 数据库/数据分析
  • 分布式系统/存储
  • 服务端开发
  • WEBRTC研究
  • 开发调试
  • 网络与安全
  • 常用工具
  • 杂七杂八

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

2021-08-22 10:33:44

 

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

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

1 你永远不可能什么都知道

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

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

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

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

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

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

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

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

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

3 编写的代码应该便于阅读

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

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

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

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

4 耐心是你最好的朋友

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

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

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

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

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

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

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

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

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

5 持续性是关键

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

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

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

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

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

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

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

7 社交网络很重要

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

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

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

8 经常休息可以让你更高效

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Twitter:https://twitter.com/intent/follow?screen_name=oliverjumpertz

Linkdln:https://www.linkedin.com/in/oliverjumpertz/

原文链接:

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

By:xSky | 技术相关 |

  • 分类目录

    • 技术相关 (35)
    • 原创作品 (13)
    • 人工智能/机器学习 (6)
    • 系统与架构 (9)
    • 数据库/数据分析 (11)
    • 分布式系统/存储 (4)
    • 服务端开发 (7)
    • WEBRTC研究 (7)
    • 开发调试 (7)
    • 网络与安全 (9)
    • 常用工具 (9)
    • 杂七杂八 (6)
  • 最新文章

    • 嵌入式分析型数据库(DuckDB)
    • WSL从C盘迁移到其他盘区
    • 赵何娟:中国AI追随之路的五大误区,我们至少落后十年
    • zap  发送日志到 websocket
    • QUIC(隐藏的)超能力
    • MYSQL 生成日期/时间序列总结
    • Linux bash终端设置代理(proxy)访问
    • centos 下 yum安装python3
    • 使用SQL查询Milvus 向量数据库
    • 浅谈 MySQL 新的身份验证插件 caching_sha2_password
    • Milvus v2.2.1 开源向量搜索引擎使用教程
    • 部署了一个SRS的demo
    • Dockerfile 详解
    • Docker常用命令
    • Tus文件上传协议
    • 编译运行Milvus
    • MinIO 快速入门
    • ESP32
    • Prometheus监控报警系统搭建
    • go语言JSON字典模拟
    • go语言的sql解析器
    • Grafana配置数据源,自定义查询语法
    • TDengine + Telegraf + Grafana
    • gRPC-Gateway 返回JSON数据int64类型被转为string类型问题
    • LLAMA模型试玩
    • 语音识别的一些开源项目整理
    • 使用MYSQL8进行统计分析
    • 记录FFmpeg抽帧、合流、转码、加水印等操作
    • 移动网络弱网处理研究
    • 翻译:使用 Semgrep 进行热点代码评审
  • 链接

    • xSky的Blog
    • 我的Github
    • 实时监控图表
    • 预印本
    • xRedis 在线文档
    • xSkyProxy
    • xChart 数据在线测试
    • 我的电子书
    • xChart 数据可视化系统
    • 树莓派技术圈
    • WebRTC开发者社区
  • 开源项目

    • xReis C++的redis客户端库
    • xBlog-C++ 博客程序
    • xSkyProxy-新型MySQL代理网关
    • 数据可视化平台- xChart
    • xhttpcache 高速数据缓存服务
    • xMonitor-图形监测工具
    • 网址收集

Powered By xBlog

Copyright 2010~2024 0xsky.com All Rights Reserved.