警示 AI 工具对编程基础能力的侵蚀,提出保持专业竞争力的对策。对职业规划有启发。
科技让我们变得懒惰。
这不是观点,而是事实。我们已经不会心算、不会自己找地址,也记不住电话号码了。这就是过度依赖某项技术所带来的问题。智能手机,说的就是你。
在编程领域,AI 和 vibe-coding(氛围编程)也带来了同样的问题。
我自己也不例外。我一直在尝试用 AI 接手那些枯燥乏味的任务。而且,每当我无法立刻想到答案时,就忍不住想直接求助于瓶子里的精灵,让它替我实现一个编程愿望。
并不是只有我这样。最近,我在 Reddit 上看到了这个问题:
“我已经有一段时间没用 C#/Unity 写代码了,所以对很多概念都非常生疏。过度依赖 ChatGPT,让我觉得自己什么也没学会;如果不靠它,我连自己写代码都会犯一些低级错误……我要怎样才能把这些知识重新学回来?有没有什么办法能帮我唤醒记忆?比如 YouTube 上特别好的视频之类的?我想停止使用 AI,靠自己写代码。”
对于原帖作者,以及所有想摆脱 AI 依赖的人,下面有 10 个值得尝试的建议:
把 AI 想象成数学课上的计算器。在你还不能手工完成某个过程之前,就不应该用计算器来自动完成它。
就像任何一位管教孩子的妈妈都会说的那样:“作业做完之前,不许再用 AI……”
熟悉你所选择语言的语法:编写变量、函数、循环、类……
为此,你可以找一本教材,或者观看 YouTube 上那种“4 小时掌握 X 所需的一切”之类的视频。但不要只是被动地看,而要亲手复现其中的示例和项目。一个字一个字地敲出来,禁止 Control C + Control V。
熟悉你的标准库:
写一个变量,看看编辑器或 IDE 会给出哪些建议。
这种类型可以使用哪些方法?
查看这些方法的签名和 docstring。
无论 ORM 多么强大,我们都无法摆脱 SQL。
SQL 从 20 世纪 70 年代初一直沿用至今,而且很可能再用上十年甚至二十年。
学习创建表、编写对结果进行聚合的查询,并掌握 JOIN。如果想使用贴近真实场景的示例,可以下载 StackOverflow 数据库的轻量版本,亲手探索一番。
好吧,我不是让你重复造轮子,比如自己写一个文本编辑器之类的东西。
我说的是构建一个食谱目录、todo 应用,或者为某个免费 API 编写 CLI wrapper。而且要真正从零开始:在编辑器或 IDE 中点击右键,然后创建一个新文件夹,接着一步步做下去。这个过程会教会你很多东西。
遇到报错信息时——只要你按照第 4 条去做,就一定会遇到——请克制住重新求助 AI 或者直接询问朋友的冲动。
试着靠自己弄清楚错误和异常。可以先从 Google 搜索报错信息开始。有个叫 Google 的东西,能找到包含我们所需答案的网页。没错,这种方式很老派,但它能真正锻炼你的能力。别忘了,AI 仍然处于禁用状态。(参见第 0 条)
80% 的情况下,你只需要列表和字典。当然,除此之外还有更多数据结构。
学习如何使用它们,以及如何实现它们。在日常工作中,你不必从零实现这些数据结构,但这个练习能强化你解决问题的能力。
除非你从事的是某些小众领域,否则通常不需要高等数学。
不过,你可以找一本离散数学教材,或者面向计算机科学的数学教材,认真学习其中一两个章节。还是同一个目的:磨炼你的思维。
你会经常卡住。这是成为程序员的正常特性,不是 bug。
逐行检查你的程序。
打开 Mozilla Web Docs、Microsoft Learn,以及你所选语言对应的其他官方资料。不要只是阅读,还要设计自己的示例,并思考如何把正在学习的内容用到自己的代码中。
对于学习而言,AI 是一种福音。问问那些通过参考手册、语言规范和杂志学习编程的老手,他们都会这样告诉你。只是不要让 AI 代替你思考。好吧,我们可以稍微放宽对 AI 的禁令:不要用它生成代码,而要让它成为你的 copilot,而不是你的 captain。
为了帮助你培养不受炒作影响的扎实技能,我写了《Street-Smart Coding》。这是我在从初级/中级开发者成长为高级开发者的过程中,希望自己当初就能拥有的一份路线图。