【译论】杰出程序员的秘诀

读了今天的文章 Curl is just the hobby 之后,我在研究丹尼尔-斯滕伯格(Daniel Stenberg)时偶然发现了路德维格-斯特里格斯(Ludvig Strigeus)(联系:两人都获得过波尔姆奖 Polhem Prize)。我对他迄今为止的毕生成就感到有些惊讶。以下是他的一些重要作品:

  • μTorrent – 用于 Microsoft Windows 和 OS X 的小体积 BitTorrent 客户端
  • ScummVM–冒险游戏引擎(尤其是 LucasArts 的 SCUMM)的解释器
  • OpenTTD–《运输大亨》的逆向工程游戏引擎,与原版相比有许多移植和改进之处
  • "The Idiot–一款适用于 Windows 的纸牌游戏
  • WebWorks – 一种文本 HTML 编辑器
  • Spotify – 一种商业音乐流服务
  • Spotiamp – 用于 Windows 的轻量级 Spotify Premium 客户端,旨在向 Winamp 致敬
  • TunSafe – 使用 WireGuard 协议的 Windows VPN 客户端

很明显,有些程序员的工作效率远远高于平均水平,而且对世界仍然需要的解决方案有着敏锐的触觉。一个程序的成功可能是运气或巧合,但这一系列的成功似乎有其系统性。上述任何一个程序都很容易成为许多开发人员的毕生事业。

秘诀是什么?

本文文字及图片出自 news.ycombinator.com

你也许感兴趣的:

