我认识的最好的程序员

我在生活中遇到过很多开发人员。最近,我问自己 “怎样才能成为最优秀的开发者之一?他们都有哪些共同点?

我写下了我观察到的最杰出的开发人员身上的特质,希望能对大家有所启发。我真希望在我刚起步的时候就有这份清单。如果我沿着这条路走下去,就会节省很多时间。

阅读参考资料

如果有一件事是我作为年轻程序员应该做的,那就是阅读我正在使用的东西的参考资料。例如,阅读 Apache 网络服务器文档Python 标准库TOML 规范

不要去 Stack Overflow,不要问大语言模型(LLM),不要猜测,直接去找源代码。很多时候,源代码会出人意料地易于理解,而且写得很好。

真正了解你的工具

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

会使用工具是一回事,而真正掌握(理解)它又是另一回事。普通用户会四处摸索,容易混淆,拿错工具,无法优化配置。

专家在阅读参考资料后,会坐下来为工具编写配置文件,他们对每一行都了如指掌,还能向同事解释。这样就不会有任何疑问了!

 

要充分了解一个工具,您必须知道:

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

例如,如果你是一名后端工程师,并且大量使用 Kafka,我希望你对 Kafka 有很多了解–而不仅仅是你在 Reddit 上读到的东西。如果你想成为最优秀的工程师之一,至少这是我的期望。

阅读错误信息

如真正阅读错误信息,并试着理解其中所写的内容。事实证明,如果你坐下来静心阅读错误信息,它就会开始与你对话。最好的工程师可以从很少的上下文中推断出大量的信息。只需阅读错误信息,你就能自己解决大部分问题。

如果你能帮助不具备这种技能的人,也会感觉自己拥有超能力。就像 “杯中阅读 ”一样。

分解问题

每个人都会有陷入困境的时候。最优秀的人知道如何摆脱困境。他们会把问题简单化,直到变得可以消化。这是一项很难学会的技能,需要大量的经验。或者,你只是拥有超强的解决问题的能力,比如,你很聪明。如果没有,你可以训练它,但破解难题是没有办法的事。这个世界上有些问题对任何人来说都是难以一次性解决的。

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

不要害怕弄脏你的手

我认识的最好的开发人员会阅读大量代码,而且他们不害怕接触代码。他们从不说 “这不适合我 ”或 “我帮不了你”。相反,他们只是开始学习。代码就是代码。只要肯花时间和精力,他们就能掌握所需的任何技能。不知不觉中,他们就成了团队中的得力助手。这主要是因为他们是唯一一个一开始就不怕接触的人。

经常帮助他人

与此相关的一点是。优秀的工程师需求量大,总是很忙,但他们总是尽力帮助他人。这是因为他们天生充满好奇心,而他们的助人为乐精神正是他们成为伟大工程师的根本原因。他们是问题的解决者,有他们在你的团队中,纯粹是一种快乐。

写作

大多数出色的工程师都能言善辩,乐于分享知识。

最优秀的工程师都有自己的思想出口:博客、演讲、开放源代码,或者这些方式的结合。

我认为写作技巧与编程之间有着密切的联系。我认识的所有优秀工程师都至少精通一门人类语言,而且往往不止一门。掌握了写作方法,也就掌握了思维方式,反之亦然。一个人的写作风格在很大程度上反映了他的思维方式。如果写作风格混乱、缺乏条理,那么他们的编码风格也会如此。如果一个人的写作风格简明扼要、富有教育性、结构合理,有时还很诙谐,那么他的代码也会如此。

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

永不停止学习

我认识的一些最优秀的开发人员已经 60 多岁了。他们可以围着我转。部分原因是他们一直在学习。如果有新的工具他们还没有尝试过,或者有他们喜欢的语言,他们就会去学习。这样,他们总是不费吹灰之力就能掌握一切。

这并不是理所当然的:很多人在大学毕业或开始第一份工作后,很快就停止了学习。他们固步自封,认为学校教的就是 “正确 ”的做事方法。一切新的东西都是不好的,不值得他们花时间去学习。因此,有 25 岁的人 “精神退休”,也有 68 岁的人记忆犹新。我希望有一天自己也能成为后者。

与此有关的是,最优秀的工程师不会跟风,但他们总是会仔细评估新技术的好处。如果他们否定了新技术,他们会告诉你确切的原因,什么时候这项技术会是一个不错的选择,以及有哪些替代方案。

地位并不重要

