我所认识的优秀程序员们

发布于 2025年4月4日 · 更新于 2025年4月7日

标签:devculture

我一生中遇到过很多开发者。最近,我问自己:“成为最优秀的人需要什么?他们有什么共同点?”

我希望这篇文章能给一些人带来启发,我写下了我在我们行业中最杰出的人身上观察到的特质。我希望在我刚开始的时候就能有这样一份清单。如果我遵循这条路,就能节省我很多时间。

阅读参考文档

如果说我年轻的时候应该做一件事,那就是_阅读我正在使用的东西的参考文档_。例如,阅读 Apache Webserver DocumentationPython Standard Library,或者 TOML spec

不要去 Stack Overflow,不要问 LLM,不要_猜测_,直接去看源头。通常情况下,它们出人意料地易于访问且编写良好。

非常了解你的工具

伟大的开发者在根本层面上理解他们使用的技术。

能够_使用_一个工具是一回事,真正_理解_(grok)它完全是另一回事。仅仅是使用者会摸索,很容易感到困惑,错误地使用它,并且不会优化配置。

专家会深入(在阅读了参考文档之后!)并坐下来为他们理解每一行的工具编写配置,并且可以向同事解释它。这不容置疑!

要了解一个工具,你必须了解:

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

阅读错误信息

就像真正阅读错误信息并尝试理解其中写的内容一样。事实证明,如果你只是坐下来冥想关于错误信息,它就会开始与你对话。最优秀的工程师可以从非常少的上下文中推断出大量信息。仅仅通过阅读错误信息,你就可以自己解决大部分问题。

如果你帮助一个不具备这种技能的人,也会感觉像是一种超能力。就像“从杯子里读取”一样。

分解问题

每个人都会有卡住的时候。最优秀的人知道如何摆脱困境。他们简化问题,直到它们变得易于消化。这是一项很难学习的技能,需要大量的经验。或者,你只是拥有出色的问题解决能力,例如,你很聪明。如果没有,你可以训练它,但没有办法绕过分解难题。世界上有些问题对于任何参与者来说都太难一次性解决。

如果你作为一名专业的开发者工作,那么这就是你获得报酬的大部分工作:分解问题。如果你做得对,你会觉得像作弊:你只是解决了简单的问题,直到完成。

不要害怕弄脏你的手

我认识的最优秀的开发者阅读大量的代码,并且他们不害怕接触它。他们从不说“那不适合我”或“我在这里帮不了你”。相反,他们只是开始并学习。代码_只是代码_。他们只需花费时间和精力就可以掌握任何需要的技能。在你意识到之前,他们就成为了团队中任何他们接触过的东西的首选人员。主要是因为他们是唯一一个一开始就不害怕接触它的人。

总是帮助别人

一个相关的观点。伟大的工程师需求量很大,并且总是很忙,但他们总是尝试提供帮助。这是因为他们天生好奇,并且他们的支持性思维是使他们成为伟大的工程师的原因。拥有他们在你的团队中是一种纯粹的乐趣,因为他们是问题解决者。

写作

大多数优秀的工程师都口才很好,并且乐于分享知识。

最优秀的人会为他们的想法寻找一些出口:博客、演讲、开源或这些的组合。

我认为写作技巧和编程之间存在很强的相关性。我认识的所有最优秀的工程师都至少精通一种人类语言——通常更多。掌握你的写作方式就是掌握你的思考方式,反之亦然。一个人的写作风格说明了他们的思考方式。如果它令人困惑且缺乏结构,他们的编码风格也会如此。如果它简洁、具有教育意义、结构良好且有时机智,他们的代码也会如此。

优秀的程序员乐于玩弄文字。

永不止步地学习

我认识的一些最优秀的开发者已经60多岁了。他们可以让我望尘莫及。部分原因是他们不断学习。如果有什么他们没有尝试过的新工具或他们喜欢的语言,他们会学习它。这样,他们总是可以轻松地掌握事物。

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

有点相关的是,最优秀的工程师不追随潮流,但他们总是仔细评估新技术的益处。如果他们拒绝它,他们可以准确地告诉你_为什么_,什么时候该技术是一个不错的选择,以及有哪些替代方案。

状态并不重要

