Meta高级工程师现身说法:程序员干得越久,代码写得越少?

2023-06-01 00:00:00 程序员 现身说法 写得

初级开发人员的发展历程

我是一名初级开发人员,职业发展的道路才刚刚起步。每天,我都会坐在办公桌前编写代码,每个月我都会编写数千行代码。

我可以出色地完成自己的工作,并与队友之间建立了信任。随着时间的推移,我开始收到邀请,参加各种项目会议。此外,经理要求我承担起更广泛的职责,处理更模糊的问题。

我的工作内容逐渐发生了转变。分配给我的任务没有明确的定义,也没有严格的范围,而且我还需要编写概述问题领域以及备选解决方案的设计文档。渐渐地,我花在编写代码上的时间从 90% 减少到 80%,再到 70%。我的工作不再仅限于纯编程。

与此同时,我的专业知识不断增长,需要同时兼顾多个项目,并更多地参与项目的设计。虽然个人能力在不断提升,但手头积压的工作越来越多。经理见状,指派了另一位队友来帮忙,但我需要提前完成所有的设计和计划。于是,我日赶夜赶,为队友编写了一大堆需要完成的任务。

编程的工作怎么办?

虽然我仍然喜欢写代码,但我发现自己打开 VSCode 的时间越来越少,而投入到文档中的时间越来越多了。姑且不论好坏,相信许多像我这样的程序员都会经历类似的发展。我的个人绩效不再以代码行数来衡量,而是更多地取决于管理大型项目、对团队技术方向的影响以及指导他人的能力。

即使我继续坚守在开发人员的岗位上,并避免接触管理的工作,也不太可能将 90% 的时间用于编写代码。随着肩上的责任越来越重,我需要与团队成员、利益相关者以及跨职能合作伙伴打交道,并促进我们之间的协作。毕竟没有人能够独自完成整个软件开发周期内的所有工作。

我该怎么办?

随着在工作中承担的责任越来越大,我有两个选择:顺时应势,平步青云或回到舒适的办公桌继续敲代码。这两种选择并没有对错之分,在我看来,当你准备好时,就会知道哪种选择最适合自己。在过去的一年里,我一直在努力在二者之间抉择。

个人的发展经历

2022 年的第一个工作日,我加入了 Meta 的一个新团队。我向经理说明我的目标是发展专业领域(用户体验)之外的技能。我想更深入地研究后端,让自己成为一名T型人才。不可否认,我也想努力提高自己的技术水平,让自己更加自信。

加入新团队六个月后,经理分配给我一个非常关键的后端项目,而且必须在年底之前交付。然而,一个关键的模拟出了问题,接着混乱接踵而至,我的团队在接下来的两个月里一直在调试端到端的依赖关系。我花了一整天时间学习 C++,只是为了在另一个团队的代码库中提交拉取请求。

然后,在调试项目的时候,合作伙伴团队提交了一个优先级非常高的任务票,针对的就是我们的 UI。我维护的一个功能因内存不足的错误而崩溃。随着这两个项目都止步不前,我陷入了极大的困境。

为了解决他们提交的任务票,我向技术主管和经理解释说,过去几周我一直在慢慢优化 UI 查询。虽然我很清楚需要完成的工作,但奈何我根本没有时间。

经理鼓励我带头努力解决一些比较容易解决的 UI 性能问题。但是,我拒绝了。我想集中精力做好后端项目。尽管这个后端项目在时间上还有一些余量,但我担心,多担负一份责任,风险也会多一分。我害怕一旦失败,大家就会认为我“只是”一个用户体验开发人员。

经理要求我重新考虑主导新的 UI 工作时,我又一次拒绝了。我已经非常了解UI了,我想提升自己的技术水平。这意味着,他们会选择一个新员工来完成这项既有机会表现自己又能轻松获胜的工作。

那天,我选择回到办公桌前继续写代码。我有理由拒绝背负更多责任,一部分是出于恐惧,还有一部分是不了解经理对我的期望。

换句话说,我可以用通俗易懂的语言描述大多数 UI 性能的问题、根本原因和解决方案。我已经向他们展示了一种模式。所以,我想让其他队友来完成这项工作。

几个月后,我意识到经理只是希望我证明自己的专业领域,并不是让我动手修复问题。我本可以写一些任务,分给其他人,并在内部发布有关 UI 工作进展的信息。

经理知道我的职业发展目标是拓宽技术广度。他希望我能撰写一份文档,详细描述 UI 的性能问题。虽然我的时间本来就不够用,而且主导 UI 性能的修复工作会占据几周的时间,但这些工作兴许能给已陷入困境的后端项目带来积极的影响。

如今回想起来,我终于明白了一切。如果重来一次,我一定会抓住这次晋升的机会,承担起修复 UI 性能的工作。但在当时,我确实觉得忙不过来。我承认,学会在正确的时间说“不”是一项需要练习的重要技能。

在我做出有些令人失望的决定几个月后,一名新毕业的大学生加入了我的团队。经理要求我帮助她尽快熟悉环境开始工作,这样我就可以将部分工作分配给她,同时让自己得到喘息的机会。因此,我对后端项目更有信心了。出于自我反省和成长的心态,我接受了新的挑战,并开始给新员工分配任务,而且我还设计了一个迁移资产的项目让她完成。

