在这个行业干了14年后,我仍然觉得编程很难
即使有了几十年经验,许多开发者仍然说编程在精神上依旧很耗神——这并不是因为语法或算法,而是因为系统复杂度不断上升、需求持续变化,以及需要不断学习新的工具和领域。评论者明确区分了“写代码”和“软件工程整体”:前者往往确实会变得更容易,而后者则包括对模糊问题领域的建模、与脆弱系统集成,以及应对办公室政治和流程开销。观点从那些仍然觉得这门手艺本身有趣且有回报的人,到那些感觉越来越倦怠的人不等,但大多数人都同意,真正的难点在于管理复杂性和与他人有效协作,而不是敲代码本身。
编程是“难”还是“容易”?
- 很多人都同意,即使过了几十年,编程在精神上仍然很耗神;难度会转移,但不会消失。
- 也有人说,写代码本身其实很容易,或者很有乐趣;真正难的是代码之外的一切(系统、人员、流程)。
- 还有人表示,如今之所以感觉更难,是因为他们看到的失败模式和复杂性,比刚入行时更多。
- 也有少数人认为,如果你天生适合,和/或只待在熟悉的问题领域里,这件事大体上是容易的。
真正让它变难的原因
- 管理复杂性:大型代码库、深层抽象层、分布式系统、内核、状态机、关键任务领域。
- 需求不佳或不断变化、问题领域模糊,以及后来发现自己在做错的东西。
- 与不稳定或设计糟糕的 API 以及遗留系统集成。
- 理解并安全地修改老旧、没有文档,或“热路径”上的代码路径。
职业发展与挑战程度
- 随着经验增长,工作往往会转向更棘手、定义更少、影响更大的问题。
- 有些人拥抱这种持续的挑战;另一些人则提醒,追求类似“LeMond-style”的持续高难度会导致倦怠,需要把节奏安排好。
- 一个反复出现的主题是:你可以,也应该,偶尔选择处于“zone 2”的工作,让事情保持舒适地容易。
工具、语言与现代技术栈
- 工具和语言变得更具表现力,也更适合初学者,但整体技术栈却感觉更臃肿、更脆弱。
- 环境搭建、缓慢或不稳定的构建/测试,以及复杂的部署流水线,被认为是主要痛点。
- 框架、移动端 API 和 AI 工具的快速更迭,让很多人觉得“跟上节奏”很累。
组织与“软”因素
- 办公室政治、管理层更替、会议负担、流程开销(JIRA、OKRs、TPS reports)以及失调的架构,往往主导了难度。
- “软技能”(常被改称为“职业技能”)——沟通、需求挖掘、干系人管理——被描述为至关重要且来之不易。
- 大团队协作、频繁切换上下文,以及指导能力较弱的工程师,也一再被提到很消耗精力。
质量、正确性与“好代码”
- 好代码被描述为:未来读者和作者本人都能看懂、尽量贴近问题领域,并且正确。
- 很多人强调正确性长期被低估;我们已经把带有潜在缺陷的系统上线正常化了。
- 代码质量很大程度上受不断变化的需求和组织历史影响,而不仅仅是技术选择。
AI 的作用
- 有些人认为 AI 只会对他们的日常工作带来很小影响;代码只是工作中的一小部分。
- 也有人设想让 AI 处理会议或充当代理,但指出真正的瓶颈是人和组织,而不是打字速度。