最优秀的开发人员会与首席工程师和初级开发人员进行交流。他们没有等级之分。他们努力向每个人学习,无论老少。新人往往还没有在办公室政治中根深蒂固,他们的头脑还很新鲜。他们不知道事情困难的原因,因此会提出创造性的解决方案。也许过去的障碍已经不复存在,这让他们成为灵感的源泉。

建立声誉

如果你工作出色,你可以成为一名出色的工程师,但只有当你的出色工作为人所知时,你才能成为最出色的工程师之一;至少在一个(较大的)组织内是这样。

有很多方法可以为自己建立声誉:

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

为什么我认为因自己的工作而闻名很重要?以上都是扩大你在社区中影响半径的方法。知名开发者比非知名开发者影响的人要多得多。你能写的代码有限。如果你想 “扩大 ”自己的影响力,就必须成为思想领袖。

建立声誉是一个长期目标。它不会一蹴而就,也不必一蹴而就。它也不会偶然发生。你每天都要现身说法,做工作。随着时间的推移,你的工作将不言自明。更多的人会信任你和你的工作,他们会愿意与你合作。你会参与更多有声望的项目,这个圈子也会越来越大。

我曾经听说过这样一个观点:你的最新作品应该盖过你之前的所有作品。这是一个很好的信号,说明你走在正确的道路上。

要有耐心

对电脑和人类都需要耐心。尤其是对你自己。并不是所有东西都能马上发挥作用,人们需要时间来学习。你周围的人并不愚蠢,他们只是掌握的信息不完整。如果没有耐心,就会觉得全世界都在和你作对,周围的人都是无能之辈。这种感觉很糟糕。你太聪明了。

要成为最优秀的人之一,你需要极大的耐心、专注和奉献精神。要想解决难题,就不能轻易分心。你必须回到键盘前,克服它。你必须付出努力,将项目推向终点。如果你能做到不自大,那就更好了。这就是高手与高手之间的差距。

永远不要责怪计算机

大多数开发人员都会把一些看似 “随机 ”的错误归咎于软件、其他人、他们的狗或天气。

最好的开发人员不会这样做。

无论计算机的行为看起来多么反复无常或调皮捣蛋,总会有一个合乎逻辑的解释:只是你还没有发现而已!

优秀的开发人员会不断挖掘,直到找到原因。他们可能不会立即找到原因,也可能永远找不到原因,但他们从不将原因归咎于外部环境。

有了这种态度,他们才能取得惊人的进步,学到别人学不到的东西。当你把虫子误认为是难以理解的魔法时,魔法就永远是魔法。

不要害怕说 “我不知道”

在求职面试中,我极力要求应聘者至少说一次 “我不知道”。原因并不是我想显得高人一等(虽然有些人肯定会有这种印象)。不,我想触及他们的知识边界。我想和他们一起站在他们自以为知道的边缘。很多时候,我自己也不知道答案。老实说,我并不关心答案。我关心的是,面试时他们会不会胡说八道。

最好的应聘者会说:”嗯,我不知道,但这是个有趣的问题!如果让我猜的话,我会说……”,然后他们就开始推理答案。这说明你有成为优秀工程师的潜质。

如果你不敢说 “我不知道”,那你就是自大或自卫。我不喜欢我的团队里有胡说八道的人。最好承认你不可能什么都知道。一旦你接受了这一点,你就会允许自己去学习。“爱因斯坦说:”重要的是你不要停止提问。

不要猜测

“面对模棱两可,拒绝猜测的诱惑”,这是我最喜欢的《PEP 20 – Python 禅》中的一条规则

猜测是如此如此诱人!

我曾多次这样做,但都以失败告终。

当你猜测时,可能会发生两种情况:

  • 最好的情况是你错了,你的错误假设导致了一个 bug。
  • 最坏的情况是,你是对的……而且你永远不会停下来重新猜测自己。你会根据错误的假设建立自己的心智模型。这会困扰你很长时间。

再次强调,抵制猜测的冲动。多问问题,阅读参考资料,使用调试器,深入研究。想尽一切办法找出答案。

保持简单

聪明的工程师写出聪明的代码。杰出的工程师则编写简单的代码。

这是因为大多数时候,简单就足够了。而且简单比复杂更容易维护。有时,把事情做对确实很重要,但知道其中的区别才是最好的区别。

保持简单,你就能实现很多目标。专注于正确的事情。

最后的想法

上述内容不是一份清单,也不是一场竞赛;伟大的工程学也不是一场竞赛。

只是不要欺骗自己,以为可以跳过艰苦的工作。没有捷径可走。祝你一路顺风。

阅读余下内容
 

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注


京ICP备12002735号