后来,后端项目按时交付,2023 年我将主导一个更大的后端项目,对此我充满了期待。这一次,有两个下属在我的指导下工作。我将再一次跳出舒适圈,接受挑战。但是,我已学会接受挑战是职业发展不可避免的一部分。

软件开发人员不需要编写代码的原因

软件开发人员的工作不仅限于编写代码。即使是初级开发人员也需要参加会议,并承担编程之外的工作。随着级别升高,编程之外的工作将不断增加。除了参加会议之外,下列工作也是职责的一部分。

编写或更新文档

这些工作随时随地可能发生,而且永无止境。新员工入职期间需要阅读这些文档,以迅速补充基础知识,并熟悉当前的工作环境。

编写设计文档

随着工作范围的扩大、复杂性增加、需要处理的问题更加模糊,你需要编写设计方案。你需要收集需求,进行一些分析或研究,并与利益相关者和同事分享你的发现。

初级开发人员:不要省略这一步骤。虽然我们都迫不及待想要深入钻研代码,但有时我们需要放慢脚步。换句话说,“多做几周的编程可以节省你做计划的时间。”

承担多种职责

软件工程团队经常缺少一些跨职能支持,例如项目经理、产品设计师等。因此,你需要承担起相邻角色的职责,例如项目管理,设定截止日期并履行与监督相关的其他职责。

例如,Meta 拥有“自下而上”的工程文化,这意味着开发人员必须自行决定完成哪些实际工作。换言之,我们就是自己的项目经理。因此,我将工作笔记、之前的探索性工作和目标整合到 2023 年即将开展的新项目计划中。

指导团队中的其他开发人员

随着经验的增加,你需要承担起指导新员工或初级开发人员的工作。担任导师可以提高个人的沟通技巧,也为今后的晋升铺平道路。

为了成为一名有思想的软件工程导师,在此我将分享以下几点建议:

  • 分享实现:让新员工或初级开发人员有机会在你的指导下学习。刚开始的时候,创建定义清晰、范围明确的任务,尽量减少歧义,随着时间的推移逐步增加难度。

  • 鼓励:新员工或初级开发人员无法完全按照你的方式编写代码。多包容,同时坚持遵守团队风格指南和其他标准。在审查他们的代码时,提供积极和建设性的反馈。

  • 定期会面:根据需要,每周或每两周会面一次,进行15~30分钟的交谈。记下他们面临的难题,并根据需要将其上报给经理或技术主管。

总结

最近,由于 ChatGPT 炒得火热,不少人开始怀疑程序员是否以及何时会被 AI 取代。实际上,开发人员的职业发展本来就不仅限于写代码,随着升任新级别,我们离写代码越来越远,而离更多的会议室越来越近。

因此,如今的软件开发人员真正写代码的时间只有几年。这种工作职责的转变可能会让一些人怀念旧时光,但这就是软件开发职业生涯发展的自然规律,我们都要让位于年轻一代的开发人员。

随着在工作中承担的责任越来越多,我不仅需要指导他人,而且还要自信而又清晰地描述实现的细节。我面临着新的挑战,而且应对方式也不同。

进步从来都不是线性的,但以成长的心态不断努力,终有一天你将完成这种“高级转变”。

写在最后

对此,不少网友也表示认可:

  • 这也不足为奇,软件开发人员的职业发展本来就是两条路:坚持写代码或转型管理。我选择成为一名自由软件开发人员已经 25 年多了,我见过很多开发人员都在这个问题上纠结,而我个人选择自由职业就是为了坚持写代码。所以,如果你对编程充满热情,我鼓励你坚定地选择这条路。

  • 我认为,软件开发人员的工作方式肯定会改变,而另一方面ChatGPT 是一种工具,只是简单地从网上复制粘贴答案,可软件开发不仅仅是写代码,而且写代码也不仅仅是输入一组语法块来构建程序。

    对我来说,软件开发周期包括从设计到实现,再到测试、交付以及维护等等,而将设计变成代码只是其中很小的一部分。根据我对人工智能技术的了解,它可能永远不会真正取代开发人员。虽然在普通人眼中 AI 似乎非常强大,但在开发人员看来,当前的 AI 只不过是非常复杂的统计模型,可以访问庞大的数据基础,实际上它们更像是非常复杂的搜索引擎,可以在 80% 以上的时间内产生良好且相对准确的结果。

    ChatGPT 并不是真正的技术革命,它只是过去 10 年(甚至更长时间)里机器学习领域的技术集大成者。我认为 ChatGPT 取代程序员只不过是炒作的噱头,骗骗外行罢了。

  • 本人从事编程已经 45 年了,现任一家小型初创公司的 CTO。

    一直以来,我非常重视设计,我会花很多时间在设计上,还有很多时间在编程以及设计以外的工作上。

    但我仍然会花大量时间编写代码。对我来说,亲自动手编写基本的 API 以及其他代码,比让别人来做要快得多,而且最终呈现的结果也更好。

    我永远不会接受一份不让我写代码的工作,因看着一个很简单的功能,别人需要花几天的时间才能慢吞吞地写出来,而我自己动手只需要几个小时,这会很无聊,而且很折磨人。

    我记得有一次,我和四位经理坐在一起开会,他们喋喋不休地讨论如何提高团队的产出,只有我一直在工作。最后,我说了一句:“公司里多一个像我这样的人,或者少一个像你们这样的人,我们的问题就迎刃而解了。”所有人都笑了……

相关文章