
导读:这仍然是一篇让人成为优秀程序员的文章,本文从个人务实和特质来描述,仍然言之有物,值得一读。
我遇到过很多开发人员,各有各的特点。最近,我在问我自己:“要成为最优秀的开发人员,需要什么条件?他们有什么共同点?”
为了激励大家,我写下了我观察到的咱们这个行业中最杰出人士的特质。真的希望我刚开始的时候就有这份清单。如果我遵循了这条路,就能节省很多地时间,这篇文章送给各位,希望你能顺利。
写在前面
如果说作为一名年轻的程序员,我应该做一件事,那就是阅读我所使用软件的参考资料。例如,阅读Apache Web 服务器文档、Python 标准库或TOML 规范。
不要再去 Stack Overflow,不要问大语言模型,不要瞎猜测,直接去源头找。很多时候,你会发现它出奇地通俗易懂,而且写得非常好。
充分了解工具
优秀的开发人员能从根本上了解他们所使用的技术。
能够使用工具和完全不同的方式去真正理解它是一回事。普通用户会笨手笨脚地摸索,很容易感到困惑,出错,而且也不会优化配置。
一位专家(在阅读完参考资料之后!)坐下来,为该工具编写一个配置,他能理解其中的每一行,并能向同事解释。是的,这是毫无疑问的!
要熟悉一个工具,你就必须知道以下几点:
- 它的历史:谁创造了它?为什么创造它?为了解决什么问题?
- 它的现在:谁来维护它?他们在哪里工作?从事什么工作?
- 它的局限性:什么时候工具不合适?什么时候会坏?
- 它的生态系统:有哪些库?谁在用它?有哪些插件?
比如,如果你是一名后端工程师,并且大量使用 Kafka,我希望你对 Kafka 有深入的了解。
至少,如果你想成为最优秀的工程师之一,这是我的期望。
阅读错误消息和日志
就像认真阅读错误信息并尝试理解其中的含义一样。事实证明,如果你只是坐下来思考错误信息,它就会开始对你说话。最优秀的工程师能够从很少的上下文中推断出大量的信息。只需会阅读错误信息或错误日志,你就可以自己解决大多数的问题。
如果你能帮助那些没有超能力的人,那感觉就像拥有了超能力一样。比如“用杯子读书”之类的。
分解问题
每个人都会遇到瓶颈,而最优秀的人知道如何摆脱困境。他们会把问题简化,直到变得易于理解。这是一项很难学习的技能,需要大量的经验。或者,你只是拥有超强的解决问题能力,比如你很聪明。
如果暂时没有此能力,你可以训练它,但要解决难题,却没有捷径。这个世界上有些问题,对于任何参与其中的人来说,都太难了,无法都一下子解决。
如果你是一名专业开发人员,你的主要工作就是:分解问题。如果你做得对,你会觉得这像是在作弊:你只需要解决简单的问题,直到完成为止。
不要怕弄脏双手
我认识的优秀开发人员都读过很多代码,而且他们特别敢于尝试。
他们从来不会说“这不适合我”或“我帮不了你”。相反,他们只是开始学习。代码就是代码。只要投入时间和精力,他们就能掌握所需的任何技能。不知不觉中,他们就成了团队中无论接触什么都能信赖的人。
主要就是因为:他们是唯一一个从一开始就敢于尝试的人!
喜欢帮助别人
与之相关的观点是,优秀的工程师需求量很大,而且总是很忙,但他们总是尽力提供帮助。这是因为他们天生好奇心,而乐于助人的精神正是他们成为优秀工程师的根本原因。
拥有这样的人才加入你的团队,这将是一件非常快乐的事情,因为他们都是解决问题的高手。
擅长于写
大多数优秀的工程师都善于表达与言辞,并且也乐于分享知识。
锻炼自己最好的方法是通过某种方式来表达自己的想法:博客、演讲、开源,或者这些的结合体。
我认为写作能力和编程能力之间有着密切的联系。我认识的所有顶尖工程师都精通至少一种人类自然语言,通常不止一种。
掌握写作方式就是掌握思考方式,反之亦然。一个人的写作风格很大程度上反映了他的思维方式。如果写作风格令人困惑且缺乏结构,那么他们的代码风格也会如此。如果写作风格简洁、富有教育意义、结构良好,并且不时妙趣横生,那么他们的代码也会如此。
优秀的程序员在玩文字游戏中找到乐趣。
永远不停止学习
我认识的一些最优秀的开发者年龄都已经 60 多岁了。他们比我都强多了。部分原因是他们不断学习。如果有他们还没尝试过的新工具或喜欢的语言,他们就会去学习。这样,他们就能轻松掌握最新技术。
这并非理所当然:很多人大学毕业或开始第一份工作后很快就停止了学习。他们固执地认为学校里学到的东西就是“正确”的做事方式。所有新事物都是坏的,不值得他们花时间。所以,有的人25岁就“精神上退休了”,有的人68岁了,但头脑依然清晰。我努力有一天能成为后者。
与之相关的是,最优秀的工程师不会盲目跟风,但他们总会仔细评估新技术的优势。如果他们不接受,他们可以准确地告诉你原因,什么时候这项技术是最佳选择,以及有哪些替代方案。
地位并不重要
最优秀的开发人员会与首席工程师和初级开发人员同时交流。他们之间没有什么等级制度。
他们努力向所有人学习,无论老少。新人通常还没有深陷办公室政治,思维仍然很活跃。他们不知道事情为什么会变得困难,所以会提出创造性的解决方案。
或许过去的障碍已经消失,这使得这些人成为宝贵的灵感源泉。
建立声誉
如果你工作出色,一定可以成为一名优秀的工程师。但只有当你因卓越的工作而闻名时,你才能成为最优秀的工程师之一;至少在一个(较大的)组织、团队或公司内。
有很多方法可以为自己树立良好声誉:
- 你为一个(较大的)组织构建并交付了一项关键服务。
- 你写了一个著名的工具
- 你为流行的开源工具做出了贡献
- 你写了一本经常被提及的书
为什么我认为让自己的工作出名很重要?以上所有方法都可以扩大你在社区中的影响力。知名开发者的影响范围远大于普通开发者。你能写的代码量是有限的。如果你想“扩大”你的影响力,你必须要成为一位思想领袖。
建立声誉是一个长期目标。它并非一朝一夕就能实现,也并非必然。它也不会凭空而来。你每天都要坚持工作。随着时间的推移,你的成果会不言而喻。越来越多的人会信任你和你的工作,他们会愿意与你合作。你会参与更多声望卓著的项目,你的圈子也会越来越大。
我曾经听说过这样一种观点:你最近的作品应该超越之前的所有作品。这说明你走在正确的道路上。
要有耐心
你需要对计算机和人类保持耐心,尤其是对自己。并非所有事情都能立即奏效,人们需要时间学习。这并不是说你周围的人很笨;他们只是信息不完整。
如果没有耐心,你会觉得全世界都在与你作对,你周围的每个人都是无能的。那是一种痛苦的境地。你太聪明了,反而对自己不利。
要想成为顶尖人才,你需要拥有无比的耐心、专注和奉献精神。如果你想解决难题,就不能轻易分心。你必须回到键盘前才能克服困难。你必须投入精力,才能将项目推进到终点线。
如果你能做到这一点,同时又不傲慢自大,那就更好了。这正是顶尖人才与普通人的区别所在。
永远不要责怪计算机
大多数开发人员将不稳定、看似“随机”的错误归咎于软件、其他人、他们的狗或天气。
最优秀的开发人员可不会这么做。
无论计算机的行为看起来多么古怪或调皮,总有一个合乎逻辑的解释:只是你还没有找到它!
最好的人会不断挖掘,直到找到原因。他们或许无法立即找到原因,或许永远也找不到,但他们绝不会责怪外部环境。
凭借这种态度,他们能够取得令人难以置信的进步,并学到别人未能学到的东西。当你误以为虫子是难以理解的魔法时,它永远都是魔法。
不要害怕说“我不知道”
在求职面试中,我极力要求应聘者至少说一次“我不知道”。原因并非为了显得高人一等(尽管有些人确实有这种感觉)。
不,我是想触及他们知识的边界。我想和他们一起站在他们自以为知道的前沿。很多时候,我自己也不知道答案。说实话,我不在乎答案。我在乎的是,面试官们在面试过程中胡扯些什么。
最优秀的候选人会说:“嗯,我不知道,但这个问题很有意思!如果让我猜,我会说……”然后他们会继续推断答案。这表明你有成为优秀工程师的潜力。
如果你害怕说“我不知道”,那你就会产生一种傲慢或防御心理。我不喜欢我的团队里有胡扯的人。最好承认你不可能无所不知。一旦你接受了这一点,你就能让自己学习。
“重要的是,你不要停止提问,”阿尔伯特·爱因斯坦这样说。
不要猜
“面对歧义,拒绝猜测的诱惑”这是我最喜欢的PEP 20 – Python 之禅规则之一。
这确是真是太诱人了!我曾多次经历过这种情况,但我的雄心壮志却未能实现。
当你猜测时,可能会发生两件事:
- 在最好的情况下,你是错的,并且你的错误假设会导致更多错误。
- 最糟糕的情况是你是对的……而你永远不会停下来反思自己。你的思维模型建立在错误的假设之上。这可能会困扰你很长一段时间。
再次强调,要克制住猜测的冲动。提出问题,阅读参考资料,使用调试器,彻底搞清楚。尽一切努力找到真正的答案。
保持简单
聪明的工程师能编写聪明的代码,但杰出的工程师编写简单的代码。
这是因为大多数时候,简单就足够了。简单比复杂更容易维护。有时,把事情做好确实很重要,但了解其中的区别才是区分优秀与平庸的关键。
保持简单就能成就很多,然后专注于做正确的事情。
最后的想法
以上内容并不是一份清单或一场比赛;伟大的工程也不是一场比赛。千万别自欺欺人,以为可以省去辛苦的功夫。
没有捷径。祝各位一周编码顺利!
作者:马蒂亚斯·恩德勒
编译:洛逸
原文:
https://endler.dev/2025/best-programmers/