当软件工程师的"疯狂"
本文是 《The Insanity of Being a Software Engineer》 的中文翻译,原文作者为 Vitor Sousa Pereira,发表于 2025 年 4 月 6 日。
这是我经常思考的一件事,因为我总忍不住好奇:其他大多数工作是不是也这样。
当一名软件工程师很难。从一开始,你就得掌握好几门编程语言和工具。但光这样还远远不够。公司期望你会用他们所用的那个特定框架——可能是 Rails、Django、Laravel 或者别的什么。你还得会 CSS。学 CSS 可能要花一辈子——即便如此你依然搞不清布局为什么崩——但只要学到够用、能凑合过去,还是可行的。
你几乎不可能完全不碰 JavaScript。也许你运气好,只需要在维护的遗留应用里偶尔撒一点 jQuery 就够了。但事情是会变的。
某个时候,Facebook 的工程师造出了 React。结果发现,这家雇了几万名工程师的公司,其实从一开始就有着两大分工:前端和后端。程序员这个”群体心智”集体认定,React 现在才是构建软件的正确方式;与此同时,公司又决定雇不起更多工程师了。瞧,全栈工程师就这么诞生了,而你就是那个人。赶紧去学 React,还要在你已经会了的后端技术之上搭 REST API。
事情不会到此为止。你知道你需要类型,对吧?加个 TypeScript。你还真打算像个普通人那样用 React 管理状态?加个 Redux。你要是躲过了这两个、觉得自己挺聪明?那祝你好运——去搞明白怎么配置 webpack/esbuild/rollup,再加 Prettier,再加 ESLint。
“好吧,“你说。“但我可以继续用我一直以来的方式做事。它一直好用。我不需要 React。“你当然可以。你绝对可以在你那家发展迅速、疯狂烧钱的创业公司里,偏离整个行业的标准做法。只要告诉你的老板,你愿意去教那些只听说过 React 的新人们,感受服务端渲染的乐趣就行。
哦对了,其实这才刚刚开始。
在恐龙还在地球上漫步的年代,有一种职业叫系统管理员(System Administrator)。他们的全部工作就是确保你的后端运行良好。他们负责处理基础设施变更、升级数据库、升级系统、让守护进程一直跑着、重启,什么都是他们。然后 DevOps 来了。某家资金紧张的公司决定,现在这一切都由工程师自己来搞,而所有人都接受了。现在你得学 Docker。哦,你的整个应用只是一个静态链接的二进制文件,不需要 Docker?那去学 Ansible 吧,希望你能搞明白需要传给 SystemD 的那些选项。
而这连一半都还没到。现在你得学 AWS。你不会像个土包子一样用 GUI 来配置你的基础设施,所以你最好去学 Terraform 或者 Pulumi 或者别的什么。
你干得不错,升职成了经理。你又要学一份全新的工作。不过这没关系,因为这是终局之战,是极乐。下面是你需要做的几件事:
- 凭感觉估算截止日期
- 给队友分配任务
- 把任务写成规格
- 参加年度绩效评审
- 在产品会议中提供有价值的反馈
你最好祈祷你的公司到那时员工数量已经翻了四倍,否则你就是在做管理的同时,还得干上面所有这些活儿。
而且事情总是可以更糟。前几天,一个猎头联系我,说有一家保密公司在招工程师。他们要求候选人在 Rails、Hotwire,以及——简直难以置信——原生移动开发这几个方向都要有资深水平。为什么不再顺手把内核和编译器开发也加进去呢?
软件变得越来越复杂。所有这些复杂性都是有原因的。但专业化到底去哪儿了?盖一栋房子的时候,会有很多人参与其中:建筑师、土木工程师、水管工、电工、砌砖工、室内设计师、屋面工、测量员、铺路工,你能想到的都有。你根本不会指望单独一个人,甚至一整家公司,就能包办所有这些。
也许,一个我们能用几句提示词就搭出整个应用的世界,其实没那么糟。