原文链接:https://dev.jimgrey.net/2024/07/03/lessons-learned-in-35-years-of-making-software/
今年 7 月,是我在软件行业工作的第 35 个年头了。
除了其中 18 个月在编辑技术书籍外,其余时间我一直都在软件开发团队工作:在那 18 个月的时间里,我发现编辑工作并不适合我,于是迅速回归了软件行业的怀抱。

在过去的 35 年里,我收获了一些宝贵经验。当然,每个人的学习速度和时间都不尽相同,或许下面这些体会你早已领悟,但我还是想要将其分享出来。
尽量用最直接的方法做事
开发者很容易陷入追求巧妙解决方案的陷阱,或因预见未来而过度构建某些应用功能。我想要告诉你:别这么做,日后当你需要维护这些复杂系统时,你绝对会后悔的。尽量以最简单、最快速的方式构建你的产品,后续可以随着需求的变化再逐步改进。
生产中的工作软件无可替代
现在回想起来,我曾参与过为期 18 个月才发布的项目,那还是在早期的瀑布式开发时代。但即便在那个时候,我们也可以频繁地发布新版本。我们构建的软件是有价值的,它能为公司创造价值。如果你想等软件尽善尽美,或你认为它已具备所有必要功能时才发布,那你就错过了为公司增值的机会。找到最快、最短的路径,将最小的可用增量产品交付到客户手中,然后再不断迭代优化。
如果想要晋升,人际关系很重要
直到大约十年前,我才开始明白,无论在哪家公司工作,建立广泛的人际关系对于我的晋升以及在困难时期保持就业是多么关键。我发现,无论是否是自己职责范围内的事情,只要你坚持不懈地帮助他人,你就会成为团队中每个人都想拥有的成员。当你争取晋升时,公司各个部门的人都会认为你很棒,这会让你的晋升之路更加顺畅。
如果想要实现自己的愿景,人际关系同样重要
你可能对产品和其构建方式有着最完美的构想,也可能看到了一些不理想的地方,并知道如何修复它。但是,如果你没有与有权帮助你的人建立良好关系,那么实现愿景的道路就像是 90 度的上坡路。即使你在团队中处于最底层,也要努力与关键领导者建立关系。
绝不要成为隐形人
当我还是一名软件测试员时,我整天只会默默地工作然后回家。在这里容许我自吹一下:我能快速并准确找出最关键的错误,没人比得上我——但关键是,领导层中没人知道这一点。当我想晋升时,我便很难证明我的能力水平。所以,你需要确保你的工作能被领导看见,这样领导才能了解你的能力。
建立并维护一个跨越你目前所在公司之外、属于你自己的人脉网络
在写这篇文章的时候,我意识到自从疫情以来,我便忽略了维护我的人脉网络,现在我需要重新建立它。我的人脉网络曾多次在我意外失业时拯救了我,如果不是通过我的人脉网络,我也不会在现在的公司。大约十年前,我认识了一位同行,我们曾一起喝咖啡聊天,并约定每季度聚一次。这个习惯保持了很多年,不过后来因各自生活的变化,这个约定逐渐被淡忘了。然而,他与公司 CTO 有联系,当时这位 CTO 正在考虑如何建立质量保证(QA)团队和测试流程。于是我的这位朋友将我介绍给了他,我给 CTO 提供了一些免费建议,他也采用了。他觉得我能力不错,所以后来当他的工程总监离职去创业时,他主动打电话给我,问我是否对这个职位感兴趣。
保持积极主动的态度
在我的职业生涯中,其实有很多事情我一开始并不知道怎么做,但当老板要求我去做时,我都会说我会想办法解决。这样做有两方面的好处:首先,老板喜欢那些能接受任务并会自己弄清楚的人;其次,通过这个过程你学会了如何做这件事,且将来能够再次胜任,也就是说你提升了自己的技能。在我目前的公司里,CTO 经常要求我做一些我不知道如何做的事情,我只是说好,然后着手去解决。当然,公司里肯定有人熟悉这些事情、可以做得更快更好,但我最终也做到了——我们在学习新技能时,都需要从零开始。
追求挑战和兴趣,而非薪水和职位
我知道,这一点可能对某些人来说是有争议的,对于他们来说薪水和职位至关重要。但在这个行业中,即使是入门级的薪水也已经很高了。我的职业生涯经历了很多变化,从技术写作到质量保证(QA)再到工程。正如上一点所说,我接受并追求过许多听起来很有挑战性的事情,过程很有趣,完成之后钱和职位也随之而来。当然,如果我直接追求钱和职位,可能会更快得到它们,但我收获的是一个充满乐趣的职业生涯以及大量的个人职业成长。这些年来,我也后悔过一些选择,但在这个行业中仍有很多机会可以让你从失败中走过来。
挑战自我,适度逼自己一把
在瀑布式开发的时代,我很喜欢独自承担一个大任务,然后独自工作几周。坦白说,我现在依然喜欢这样。那段日子总是很舒服——来办公室,喝杯咖啡,戴上耳机,整天埋头于任务中。但我没意识到的是,我远离了所有人的视线。我不是一个竞争性很强的人,我更希望大家能和睦相处,共同努力。但不幸的是,有时候为了保住工作,你必须具备一定的竞争力。我必须学会如何始终展示自己的价值,以便人们产生这样的想法:“我们不能让 XX 离开,他完成了很多出色的工作。”
理解不同阶层对世界运作的不同看法
我出身于工人阶级,在蓝领家庭长大,工作在一个白领行业。因为我的背景,我认为只要努力工作、做出好成绩,就能获得晋升。我父亲就是这样,他从工厂车间一路晋升到质量控制、质量经理,最后成为厂长。但在白领世界里,人际关系和权力远比工作本身更重要。我还在努力接受这个事实,也仍希望一切都能以工作成果为评判标准,但直到我开始建立人际关系和权力网络,我才能够晋升到总监级别。如果我想晋升到副总裁级别,那我还有更多的工作要做。
当你交付了一项引以为傲的工作时,你很可能已经做得太多且花费太长时间
我多少有点完美主义倾向,希望能把工作做得既好又彻底。而我花了很长时间才意识到,我这样做更多是为了自己,而不是为了公司。当我达到 60-80% 的完成度时,可能就已经够了。
我们现在构建的软件,总有一天会被淘汰
我已经记不清我交付的所有软件中有多少已经不再运行了。有些是因为我的职业生涯长达 35 年,但也有些 5-10 年前开发的一些软件,现在也不运行了。所以,去构建一个小而快、不用太完美的软件就够了,之后再根据需要优化即可。任何超出这个范围的工作,都属于过度开发,毕竟这些软件无论如何都不会永远运行下去。
大模型刷新一切,让我们有着诸多的迷茫,AI 这股热潮究竟会推着我们走向何方?面对时不时一夜变天,焦虑感油然而生,开发者怎么能够更快、更系统地拥抱大模型?《新程序员 007》以「大模型时代,开发者的成长指南」为核心,希望拨开层层迷雾,让开发者定下心地看到及拥抱未来。
读过本书的开发者这样感慨道:“让我惊喜的是,中国还有这种高质量、贴近开发者的杂志,我感到非常激动。最吸引我的是里面有很多人对 AI 的看法和经验和一些采访的内容,这些内容既真实又有价值。”