原始链接

https://blog.senko.net/code-was-never-the-hard-part-is-an-insult-to-all-programmers

附: HackerNews 摘要的AI 总结

https://t.me/hacker_news_zh/23810

软件开发行业正处于剧烈的变革之中。随着 AI 革 命的推进,编程工作面临转型。许多人近期常说 “大语言模型(LLM)擅长编程,但软件开发从来 就不是难点”或“编程很容易,搞清楚要编写什么 才是难点”。作者 Senko Rašić 认为这种观点是对 所有程序员的极大侮辱。

如果编程很容易

如果编程真的很容易,为什么程序员多年来一直 供不应求且薪资高昂?为什么在 AI 出现之前,程 序员就面临巨大的压力、过度劳累和职业倦怠? 如果初学者就能轻松完成工作,为什么公司还要 通过复杂的算法面试来寻找顶尖开发者?

作者通过一系列反问来驳斥编程容易论:

• 为什么会有《代码整洁之道》和《程序员修炼 之道》这类厚重的专业书籍?

• 为什么计算机科学需要专门的学位或高强度 的训练营?

• 如果编程简单,为什么会出现像约翰·卡马克 或法布里斯·贝拉这样被公认为天才的人物?

• 如果编程简单,为什么人们会对 AI 抓取自己 的代码感到愤怒?

• 如果编程简单,为什么现在的软件依然充满 了漏洞(Bug)?

关于“弄清楚建什么才是难点”的质疑

针对“确定产品需求才是最难的部分”这一说法, 作者提出了以下质疑:

• 如果决定建什么是难点,为什么产品经理的 薪水通常没有开发人员高?

• 为什么市场研究人员、可用性专家和客户成 功经理在软件公司中不被视为明星员工?

• 如果寻找需求更难,为什么程序员在销售人 员为了签单而随意承诺新功能时会感到沮丧?

• 如果实现过程很简单,为什么大家不直接构 建十个版本来测试哪一个更受欢迎?

关于程序员角色的误区

另一种陈词滥调是“软件开发的大部分工作是与利 益相关者沟通”。作者指出,现实中很少有程序员 愿意直接与客户打交道。有些开发者标榜自己是 “解决客户问题的人”,但他们转身就开始讨论单 子(Monad)、内存安全等技术细节,而对客户需 求的理解仅停留在虚构的用户画像上。

作者认为,理解用户和解决问题对项目成功至关 重要,但编写高质量代码同样是一门需要技能、 耐心和经验的工艺。这两者并不对立,优秀的开 发者应该努力兼顾对系统的深度理解和对构建目 的的深度认知。

行业中的不变与改变

在行业巨变中,有些事物是不会改变的:

• 软件会变得越来越复杂。

• 软件永远需要维护,软件熵和代码腐化是客 观事实。

• 技术抽象层会越堆越高。

• 用户总是想要更多功能,却希望付更少的钱。

• 用户依然无法准确表达自己的需求。 会改变的事物则包括:

• 编程工具和语言的更迭。从穿孔卡片到汇 编,再到现在的 Rust、Go 或 Python。

• 过去为了修复内存漏洞而积累的多年经验, 在现代自动内存管理语言面前可能不再那么重要。

如何在这种环境下生存与发展

作者给出了以下建议:

• 接受变化:对新事物保持好奇心,同时保持 批判性思维。区分行业炒作与真正有效且有价值 的技术。

• 扩展职责范围:如果你是资深开发者,不要 只钻研技术,去学习用户体验、客户访谈或商业 策略。如果你是初学者,要深入理解底层原理, 如指针、递归、内存层级和网络协议。

• 不要放弃责任:不要把理解、判断、同情心 和审美外包给 AI。不要让自己变成 AI 的肉体代理 人。

作者还推荐了一系列涵盖计算机科学原理、面 试、管理、商业战略和设计思维的经典书籍,包 括《计算机程序的构造和解释》、《人月神话》、 《设计心理学》等,鼓励开发者通过深度学习来应 对挑战。

原文:https://blog.senko.net/code-was-never- the-hard-part-is-an-insult-to-all-programmers

评论:https://news.ycombinator.com/item? id=49222189