最优秀的开发者与首席工程师和初级开发者交谈。没有等级制度。他们尝试向每个人学习,无论老少。新人通常还没有陷入办公室政治,并且仍然有清新的头脑。他们不知道为什么事情很_难_,因此他们提出了创造性的解决方案。也许过去的障碍不再存在,这使得这些人成为了灵感的来源。

建立声誉

如果你得好,你就可以成为一名扎实的工程师,但只有当你你的好工作而闻名时,你才能成为最优秀的人之一;至少在一个(更大的)组织内。

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

为什么我认为因你的工作而闻名很重要?以上所有都是扩大你在社区中的影响范围的方式。著名的开发者比不出名的开发者影响更多的人。你能编写的代码是有限的。如果你想“扩展”你的影响力,你必须成为一个思想领袖。

建立声誉是一个长期的目标。它不会在一夜之间发生,也不必如此。它也不会偶然发生。你每天都出现并完成工作。随着时间的推移,工作会说明一切。更多的人会信任你和你的工作,他们会想与你合作。你将参与更负盛名的项目,并且圈子会扩大。

我曾经听说过这样一种观点,即你最新的工作应该盖过你以前所做的一切。这是一个你走在正确轨道上的好兆头。

保持耐心

你需要对计算机和人类保持耐心。特别是对自己。并非一切都会立即奏效,人们需要时间来学习。并不是你周围的人很笨;他们只是掌握的信息不完整。没有耐心,你会觉得世界与你作对,你周围的每个人都只是无能。那是一个悲惨的地方。你太聪明了,聪明过了头。

要成为最优秀的人之一,你需要令人难以置信的耐心、专注和奉献精神。如果你想解决难题,你不能轻易分心。你必须回到键盘前才能克服它。你必须努力工作才能将项目推过终点线。如果你能做到这一点而不成为一个傲慢的混蛋,那就更好了。这就是区分最好的人和其他人的原因。

永远不要责怪计算机

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

最优秀的人不会。

无论计算机的行为看起来多么不稳定或恶作剧,都_总是_有一个合乎逻辑的解释:你只是还没有找到它!

最优秀的人会继续挖掘,直到找到原因。他们可能不会立即找到原因,他们可能永远不会找到它,但他们从不责怪外部环境。

有了这种态度,他们能够取得令人难以置信的进步并学习其他人无法学到的东西。当你将错误误认为是难以理解的魔法时,魔法将永远是魔法。

不要害怕说“我不知道”

在面试中,我极力促使候选人至少说一次“我不知道”。原因不是我想看起来更优秀(虽然有些人确实有这种印象)。不,我想达到他们知识的边界。我想和他们一起站在他们认为自己知道的边缘。通常,我自己也不知道答案。老实说,我并不关心答案。我关心的是当人们在面试中胡说八道时。

最优秀的候选人会说“嗯,我不知道,但这是一个有趣的问题!如果我不得不猜测,我会说……”然后他们会开始推断答案。这是一个你有潜力成为一名伟大的工程师的标志。

如果你害怕说“我不知道”,你就会带着傲慢或防御的姿态出现。我不喜欢团队里的吹牛者。最好承认你不可能什么都知道。一旦你接受了这一点,你就可以让自己学习。“重要的是你不要停止提问,”阿尔伯特·爱因斯坦说。

不要猜测

“面对含糊不清,拒绝猜测的诱惑”这是我在 PEP 20 – The Zen of Python 中最喜欢的规则之一。

而且猜测是如此、如此诱人!

我经历过很多次,并且我自己的野心失败了。

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

再次,抵制猜测的冲动。提出问题,阅读参考文档,使用调试器,彻底地进行。尽一切努力来获得答案。

保持简单

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

这是因为大多数时候,简单就足够了。而且简单比复杂更容易维护。有时候把事情做对_确实_很重要,但知道区别是什么将最好的人和其他人区分开来。

通过保持简单,你可以取得很大的成就。专注于正确的事情。

最后的想法

以上不是一个清单或比赛;伟大的工程不是一场比赛。

只是不要自欺欺人地认为你可以跳过努力工作。没有捷径。祝你旅途愉快。

感谢阅读!我主要写关于 Rust 和我的(开源)项目。如果你想自动接收以后的文章,你可以通过 RSS 订阅。