做了四年 Software Engineer 以后,我对工作的看法发生了什么变化
刚毕业时,我以为优秀的工程师是写出最精妙算法和架构的人。四年后,在大模型普及的当下,我意识到代码只是最廉价的副产物,核心是对真实问题的敬畏与端到端交付的掌控力。
刚从大学毕业加入科技公司做软件工程师(SWE)的第一年,我浑身充满了一种“工匠式傲慢”:
- 沉迷于学习复杂的分布式系统设计模式;
- 热衷于争论某种微服务框架比单体架构优越多少;
- 觉得把一个冷门的算法优化几十毫秒、写出极其抽象优雅的代码才是工程师的核心价值。
转眼工作四年,历经数次大型产品上线、踩过生产环境半夜宕机的深坑、目睹过许多费时半年构建的系统被悄悄废弃,尤其是经历了大模型(LLM)颠覆软件开发流程的这几年,我对“软件工程与工作本质”的理解发生了 180 度的转向。
1. 最好的代码往往是没有写出的代码
新手工程师倾向于用“写了多少行代码”、“抽象了多少个类”来衡量产出。
但随着系统规模的膨胀,你会痛苦地发现:每一行进入代码库的代码,都是未来的负债(Technical Debt)。
- 每一行代码都需要持续维护、测试、修复 bug、升级依赖;
- 复杂的抽象在业务需求变更面前往往脆弱不堪。
四年后,我最引以为傲的工程时刻,往往不是设计了一个多么繁复的通用框架,而是:
- 敏锐地指出产品经理的一个伪需求,直接砍掉了 80% 的工作量;
- 用一个极其简单的 Bash 脚本或现成开源组件解决了原本计划需要两个 sprint 开发的系统;
- 删除了数千行无人使用的僵尸代码,让部署速度提升了一倍。
软件工程师的终极目标不是写代码,而是解决商业问题。代码只是达成解决方案时碰巧最常用的一种手段。
2. 从“局部最优”走向“端到端全链路闭环”
在大型科技公司里,最容易滋生的一种职业病叫“螺丝钉倦怠”:
你只负责某一个微服务接口的返回字段,或者只维护某个后台组件,根本不知道上游的用户到底在抱怨什么,也不关心下游的商业化数据是否及格。
这种高度割裂的劳动分工会彻底抹杀创造力的乐趣。
后来的两年里,我开始逼迫自己往两端走:
- 向上走:去理解产品决策背后的商业逻辑和用户心理。为什么用户不愿意为这个功能点击?背后的真实痛点到底是什么?
- 向下走:深入生产环境监控(Observability)、基础设施部署成本和可靠性工程(SRE)。
当你具备了“从最初用户痛点发现,到架构设计,再到编码测试、生产监控、数据迭代”的端到端能力时,你会发现编程重新变成了一件极具掌控感和成就感的事情。这也是为什么我后来开始倾注大量精力做 Side Projects 和个人独立产品。
3. 大模型时代:从“打字机”走向“总架构师与审美裁决者”
如果说两年前很多人还在争论 AI 是否会取代程序员,那么今天这个问题的答案已经越来越明朗:
AI 正在快速消灭单纯的“语法打字员”,但极大放大了那些具备清晰思考和架构判断能力的复合型工程师。
在过去:
- 你需要花费 70% 的时间在记忆语法、查找 API 文档、写样板代码(Boilerplate)、调 CSS 居中上;
- 只有 30% 的时间在思考问题定义和系统边界。
在今天:
- AI 可以在几十秒内生成完整的原型和功能实现;
- 你的核心角色变成了总指挥、架构师和品味裁决者:
- 你是否能清晰、无歧义地界定系统边界?
- 你是否能一眼识别出 AI 生成代码里的并发竞态条件(Race Condition)和安全漏洞?
- 你是否拥有对产品交互体验的极高审美标准?
拥有好的品味(Taste)和系统直觉,变得比熟练背诵 API 昂贵得多。
结语:不仅做个工匠,更要做个创造者
四年时间,让我从一个执着于工具形态的程序员,蜕变成一个对真实世界问题更加好奇的创造者。
工作和代码不是人生的目的,它们只是我们探索世界、创造价值、沉淀认知的磨刀石。保持好奇,持续进化,无论技术浪潮如何更迭,你所积累的判断力都将历久弥新。