17611538698
webmaster@21cto.com

我认识的最好的程序员

技术人生 0 78 1天前

图片

导读:这仍然是一篇让人成为优秀程序员的文章,本文从个人务实和特质来描述,仍然言之有物,值得一读。

我遇到过很多开发人员,各有各的特点。最近,我在问我自己:“要成为最优秀的开发人员,需要什么条件?他们有什么共同点?”

为了激励大家,我写下了我观察到的咱们这个行业中最杰出人士的特质。真的希望我刚开始的时候就有这份清单。如果我遵循了这条路,就能节省很多地时间,这篇文章送给各位,希望你能顺利。

写在前面


如果说作为一名年轻的程序员,我应该做一件事,那就是阅读我所使用软件的参考资料。例如,阅读Apache Web 服务器文档Python 标准库TOML 规范

不要再去 Stack Overflow,不要问大语言模型,不要瞎猜测,直接去源头找。很多时候,你会发现它出奇地通俗易懂,而且写得非常好。

充分了解工具


优秀的开发人员能从根本上了解他们所使用的技术


能够使用工具和完全不同的方式去真正理解它是一回事。普通用户会笨手笨脚地摸索,很容易感到困惑,出错,而且也不会优化配置。


一位专家(在阅读完参考资料之后!)坐下来,为该工具编写一个配置,他能理解其中的每一行,并能向同事解释。是的,这是毫无疑问的!


要熟悉一个工具,你就必须知道以下几点:

  • 它的历史:谁创造了它?为什么创造它?为了解决什么问题?
  • 它的现在:谁来维护它?他们在哪里工作?从事什么工作?
  • 它的局限性:什么时候工具不合适?什么时候会坏?
  • 它的生态系统:有哪些库?谁在用它?有哪些插件?


比如,如果你是一名后端工程师,并且大量使用 Kafka,我希望你对 Kafka 有深入的了解。

至少,如果你想成为最优秀的工程师之一,这是我的期望。

 阅读错误消息和日志


就像认真阅读错误信息并尝试理解其中的含义一样。事实证明,如果你只是坐下来思考错误信息,它就会开始对你说话。最优秀的工程师能够从很少的上下文中推断出大量的信息。只需会阅读错误信息或错误日志,你就可以自己解决大多数的问题。


如果你能帮助那些没有超能力的人,那感觉就像拥有了超能力一样。比如“用杯子读书”之类的。


 分解问题


每个人都会遇到瓶颈,而最优秀的人知道如何摆脱困境。他们会把问题简化,直到变得易于理解。这是一项很难学习的技能,需要大量的经验。或者,你只是拥有超强的解决问题能力,比如你很聪明。


如果暂时没有此能力,你可以训练它,但要解决难题,却没有捷径。这个世界上有些问题,对于任何参与其中的人来说,都太难了,无法都一下子解决。


如果你是一名专业开发人员,你的主要工作就是:分解问题。如果你做得对,你会觉得这像是在作弊:你只需要解决简单的问题,直到完成为止。


 不要怕弄脏双手


我认识的优秀开发人员都读过很多代码,而且他们特别敢于尝试。


他们从来不会说“这不适合我”或“我帮不了你”。相反,他们只是开始学习。代码就是代码。只要投入时间和精力,他们就能掌握所需的任何技能。不知不觉中,他们就成了团队中无论接触什么都能信赖的人。


主要就是因为:他们是唯一一个从一开始就敢于尝试的人!


 喜欢帮助别人


与之相关的观点是,优秀的工程师需求量很大,而且总是很忙,但他们总是尽力提供帮助。这是因为他们天生好奇心,而乐于助人的精神正是他们成为优秀工程师的根本原因。


拥有这样的人才加入你的团队,这将是一件非常快乐的事情,因为他们都是解决问题的高手。


 擅长于写


大多数优秀的工程师都善于表达与言辞,并且也乐于分享知识。

锻炼自己最好的方法是通过某种方式来表达自己的想法:博客、演讲、开源,或者这些的结合体。

我认为写作能力和编程能力之间有着密切的联系。我认识的所有顶尖工程师都精通至少一种人类自然语言,通常不止一种。

掌握写作方式就是掌握思考方式,反之亦然。一个人的写作风格很大程度上反映了他的思维方式。如果写作风格令人困惑且缺乏结构,那么他们的代码风格也会如此。如果写作风格简洁、富有教育意义、结构良好,并且不时妙趣横生,那么他们的代码也会如此。

优秀的程序员在玩文字游戏中找到乐趣。

永远不停止学习


我认识的一些最优秀的开发者年龄都已经 60 多岁了。他们比我都强多了。部分原因是他们不断学习。如果有他们还没尝试过的新工具或喜欢的语言,他们就会去学习。这样,他们就能轻松掌握最新技术。


这并非理所当然:很多人大学毕业或开始第一份工作后很快就停止了学习。他们固执地认为学校里学到的东西就是“正确”的做事方式。所有新事物都是坏的,不值得他们花时间。所以,有的人25岁就“精神上退休了”,有的人68岁了,但头脑依然清晰。我努力有一天能成为后者。


