Skip to content

Commit 96e09fe

Browse files
committed
update post by adding more points.
1 parent 584e6a3 commit 96e09fe

File tree

2 files changed

+48
-6
lines changed

2 files changed

+48
-6
lines changed

content/zh/post/2025/杂谈AI取代程序员.md

Lines changed: 48 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
+++
22
title = "杂谈AI取代程序员"
33
date = 2025-02-14T21:15:00-08:00
4-
lastmod = 2025-02-15T01:28:56-08:00
4+
lastmod = 2025-03-01T13:56:35-08:00
55
tags = ["ai", "programmer"]
66
draft = false
77
toc = true
@@ -54,7 +54,34 @@ toc = true
5454
虽然我写的代码生成工具远不如大模型加持的AI强大,但看起来都只局限于解决编码问题,研发流程的其他问题并没有解决。
5555

5656

57-
### <span class="section-num">2.2</span> 功能性与非功能性需求 {#功能性与非功能性需求}
57+
### <span class="section-num">2.2</span> 冰山之下 {#冰山之下}
58+
59+
> 冰山运动之所以雄伟壮观,是因为它只有八分之一在水面上
60+
>
61+
> 《午后之死》 海明威
62+
63+
{{< figure src="/ox-hugo/iceberg.jpg" >}}
64+
65+
如同只有只有八分之一在水面上的冰山一样, 很多程序员都可能没有意识到,写代码只是工作的一小部分,甚至可能是其中最轻松的部分, 维护才是工作中最繁琐且具有挑战性的部分。
66+
67+
维护工作包含测试,debug, 修bug, 性能优化, 更新以适应其它改变,代码重构,客户支持,写文档并随时间修改文档.
68+
69+
以我自己的经历为例,之前组里面有不少近10年的历史服务,但是还在发光发热,作为核心组件给客户提供服务.
70+
71+
这些服务基本都是用Java写的, Java 以「Write once, run everywhere」且优秀的向后兼容能力而闻名, 因此还有不少公司还在使用JDK8, 仿佛被封印在 Java8 一样了。
72+
73+
不久前, 在公司内部推行了一个要求将JDK升级到JDK17的全公司范围的项目:
74+
75+
而升级JDK的动机,一方面是因为可以使用最新的语言特性,此外JDK8也马上要被停止支持了,另外一方面是性能优化, 各种评测都显示,从JDK8升级到JDK17,升级后JVM的系统资源使用量平均下降约10%~15%, 对于公司而言,更少的系统资源,就可以使用更少的服务器,通过升级JDK 就可实现无痛「降本增效」。
76+
77+
但即使兼容能力优秀如Java,我也花费了近3周才把组里使用 JDK8/JDK11 的老服务切换到 JDK17,
78+
79+
期间还出现了各种奇怪的问题,比如JVM参数名或者选项在升级之后被废弃了, 新版本JVM 无法识别,又或者是出于安全的考虑,部分JDK内部的 class 无法通过反射访问,会导致运行时异常,服务需要回滚.
80+
81+
AI 也没法帮我们一键升级或维护, 而这些枯燥且繁琐的工作才是那未被人所见的「八分之七」.
82+
83+
84+
### <span class="section-num">2.3</span> 功能性与非功能性需求 {#功能性与非功能性需求}
5885

5986
在程序开发中,除了有功能性需求,还需要非功能性需求.
6087

@@ -64,26 +91,36 @@ toc = true
6491

6592
而所谓的非功能性需求,比较常见的是可扩展性(scalability),可维护性(maintainability) 和性能(performance).
6693

94+
95+
#### <span class="section-num">2.3.1</span> 非功能性需求 {#非功能性需求}
96+
6797
还是以加法为例, 我可能需要后面扩展到乘法和除法, 或者扩展到复数或者矩阵加法,要怎么易于扩展呢?
6898

6999
这些都是AI生成代码是没有考虑到的因素,AI比较擅长的可能是给它一个需求,它生成一段代码给我们。
70100