共有 94 条讨论

  1. > 秘诀是什么?

    我不是杰出的程序员,但我喜欢乔纳森-布洛(Jonathan Blow)关于提高工作效率的建议:”你不需要时间管理或生产率技巧。如果你想完成一个项目,就最大限度地利用你坐在椅子上打开编辑器的时间”。仅此而已。

    建造一座大教堂的最佳方法就是一砖一瓦。努力和坚持胜过一切。成为十倍开发者对你在工作和生活中取得成就没有任何影响。

    1. 各取所需。

      专注地坐在椅子上效果很好。但这不是唯一的选择。当我的孩子出生后,这完全破坏了我长时间不间断编码的习惯。不过这也让我意识到,你可以一边推着婴儿车,一边在脑海中进行原型设计和重构。然后,你回到电脑前,就可以将所有内容以最终形式冲洗出来。最重要的是,从头到尾,这比坐在机器前编码和重新编码花费的时间更少。

      但同样,这对我来说也是因为我的编码方式。坐在椅子上对布洛有用,是因为他的编码方式。见仁见智吧。

      1. 椅子也是一种隐喻。在吊床上规划项目就像在 Emacs 上打字一样繁重。

        但是,在谷歌上搜索工作效率建议、询问别人应该做什么、在 HN 上胡思乱想,这些都不是工作。一旦一个项目开始变得无趣,你就立即投入另一个项目,而不是立即完成它,这也不是工作(这对业余爱好来说是可以的,但越接近完成,工作就越难完成)。

        无论如何,你可以在远离键盘的地方完成很多工作,但在你把它们输入编辑器之前,它们只是存在于你脑海中的想法,而这些想法毫无价值。

    2. 肯定不止这些。我几乎总是打开着编辑器,在做一些雄心勃勃的项目。我在 Github 上有 96 个原创项目,其中 90% 尚未完成。

      所有已完成的项目要么很小,要么属于小众项目,没有人会使用或关注它们。在未完成的项目中,它们都是未完成的,即使其中有值得注意的东西,也不会有市场。

      当然,我完成了我所有的专业工作,其中也有一些很酷的产品,但从来没有人付钱让我去做具有全球/文化影响力的工作。

      顺便说一句,我完全没有抱怨。我在编码的时候总是很开心。但我所做的工作与路德维格、米切尔、莱纳斯-托瓦尔兹或贝拉德等人所做的工作有明显的不同。

      最起码,它有一定的针对性和速度。我当时就快完成我的非标准 C 编译器了,然后 Rust 出现了,它能做我想在 C 编译器中做的一切,甚至更多。几年后,我几乎就要用 Rust 完成我的 ECS 系统了,然后有几个月我的日常工作压力变得超级大,让我晚上疲惫不堪,无法编写代码,然后 SPECS 发布了,它基本上实现了我想做的事情。

      我最喜欢的开放源码软件项目是为星际争霸游戏编写人工智能的 Ruby 框架:Broodwar》游戏编写人工智能的 Ruby 框架。当时 BWAPI 社区的活跃人数还不到 50 人。他们中的大多数人要么用 Java 完成,要么直接用 C++ 完成,我敢肯定每个人都会对费尽心思制作 Ruby 绑定框架的人瞠目结舌。

      1. >肯定不止这些。我几乎总是打开编辑器,在做一些雄心勃勃的项目。恕我直言,我在 Github 上有 96 个原创项目,其中 90% 尚未完成。所有已完成的项目要么是很小的,要么是很小众的,没有人会使用或关注它们。在未完成的项目中,它们都是未完成的,即使其中有值得注意的东西,也不会有市场。

        我想引用约翰-卡马克(John Carmack)说过的一句话(意译):”我们为软盘制作的所有小游戏都不值得纪念,但我愿意认为,我们在此期间付出的努力最终让我们制作出了更好的游戏”。

        我的意思是,我们把程序员浪漫化,以至于忘记了他们的伟大之处。他们工作和制作的东西没有人会记得或知道,但正是这些必要的工作让他们制作出了值得铭记的东西。

      2. 还有一点。请查阅社会证明和复利的概念。

        这里有一篇关于复利的文章: https://tynan.com/thekey/

        至于社会证明,概念如下:你的声誉由你最大的成就而不是你最大的失败组成。我以乔纳森-布劳(Jonathan Blow)为例。他是《Braid》的创造者。他永远都是《Braid》的创造者。只要有一款大受欢迎的爆款游戏,就能巩固你作为杰出程序员的声誉。在那部爆款游戏之前和之后,你可以做十几部无人问津的游戏,但这并不重要。

        棘手的是,你永远不知道什么会大红大紫,什么会被人遗忘。这就是为什么大多数杰出的程序员都会铤而走险。他们做出的东西都很伟大。他们雄心勃勃。用 Rust 制作另一个 ECS 系统,并不能成为公认的杰出作品。它必须在某些方面更上一层楼。

        话虽如此,要在 Rust 中制作一个庞大、雄心勃勃、令人印象深刻的 ECS 系统,你需要对问题有非常深入的了解。要做到这一点,就必须在 Rust 中开发出令人印象深刻的 ECS 系统。参见前面关于复利的观点。

        1. 我记得他制作过《Braid》,但我对 Jai 更感兴趣。

          我也不认为他们是为了名气而做,他们做是因为他们看到可以做,或者至少应该尝试,因为它更好,而且还没有人做过。

    3. 你说的没错,但还不够。同样重要的是,要清楚地知道自己想要建立什么以及如何建立。没有这些,坐在椅子上的时间就不会得到很好的利用。

      1. 同意。在过去十年里,我几乎每个周六和周日早上都会出现在这里,但我仍然在做同一个愚蠢的副业,因为我一直在重新思考基本原理,回到绘图板上。我终于快要完成了,但回过头来看,一些时间管理和更清晰的愿景会从根本上改善我迄今为止的生活结果。

      2. 完全正确。您至少需要

        – 您想要实现的愿景

        – 实现目标的技能

        – 实现目标的时间

        我发现时间是最难解决的问题,尤其是在我成家之后。

        1. 把它应用到比编写程序更大的范围。

          你的家庭是你正在努力建立的。为此投入所需的时间。如果你最终没有足够的时间来编写程序,那也没关系。在你的家庭和你的程序之间的时间争夺战中,程序应该输。

          我最大的失败之一就是在有小孩子的时候,把太多的精力放在了我的宠物项目上。

          1. 在我们的内在驱动力和周围人的需求之间取得平衡总是很困难的;在自己身上花费太多时间和剥夺自己的创造力出口都会导致怨恨。

            我想说的是,我很 “幸运”,因为我的童年比某些人要艰苦一些,所以我对自己不想成为什么样的人有一个清晰的认识,这就意味着要做出一些个人牺牲,尤其是在业余爱好项目方面。

            我希望你现在已经重新平衡好了,你的孩子们大概都长大了一些。

      3. 为什么不呢?你只需利用坐在椅子上的时间,先勾勒出一个清晰的构思,知道自己要如何/建造什么。

      4. 我并不完全不同意这种说法,只是真正熟悉工具的人也会更快地对半生不熟的想法进行迭代,因为在椅子上会遇到很多事情。

        事实上,我昨天看到一个关于思考时间和打字时间的主题时,就打算提出这一点,但一直拖到今天。

        每次打字回复时,我都遵循同样的原则。我不会假装我正在打的文字是草稿,但在我开始打字回复您的评论后,我可以思考那些值得一提的事情,如果这能说得通的话。

      5. 是的,确实如此。我发现,我经常会为一个想法而兴奋不已,并立即开始投入时间制作一个粗略的原型。一旦我意识到所要付出的努力的真正规模,我就会重新审视我对这个想法的承诺–这真的是我想要花一年多的时间去做的事情吗?我认为拥有清晰的愿景和足够的信念是非常重要的,也是我一直努力的方向。

    4. 专注力被低估得令人难以置信,这可能也是我们中很多人都在服用多动症药物的原因,但我也要强调让人专注的_环境_的重要性。

      基于干扰的工作流程、缺乏指导、对开发人员施加压力导致压力过大,这些都会扼杀最有生产力的开发人员。我曾在一些地方工作过(我职业生涯的大部分时间),那里有失败的空间,可以花更多的时间去做那些价值不是立竿见影的事情,也产生了很多成果;也曾在一些地方工作过,那里的负面因素扼杀了开发的动力,而这种动力可能来自开发过程中的普遍快乐和兴奋。

      这些 “杰出 “人员中的很多人都工作在这样一个环境中,在这里,开发主要是一种快乐。在这样的环境中,花 3 天时间解决一个小问题,就能激发出解决更多问题的动力。他们要么是久经考验、值得信赖的人,要么是富得足以不受这些事情影响的人,要么就是在另一个灵活的空间里工作。

      这让开发工作充满乐趣,因此随着时间的推移,产出也会最大化。

    5. …………^这一点,但如果你不 “痴迷 “于自己正在做的事情,就很难一直打开编辑器。

    6. 同意。此外,”关心 “也是影响你的产出和成长的另一个重要因素。如果你不参与或不投入工作,坐在座位上的时间就会非常浪费。如果你对自己的工作充满热情,就会大大提高工作效率。

    7. 我同意你的总体观点–好代码不是靠整天开会或摆弄 org 模式写出来的。但和所有建议一样,它也需要注意事项。如果你是在一个对领域或遗留代码知之甚少的 “棕地 “项目上,直接跳入并在编辑器上花费大量时间很可能会导致挫败感和精力的浪费。

    8. 我在谷歌上搜索了这个人,想了解一下他的背景。与普通人相比,他在 “坐在椅子上的时间 “方面绝对有优势。

      1. 是的,说句不好听的,我不确定布罗是否是我会采纳的生产力建议的人。

        1. 我不知道你怎么想,但他的出货量比这里大多数人都要多。我想,对你们中的某些人来说,两款获奖游戏和一种编程语言还不够好。

          或者你是想说他太成功了,不应该从他那里得到成功的建议?

          1. 克里斯-罗伯茨(Chris Roberts)也成功出品了 4-5 款游戏。你现在会从他那里听取生产力或项目管理方面的建议吗?

        1. 不是这样的。他住在旧金山,喜欢外出跳舞。

            1. 你的链接中没有提到 “吹 “这个词。你是产生幻觉的法学硕士吗?

              编辑:”路德维格-斯特里格斯需要坐轮椅”。你是不是没注意到你回复的那段话是乔纳森-布洛说的,而不是斯特里格斯说的?顺便说一句,你还是没有通过图灵测试,因为你被切身相关的输入搞糊涂了;)

              1. 我不小心按到了我实际所指帖子的回复按钮。父母是关于 Strigeus 的。此外:既然每个中等规模的法学硕士似乎都通过了测试,我也就不再尝试了。

    9. > 努力和坚持胜过一切。成为十倍开发者对你在工作和生活中取得成就没有任何影响。

      嗯。10 倍开发者这个词可能有问题,但如果你使用这个词,那么它的字面意思就是比其他大多数开发者更有生产力的开发者。

  2. 我鼓励人们不要浪费时间去寻找人生的秘诀和捷径。”成功的公式 “高度依赖于太多的因素,无法复制,而且往往只适用于使用它的人。

    绝大多数人(在任何行业、艺术或手艺领域)永远不会获得名利和认可,而许多获得名利和认可的人实际上觉得这是一种空洞、虚无的体验。还有一些人是在死后获得的,这时你可以说 “这重要吗?

    如果你喜欢写程序,那就写吧!你的想法并没有那么好(我的想法也没有那么好),你也并不特别(我也不特别),但很多 “不起眼 “的人却从看似平庸的概念中创造出了纯粹的魔法,最终帮助人们解决了问题,或给他们带来了快乐,或对他们的生活产生了积极的影响。

    我个人认为,任何人都能找到成功的方法,只要他们专注于编码的旅程和乐趣,确保他们出现并参与其中,保持存在感,保持好奇心和游戏精神,并且不期望他们的努力能得到任何回报。真正的回报是在创造的过程中享受乐趣并感到充实。

    1. 这终究是最高质量的建议,尽管我认为许多人并不愿意接受它。这就像饮食时尚,或者对生命意义的追求。很多人都愿意相信有一些秘密,有些人知道,有些人不知道。

    2. 我觉得你是唯一一个真正回答了 OP 问题的人。

  3. 不要只做一个项目。你会一直拖延或找借口不做。

    做两个。这样,你就可以通过做另一个项目来拖延每一个项目。

  4. 我是瑞典人。我们有不少这样的人。每一个这样的 “公众 “程序员中,都有很多是完全不推销自己的超级程序员。我曾与其中一些人共事过。

    我只是想抛出这个链接,因为我觉得它很棒:

    https://internetmuseum.se/english/

    在其他疯狂的故事中,丹尼尔是其中的主角。我最喜欢的故事是,顶级域名 .se 由一个人在自己的客厅里经营了多年,直到瑞典互联网基金会接管。

    还有 Kazaa 和海盗湾背后的人。他们都是那个时代真正的黑客。

    关于你的问题,我认为 “当时发明的大多数东西 “都是 “简单 “的想法,但由于当时的工具和程序员缺乏,很难实现。但如果你很优秀,你可以独自或与一个小团队一起完成。我认为现在的情况有点倒过来了:要在这个领域找到一个人或一个小团队就能完成的新奇好点子很难,但如果你能做到,由于开放源码软件的存在,构建和发布它可能要容易得多。

    当然,全瑞典版本的 https://internetmuseum.se/ 更好。

    1. 关于 Kazaa(以及后来的 Skype),最初的开发者都是爱沙尼亚人。Zennström 和 Friis 是业务人员(Friis 是丹麦人)。

  5. 我只是个尝试者。不过,出于一种奇怪的爱好/痴迷,我从小就开始编码。虽然在公共场合没有什么大成就,但我在 40 岁时退休,花时间建造我的大教堂:https://www.adama-platform.com/。

    我的历史:https://www.adama-platform.com/2024/01/28/euler.html

    1. 这是下一阶段。您听说过 Redplanetlabs 的 Rama 吗?

      1. 前段时间听过。觉得很有意思。

  6. 我会避免对一个人的一生进行英雄崇拜,因为成功在很大程度上取决于是否足够聪明,是否能够抓住机遇,同时也不会遭受身体、精神或家庭方面的挫折,以及是否出生在一个能促进你发展的阶层/种族/性别。同时,不为家庭目标、毒品/恶习或承诺等事情分心,拥有时间、经验和最重要的声誉,这些都可以用来滚雪球,取得更大的成就。

    路德维格没有说什么,只是在解释为什么不是每个人都能成为他。

  7. 大多数项目看起来更像是业余项目而非专业项目,因此我认为拥有大量空闲时间是一个先决条件。我对这个人一无所知,但你列出的所有项目都是在重新实现已经存在的东西,至少要求非常明确,所以速度更快。

  8. 通过阅读这些评论,我们发现成功的一个重要因素似乎是是否有空闲时间。这与我的观察不谋而合。不过,作为一个孩子的父亲,我想知道是否有成功地将家庭与令人兴奋的成功软件项目结合起来的生活计划实例。我只能想到一些杰出的程序员,他们在创造性工作的黄金时期,(显然)是自由自在、无牵无挂的人,没有(请原谅我直率的假设)重要的家庭联系。是我错了吗?有反例吗?根据我的经验,作为一个父亲,最重要的技能是纪律和时间管理。当然,这也是有意义的,对吗?

    1. 我没有创造出惊天动地的事业,但我有成功的机会,尽管我很早就有了孩子。我现在 48 岁,最小的孩子上周末搬走了。成为空巢老人将给我带来更多的机会。

      我有几个建议…

      始终为自己的工作留出 “空间”。我的工作空间小到一个抽屉,专门用来放笔记本电脑和耳机。空间越舒适越好,但不需要太复杂。

      当我的孩子还很小的时候,我和妻子就决定让他们养成早睡的习惯。这让我们每晚都有几个小时的自由时间。

      我是个早起的人,所以我比家里其他人都起得早。我仍然有 7 或 8 个小时的睡眠时间。早上这两个小时我的工作效率最高。

      留出一些工作时间。对我来说,就是早上。

      尝试多读书或做其他能刺激大脑的事情。阅读时,我的大脑会更加活跃。我知道,这是你可以工作的时间,但对我来说,它能让你的大脑活动起来。不过,这可能不应该在工作时间进行。

      我有过一些轻微的成功,但现在我认为是失败的。请参阅我的文章《25 年失败的生意是如何赔钱的》:

      https://joeldare.com/how-to-lose-money-with-25-years-of-fail

    2. 我认为,大多数成就非凡的人终其一生都是单身,这一点或多或少已被人们所接受。从直觉上讲,这是有道理的,但这并不意味着即使有了家庭的负担,你也不能取得巨大的成功。

      在我的印象中,至少有两位非常成功且多产的人同时有几个孩子。

      1. 作家是我能想到的最常见的反例。有很多多产、成功的作家都有多个孩子。

  9. 我认识一位杰出的人,他的成就不是 10 倍,而是 100 倍。下面是他所做的一些事情的简短而不完整的清单:

    … 十几岁时就在 16 位计算机上发布游戏(带 “s”)(而且是好游戏)

    … 在切割金属板时最大限度减少切口和损失的工业软件

    … 当智能手机游戏问世时,他编写了便于创建游戏的工具,并让一款商业游戏进入了苹果应用商店的前三名

    … 在此之前:他为诺基亚手机(前安卓时代)编写了多个应用程序,并使用自己编写和托管的配置服务器为其提供服务

    … 为传统银行基础设施编写将 Java 代码移植到 COBOL 的代码

    … 在此之前,他通过一些熟人从空中获取的图片,编写了一些谷歌地图

    … 创建软件公司并获得资金

    … 对加密货币产生兴趣,编写了几个钱包,包括智能手机钱包

    … 编写实时视频转码服务器

    … 为雅达利 ST 写了一个 Amiga mod 播放器(那个真的很酷

    … 查找并撰写有关 JVM 错误的详细报告

    … 他熟知许多标准

    … 数不清的网站

    … 在 LLM 取得突破之前,他就在做 ML:教三维 “物体 “学会移动

    … 太阳能电池板/微型逆变器效率的嵌入式设备监控和可视化

    他转行做了开发人员,并爱上了开发人员。他仍然在编码。

    他的秘诀是一生都对这一行充满热情。

    在他的工作中,没有什么事情不是变得更快、更干净的。他去过的所有地方,没有一个没有值得他学习的地方(也没有值得他学习的地方:激情和好奇心)。

    他精通多种语言:从汇编到 C 到 C++ 到 Java 到 Kotlin 到 Lua 到 ML 语言到众多脚本语言。

    前端、后端,从大型服务器到微小的嵌入式设备。傻瓜手机。智能手机。

    我所知道的唯一一种他从未使用过的语言是 Lisp(所以我得到了一些荣誉)。

    他不仅仅是个开发人员:他还管理服务器,既是为了娱乐,也是为了工作……最近他又喜欢上了开发运维(在我打这篇文章的时候,他正在为一家大型支付处理商工作)。

    他已经 50 岁了,他会把你揍得屁滚尿流。

    他碰巧是我的好朋友,每当我听到 “没有 10 倍速的程序员 “这句话时,我都会忍不住笑出声来。

    他和我不一样,他很谦虚。他会说他知道的不多。他总是有学习的欲望。

    我认为最重要的是:当他 30 岁时,他认为 50 岁的程序员有很多东西可以教他。

    1. 所以,基本上就是现实世界中的吉尔弗约尔。

      我并不怀疑 100 倍的存在,但我在轶事中看到 10 倍的存在。

      这个 10 倍的人其实已经结婚了,这是我觉得最不可思议的地方。

  10. 我现在已经很少在 Ruby 领域工作了,但在我工作的时候,我几乎每周都会遇到 @ankane 的图书馆。他多产,涵盖了许多学术领域和语言。感觉就像我对哪个领域感兴趣,他就会出现在哪个领域的边缘。

    https://github.com/ankane?tab=repositories&type=source

  11. 首先,我并没有把自己和那个人相提并论,但你可以说,我在创办公司并使其成功方面也有类似的 “机会”,而且我是一个单独的开发人员。

    我已经建立了近 100 个项目和公司,这些项目和公司的总收入超过了 10 亿美元,而我只有一个人(非技术所有者)。我没有团队,所有这些都是我一个人完成的。

    几点说明

    我的编程时间超过 30,000 小时。人们所说的精通时间的 3 倍是

    我看待事物的方式从未听别人解释过。我不知道这是否是独一无二的,但这就是原因。在我的脑海中,每件事都是一个复杂的因果关系网,细化到最微妙的层面。在我的脑海中,它甚至具有可视化的一面。你有原因(你可以转动的旋钮和转盘)来产生结果。

    冥想的一部分就是你可以更深入地了解一个想法(洞察力)。这个想法也适用于我上面所说的。人们忽略了因果关系的重要性。我告诉过很多人,他们都觉得很酷。在我看来,这句话就像站在最高的山峰旁边。它的规模和深度是深远的。之所以如此,是因为它意味着你可以直接控制自己的结果。你想要的任何东西,都是一个可以解决的难题。从字面上看就是这样。你对这个想法的洞察力越深,你的能力就越大。

    现在,我们来看看如何驾驭这种因果关系的实际过程。我的大脑是按照价值公式运作的。每一个决定、每一个单词、每一行代码、每一个微观决策,基本上都是一个取舍决策。不是从代码性能的角度,而是从这个因果网络的角度,从物理现实中的每一个行为的角度。我有卓越的能力,能将原因向外 “投射”,然后找到 “最终结果”,从根本上找到从 A 到 B 的最快路径。这个价值公式总是将结果最优化,而不是其他许多伟大的程序员所优化的东西,比如知识。我只是风格不同而已。因此,基本上我总是在分析每一个权衡,就好像我看到了现实的 “线”,从每一个决定和每一条路径中延伸出来。举个简单的例子,我可能会为了学习或构建一个算法,在 7 天内非常专注地学习线性代数和贝叶斯统计,但随后我就会发现回报率越来越低,于是我就会转而学习其他知识,因为我知道以后可以请别人来教我,弥补我的不足。

    这是一个极其简单的例子。在现实生活中,变量不是 2 个,而是 50 个。

    1. 感谢您的见解。在我看来,这个有趣的解释主要侧重于战术层面。在战略层面上:是什么驱动着您?也就是说,您运用上述思维过程的标准是什么?

      1. 我有两个极大的动力:1) 解决难题 2) 自由(以及金钱)

        首先,当一个难题出现在我的脑海中时,我想不解决它都难。我喜欢用简单、优雅的方式为复杂问题设计解决方案。我发现自己很难入睡、吃饭或做其他事情。

        就像我小时候意识到自己可能有能力在蹦床上做后空翻一样,当我有这个想法的那一刻,我就觉得恶心,躺在地上与恐惧搏斗,但这种恐惧折磨了我好几个小时,直到我站在蹦床上做了这个动作。我不知道那是什么,但同样的事情也适用于拼图,只是没有了恐惧。

        我还与金钱保持着友好的关系。我绝对喜欢它,因为它给了我自由。我可以随时醒来,专注于任何事情,做任何事情,旅行任何地方,学习任何东西,帮助任何人,等等等等。

        这两点加在一起,我认为就是 “成功 “的最佳组合(根据我的定义)

      2. 我还想到了一件非常重要的事情……我会把它写成对另一位评论者的回复。

    2. 你是把这些都记在脑子里,还是记录在任何地方?您花了多少时间(或多少百分比的时间)来制定战略?

      1. 我从来没有真正在网上写过,但我花了几十个小时在电话里向别人解释。

        我不会有意识地花时间去制定战略,就好像这是一件独立的事情。它全天候自动发生,我无法 “关闭”。

        这更像是戴上了能让你看到未来的魔法眼镜,就好像你能看到从你的决定向外延伸的彩色线条……你移动你的手,路径就会以不同的方式划出弧线,你就能看到一个决定如何影响未来的结果,有点像冷热游戏。

        当然实际上不是这样的,但这是个很好的比喻。这是我无法感知的东西,因此我的每一个行动都 “包含 “了这种价值公式计算/因果预测,这样我就不需要 “做 “任何事情。

    3. 超级有趣。您是如何为您的企业进行营销和寻找第一批客户的?

      1. 这就是我提到的另一位非技术人员的工作。我个人不喜欢这些东西。如果你是一个非常优秀的程序员,那就找一个营销人员,组成一个两人团队。

        总的来说,这个公式可以归结为他管理一个媒体购买团队。

        我们通常也不做从一开始就没有确定性的项目。例如,很多人只是建立 Saas 产品,然后等上好几年才有客户。

        我们通常会寻找一些切入点,要么是我们知道的一些有特权的情报,要么是一个人、一种关系、一个账户等。这永远不会是导致成功的原因,但它的 “确定性 “会给你带来更多的机会,而不是仅仅选择一个想法并用广告来敲打它。

    4. 您能否分享一个具体的实例,帮助我们这些普通人更好地理解这一过程?

      1. 如果你真的需要,我可以帮你,但让我告诉你一些(希望)更有用的东西。在我为朋友和熟人提供帮助的过程中,有一个想法让我反复思考。

        首先,我最近了解到很多人都做不到这一点……但我可以很容易地想象出一个巨大的未来结果,而对于其他人来说,他们会说:”这离我现在的处境太远了,想都不敢想。

        这不是 “如果我想象它,它就会出现 “的想象,而是 “想象自己在做三明治”。这种现实并不陌生,所以人们都能做到。你需要做的也是同样的事情,但要有任何大的结果。唯一不同的是,为了达到目的,可能需要转动更多的旋钮……仅此而已。

        在谈论这些东西时,我会有一种 “巨大 “的深刻感受。这种感觉每次都会出现,而且极难表达。就好像在我的视野中,某些语句对别人来说要强大得多,我能看到这种程度,但我总是无法解释,因为我说的话在我的脑海中被 “扁平化 “了,变成了只能用 “重要”、大写或提高声音来强调的对话,而这些只能表达 2 倍的重要性,而不是 10 万倍的重要性。我经常遇到这样的想法,这让我非常沮丧,因为我经常看到人们如何简单地蒸发掉自己的问题,但他们就是 “看不到”。即使我一遍又一遍地告诉他们,他们还是不明白。所以,我不知道我接下来说的这番话是否有意义,请把这想象成一件 1000000 倍的事情。通过我的文字读到 “无限的虚空 “之外,在黑暗中把握重要性。

        我想说,如果人们意识到从 A 到 B 的最短路径是一条直线,那么几乎所有的问题和梦想都是可以解决的,所有的事情都是可以解决的。在任何时候,只要你能想象出某种结果,你就有能力采取相应的行动来实现这一结果。就是这么简单。这就是为什么我在一开始提到冥想时会提到更深层次的洞察力,因为这句话本身并不深奥,但在实践中却是我所经历过的生命中最深奥的东西。所有的 “问题 “基本上都是自己造成的,除非是极端的医疗状况之类的。我之所以这么说,是因为归根结底,你有能力采取能产生结果的行动,而结果总是会回到这一点上。

        要解决这些问题,最简单的办法就是去做或不去做,然后把所有的副作用当作独立的、容易解决的问题来处理。所有碍事的东西都是你自己为了保护自己而制造出来的谬误。

        说起来容易做起来难,但就像冥想中的 “洞察力 “一样,对于同一个想法,你会一次又一次地学到更深的洞察力。每当你再次学习同样的见解时,你对它的领悟就会更深一层。你简直无所不能。如果你不能,那就剖析原因,然后倒推,因为你绝对可以。你所有的 “但是我…… “都很可能是编造出来的废话,其实很容易解决。

        我以前写过关于这个问题的文章,写得很清楚,但如果你想要的话,我可以给你更好的例子,但我要等我的头脑先清醒过来!

  12. 在我三十多岁的时候,有很大一部分时间都在接受自己不是那个人的现实,并努力在这个现实与我仍想在自己力所能及的范围内取得优异成绩之间取得平衡。

    除了这里已经贴出的答案外,我没有更好的答案,但我真的很想看看大家对此的回答。

    1. 你最好把它说成–我就像那个人一样,但我是根据自己的兴趣爱好来决定自己的尺度的。

      如果你不能生产世界上一半人都喜欢的东西,那就生产小一点的。

      如果你不能生产更小的,那就生产单行本。

      你必须想方设法制作出让你爱不释手的作品–哪怕是单行本的平面目录。

      实践就是一切。人们在这方面有问题,因为他们想在一天之内咬下一大块。与其说是爱上最终结果,不如说是爱上实践。

      ps. 专业建议–每当你解决了某个问题–一个你纠结了很久的问题,一个没有解决的错误或其他问题–停下来,回到过去,想象自己再次重演–问自己问题–现在知道答案了,我还能做什么/检查什么/问什么/什么,让我更快地找到解决方案?一开始我错过了什么?哪些是我明知不对却还是去做的死胡同等等。- 你只需要做几十次,就能看到自己的技能有实质性的提高。

    1. 法布里斯作品的质量和深度令人难以置信。

  13. 成功的动力。

    我是一个非常优秀的程序员,但并不那么积极主动。如果付出适当的努力,我有理由相信自己能开发出许多成功的应用程序。我只是不想把我的一生都花在这上面。相反,我是一个业余创作者、一个出色的厨师、一个陪伴孩子的父亲和一个乐于助人的丈夫。做完这些事情之后,我就没有多少时间再去做任何事情了。

    其他人想开发软件产品并从中赚钱,而那些有动力的人通常都会这么做。

    人生只有一次,请明智选择。

  14. 罗马不是一天建成的,也不是一个人建成的。在我看来,最好的程序员是那些能够围绕共同愿景建立社区的程序员。从这个标准来看,安德烈亚斯-克林(Andreas Kling)在宁静项目中的表现令人赞叹。虽然他确实是一名优秀的程序员,但我相信这个项目之所以能够成功,是因为他的情商和大局观。太多优秀的程序员都缺乏这方面的能力。

    你可以成为一名出色的程序员,但要想单枪匹马地开发出像 “宁静 “这样的项目,希望渺茫。

    1. 因为好奇 “为什么”,我搜索了一下,找到了这个[0],听起来与 OP 示例没什么不同。

      > 为什么要创建宁静OS?

      > 当我问克林为什么决定从头开始写一个操作系统时,他有两个答案。第一个答案很实际,那就是他想为自己编写一个日常驱动的操作系统。他欢迎其他用户和开发者的加入,但起初他们大多是来凑热闹的。

      > 第二个答案是,SerenityOS 最初是一个个人治疗项目。克林是一个正在戒毒的瘾君子,他决定建立一个操作系统,作为一个长期项目,以集中精力和占用时间,就像其他人决定建造汽车或房子一样。

      > 虽然克林仍然认为 SerenityOS 是他最终的日常驱动程序,但他已经把 “为谁而做 “的范围从 “我 “扩大到了 “我们”–“我们 “包括所有出现、喜欢这个项目并决定参与其中的人。

      [0] https://arstechnica.com/gadgets/2021/08/not-a-linux-distro-r

  15. 保持专注绝对是关键所在。我也经常编程,也开发开放源代码的东西,但在没有公司/员工推动功能的情况下开发软件真的很难。当我为母亲开发产品时,我也更加专注。而且我的 Steam 游戏库中有大量游戏,这就更难了。更不用说我还需要关注多个蒸汽服务的列表……

      1. 对不起,应该是流媒体服务。不知为何,编辑功能在这款应用上不起作用。

  16. 喜欢编程,工作之余有时间。当它成为一种激情时,一切都会变得容易得多。

    问题是,大多数开发人员都将编程视为朝九晚五的工作,除此之外,他们只有很少的空闲时间,他们还有其他的追求和爱好。

    当你看到其他有时间并将编程视为艺术(Vs 工作)的程序员所取得的成就时,他们的工作效率自然会更高。

    1. 这里的 “问题 “也许不是一个理想的用词。把编程当作一项工作,并在闲暇时间做一些工作之外的事情,这本身并没有什么错,就像我们不一定都要成为出色的业余木雕师或诗人一样。

      1. 也许用词不当,但在有限的工作技能之外,如果没有对技艺的执着追求,你就不能真正指望拓展自己的技能。

        我在评估时经常被问到 “给你开发新技能的能力打 10 分”,每次我都打 6 分,因为我没有学到任何新东西。我在工作之外学习新技能,是因为我的公司不重视与工作无关的技能。

        ML 和 LLMs 就是我在 2022 年学习的技能之一,当我试图开始对话并向部门提供演示时,其他人都不感兴趣。到了 2023 年底,它成了一项热门技能,让我获得了大幅加薪,现在我显然成了专家。

        目前,我正在学习新的系统架构(如 dbos.dev)和新的编程语言(ts、rust、haxe),这同样没有价值,因为我们已经有了一个勉强可扩展但稳定的旧系统架构,而且我们是一家只使用 Java 的公司,因为这是其他员工唯一知道或想知道的技能。

        这本身有错吗?不是,有问题吗?这取决于你的观点。

  17. 我有点放弃仰望那些人了。这可能只是我的借口,但我相信有些人能够将勤奋、智慧、坚持和运气完美地结合在一起,取得成功。

    在我看来,你越是向那些人看齐,你自己就越痛苦。你无法 “学习 “这些人的天赋。

    不做就是了。甚至不要去读那些人的故事–反正普通程序员也不了解他们。先找到一些快乐吧。

    也许可以屏蔽 HN。我为什么会在这里?

  18. 做你热衷的事,尽管困难重重,尽管别人对你的技术水平有看法。你的技能将在各个方面大放异彩!

  19. OpenTDD 太棒了。我小时候玩过原版游戏。作为一个 35 岁的成年人,我发现了 OpenTDD,我可以说我喜欢它的多人游戏吗?

  20. Ludde 确实是个明星,也是个大好人,但由于他的残疾(他坐着轮椅),他也将自己的一生奉献给了编程事业。如果你可以通过编码来分散注意力,那么如果你日复一日地付出努力,你也可能会创造出很多东西。

  21. 你凭什么说这些都是斯腾伯格的作品?

    莫非这些只是以某种方式使用 libcurl 的项目?

    我很难找到任何资料表明丹尼尔-斯滕伯格确实直接参与了 spotify、utorrent 或 openttd 的开发,我只是想测试其中的三个项目。

    1. > 我在研究丹尼尔-斯滕贝格(Daniel Stenberg)时偶然发现了路德维格-斯特里格斯(Ludvig Strigeus)。

      我相信名单上的人都是路德维格。

    2. 再看一遍帖子。

      这些是 Ludvig Strigeus 的项目。

  22. 做你热衷的事,尽管困难重重或别人怎么看你。无论别人是否看到你的技能,他们都会认可你的技能。保持饥渴,保持谦逊!

  23. “秘诀 “是花很长的连续时间深入到解决方案的架构中,因为你花在这种工作上的时间会像利息一样产生复利。

  24. 没有 996 工作

    没有无薪值班,多年来被迫在周五晚上醒来 3 次

    有足够的积蓄和合法居留身份,能够承担风险

    多年来不为没有辞职选择的义务兵役代班工作

    不会被政府在光天化日之下绑架,送到战壕里送死

    1. 数以百万计的人正处于这种境地,其中大多数人都不是出色的程序员。

      但有一个轶事,法布里斯-贝拉德(Fabrice Bellard)是最著名的杰出程序员之一(请点击 https://bellard.org/ ),他毕业于法国最好(甚至是最棒)的理工学院(Ecole Polytechnique)。这所学校是一所军校,首先要进行为期 3 周的士兵式训练。这所学校也是由国家资助的,学生是有工资的,而不是相反。与此相对应的是,毕业生要为国家工作 10 年,通常是担任高级公务员,不过你可以通过付费来 “逃避”。

      1. 我想我的意思是,我们没有数以百万计的优秀程序员,原因就在于此。

        那所Ecole学校看起来还不错。我指的是在政府分配的合同中几乎免费工作的普遍做法,这种情况在韩国和独联体国家时有发生。而这些地方与法国名校相去甚远。

        很多人被糟糕的工作和政府拖累,无法完全成长为杰出的程序员,也无法做出好的项目。

        尽管如此,这些人仍然可以做一些事情,尽管机会很少,但还是可以提高他们的胜算,比如,有时间生存下来,做出一些好东西。

        举几个例子

        https://en.wikipedia.org/wiki/George_Kistiakowsky

        俄罗斯人,在第一次世界大战俄国革命期间参加反共白军,战斗两年,负伤后逃到土耳其,进入美国,成为哈佛大学化学教授,二战中成为制造原子弹团队的重要成员。根据罗斯福的要求,他率领美国代表团前往苏联进行军事科学交流。第一颗原子弹爆炸时,他不在掩体里,而是在外面 “看 “得更清楚。二战结束后,他担任美国总统的科学顾问。

        https://en.wikipedia.org/wiki/Alexander_M._Poniatoff

        一个不知道从哪儿冒出来的俄罗斯人在冻原的寒冷旅途中听说了一个美丽的地方,那里天气总是很好,而且有很多机会–旧金山。于是他决定搬到那里。他到了上海。1927 年,他搬到了旧金山,并于 1944 年创建了 AMPEX 公司,生产录音设备 – 他名字的首字母加 “x “代表 “卓越”。这家公司后来创建了 VR-1000 录像机。

  25. > 秘诀是什么?

    可能就是时间。如果我们假设这一切的时间框架是 30 年,这意味着他大约每 3 年完成一个项目。在我看来,这并不特别。问题是,他在此期间还做了什么。为了评估他的工作效率,我们需要知道他在这些项目上到底花了多少时间。

  26. 冯-诺依曼 8 岁时就会做微积分了。

  27. 什么是杰出的程序员?答案有两种,取决于你问的是谁。

    有的人能以更高的性能和耐久性构建出雄心勃勃的东西,同时花费的精力相对较少。还有一种是有影响力的人。

    后一类人通常会得到 80% 的关注,因为如果自己不是专家,就很难辨别专业知识。所以,如果你想成为一名更好的程序员,就忘掉这一切吧。

    如何成为专家(这里的许多评论已经提到了这一点)?

    – 了解你的编译目标

    – 了解当前项目的目标

    – 编写代码

    – 提供迭代改进

    大多数人失败的原因是缺乏耐心,比如直接跳到最终状态,很可能是通过对之前已有的解决方案进行剥皮。这样做很糟糕,因为你什么也没学到,发布的解决方案中所有东西都无法扩展。

发表回复

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