与之相关的是,最优秀的工程师不会盲目跟风,但他们总会仔细评估新技术的优势。如果他们不接受,他们可以准确地告诉你原因什么时候这项技术是最佳选择,以及有哪些替代方案。


地位并不重要


最优秀的开发人员会与首席工程师和初级开发人员同时交流。他们之间没有什么等级制度。


他们努力向所有人学习,无论老少。新人通常还没有深陷办公室政治,思维仍然很活跃。他们不知道事情为什么会变得困难,所以会提出创造性的解决方案。


或许过去的障碍已经消失,这使得这些人成为宝贵的灵感源泉。


 建立声誉


如果你工作出色,一定可以成为一名优秀的工程师。但只有当你因卓越的工作而闻名时,你才能成为最优秀的工程师之一;至少在一个(较大的)组织、团队或公司内。


有很多方法可以为自己树立良好声誉:


  • 你为一个(较大的)组织构建并交付了一项关键服务。
  • 你写了一个著名的工具
  • 你为流行的开源工具做出了贡献
  • 你写了一本经常被提及的书


为什么我认为让自己的工作出名很重要?以上所有方法都可以扩大你在社区中的影响力。知名开发者的影响范围远大于普通开发者。你能写的代码量是有限的。如果你想“扩大”你的影响力,你必须要成为一位思想领袖。

建立声誉是一个长期目标。它并非一朝一夕就能实现,也并非必然。它也不会凭空而来。你每天都要坚持工作。随着时间的推移,你的成果会不言而喻。越来越多的人会信任你和你的工作,他们会愿意与你合作。你会参与更多声望卓著的项目,你的圈子也会越来越大。

我曾经听说过这样一种观点:你最近的作品应该超越之前的所有作品。这说明你走在正确的道路上。

要有耐心


你需要对计算机和人类保持耐心,尤其是对自己。并非所有事情都能立即奏效,人们需要时间学习。这并不是说你周围的人很笨;他们只是信息不完整。


如果没有耐心,你会觉得全世界都在与你作对,你周围的每个人都是无能的。那是一种痛苦的境地。你太聪明了,反而对自己不利。


要想成为顶尖人才,你需要拥有无比的耐心、专注和奉献精神。如果你想解决难题,就不能轻易分心。你必须回到键盘前才能克服困难。你必须投入精力,才能将项目推进到终点线。

如果你能做到这一点,同时又不傲慢自大,那就更好了。这正是顶尖人才与普通人的区别所在。

永远不要责怪计算机


大多数开发人员将不稳定、看似“随机”的错误归咎于软件、其他人、他们的狗或天气。

最优秀的开发人员可不会这么做。

无论计算机的行为看起来多么古怪或调皮,有一个合乎逻辑的解释:只是你还没有找到它!

最好的人会不断挖掘,直到找到原因。他们或许无法立即找到原因,或许永远也找不到,但他们绝不会责怪外部环境。

凭借这种态度,他们能够取得令人难以置信的进步,并学到别人未能学到的东西。当你误以为虫子是难以理解的魔法时,它永远都是魔法。

不要害怕说“我不知道”


在求职面试中,我极力要求应聘者至少说一次“我不知道”。原因并非为了显得高人一等(尽管有些人确实有这种感觉)。


不,我是想触及他们知识的边界。我想和他们一起站在他们自以为知道的前沿。很多时候,我自己也不知道答案。说实话,我不在乎答案。我在乎的是,面试官们在面试过程中胡扯些什么。


最优秀的候选人会说:“嗯,我不知道,但这个问题很有意思!如果让我猜,我会说……”然后他们会继续推断答案。这表明你有成为优秀工程师的潜力。


如果你害怕说“我不知道”,那你就会产生一种傲慢或防御心理。我不喜欢我的团队里有胡扯的人。最好承认你不可能无所不知。一旦你接受了这一点,你就能让自己学习。


“重要的是,你不要停止提问,”阿尔伯特·爱因斯坦这样说。


 不要猜


“面对歧义,拒绝猜测的诱惑”这是我最喜欢的PEP 20 – Python 之禅规则之一。


这确是真是太诱人了!我曾多次经历过这种情况,但我的雄心壮志却未能实现。


当你猜测时,可能会发生两件事:


  • 最好的情况下,你是错的,并且你的错误假设会导致更多错误。
  • 最糟糕的情况你是对的……而你永远不会停下来反思自己。你的思维模型建立在错误的假设之上。这可能会困扰你很长一段时间。


再次强调,要克制住猜测的冲动。提出问题,阅读参考资料,使用调试器,彻底搞清楚。尽一切努力找到真正的答案。

保持简单


聪明的工程师能编写聪明的代码,但杰出的工程师编写简单的代码。


这是因为大多数时候,简单就足够了。简单比复杂更容易维护。有时,把事情做好确实很重要,但了解其中的区别才是区分优秀与平庸的关键。

保持简单就能成就很多,然后专注于做正确的事情。

最后的想法


以上内容并不是一份清单或一场比赛;伟大的工程也不是一场比赛。千万别自欺欺人,以为可以省去辛苦的功夫。


没有捷径。祝各位一周编码顺利!


作者:马蒂亚斯·恩德勒

编译:洛逸

原文:

https://endler.dev/2025/best-programmers/

评论