71-
但是在软件研发的生命周期中,有大概80%的时间,都是维护已有的系统,谁家没有个已经在跑的系统呢
101+
但是在软件研发的生命周期中,有大概80%的时间,都是维护已有的系统。
72102

73103
而给已有的系统上增加功能,就需要考虑各种奇怪的兼容性,相当于带着锁链来跳舞,并不能像从无到有,什么都不用考虑的那般洒脱。
74104

75-
而这样的限制,又是AI生成代码时未曾考虑的。所以从零开始的日抛型,不需要考虑维护成本的项目,很适合由AI来生成.
105+
而这样的限制,又是AI生成代码时未曾考虑的。
106+
107+
所以从零开始的日抛型,不需要考虑维护成本的项目,很适合由AI来生成.
108+
109+
110+
#### <span class="section-num">2.3.2</span> 已解问题 {#已解问题}
76111

77112
但即使功能性的需求,有时候AI也会做不好。
78113

79114
我之前在工作中需要根据已有的Schema, 使用Rust 写入Parquet数据,Rust本来就新,加之操作Parquet的库就更少了, 所以ChatGPT, Claude或者Gemini 都没有给出我满意能跑的结果,最后还是靠自己去读 Parquet库的源码找出的解决办法。
80115

81116
无论模型怎么变,AI现阶段还需要预训练数据的投喂,所以没有相关的预处理数据,AI也只能胡扯。
82117

118+
换而言之,所限于当前的AI模型,AI是只 **善于处理已经被解决过的问题**
119+
83120
所以总结下来,在真实项目中,AI还没有办法取代程序员。
84121

85122

86-
### <span class="section-num">2.3</span> AI取代论背后的动机 {#ai取代论背后的动机}
123+
### <span class="section-num">2.4</span> AI取代论背后的动机 {#ai取代论背后的动机}
87124

88125
既然你说AI现阶段还没有办法取代程序员,为什么我看到各种各样程序员要被AI取代的新闻,甚至有公司用AI来替代员工了?
89126

@@ -97,6 +134,11 @@ toc = true
97134

98135
神智清明的你可能在心平气和下很难做出这样的决定嘛。
99136

137+
制造焦虑才能更好地贩卖自己的产品,毕竟到现在为止,靠AI盈利主要有两种方式:
138+
139+
1. AI 公司靠产品融资,拉风投
140+
2. 制造AI焦虑,借机卖课卖书卖文档
141+
100142
另外一种就是要用AI来取代程序的公司,说要通过AI来增效,裁撤工程师,比如国外的 [Workday 裁员说要再招人做 AI 的新闻](https://apnews.com/article/workday-layoffs-job-cuts-ai-investments-437581ad79d6e1cef2de7b300015dfbb?utm_source=t.me/mtfront)&nbsp;[^fn:2], 还有2023年 [Google 因为AI裁员而30000 名员工的新闻 ](https://www.bwpeople.in/article/google-contemplates-30000-layoffs-due-to-ai-job-impact-503670)[^fn:3]
101143

102144
怎么说呢,AI这块牌子太好用了, 什么都可以往里面套,裁撤工程师降本是真,AI增效大概是假。
@@ -133,7 +175,7 @@ toc = true
133175

134176
我觉得都可以把这个内容扩展写成 [测试技能进阶系列](https://ramsayleung.github.io/zh/post/2024/%E6%B5%8B%E8%AF%95%E6%8A%80%E8%83%BD%E8%BF%9B%E9%98%B6%E4%B8%80_%E8%BD%AF%E4%BB%B6%E8%B4%A8%E9%87%8F%E8%AE%A4%E7%9F%A5/) 的第四篇了
135177

136-
假设我需要测试一个计算字符串中元音数量的函数 `count_vowels(s: str) -> int`, 我的指示是:
178+
假设我需要测试一个计算字符串中元音数量的函数 `count_vowels(s: str) -> int`, 我的指令是:
137179

138180
> 请为以下函数 \`count_vowels(s: str) -&gt; int\` 生成pytest测试用例:
139181
>

static/ox-hugo/iceberg.jpg

119 KB
Loading

0 commit comments

Comments
 (0)