I时代已经开始流行所谓的 “Vibe Coding” 了那么还有必要练习编程吗我认为还是有必要的。虽然我之前写过一篇文章提到可以利用 AI 来帮助精炼阅读内容、快速理解文章结构但有几个现实问题并不会因为 AI 的出现而改变。人脑单位时间内能够学习到的知识量其实并不会改变。简单来说无论未来 AI 技术发展得多快你学习知识的速度并不会同步变快。学习本身并没有真正的捷径。AI 在训练时既学习了好的代码也学习了坏的代码。有时候坏代码不一定是错误代码它可能只是充满坏味道、难维护、架构混乱的代码。如果你自己看不出来问题那么 AI 往往也看不出来。例子1很多东西有经验的人第一眼看过去和没有经验的人看到的是完全不同的。比如在 React 中当你看到这样一段代码constphone{name:iPhone,price:{payInFull:1000,monthlyFin:99}};某天产品经理让你增加一个快照页面。这个页面需要展示商品当前状态的一个快照即使商品后续状态发生变化快照页面里的内容也不应该改变。AI 很快帮你生成了这样一段代码const phone { name: iPhone, price: { payInFull: 1000, monthlyFin: 99 } }; Snapshot {...phone} /你看到{...phone}心里想“这个我懂不就是对象拷贝吗”结果没过多久客服部门报告了一个 Bug在父组件内修改价格后快照页面里的价格竟然也一起改变了。你非常困惑觉得这不应该发生。经过研究后你发现Snapshot {...phone} /并不等于constsnapshot{...phone}前者只是 React 的一种 props spread 语法糖。于是你修改了代码const phone { name: iPhone, price: { payInFull: 1000, monthlyFin: 99 } }; const snapshot {...phone}; Snapshot {...snapshot} /结果还是不行。后来你才发现真正需要的是constsnapshotstructuredClone(phone);如果是曾经踩过类似坑的人或者真正认真学习过 JavaScript 对象引用机制的人往往一眼就能看出问题所在。例子2你有没有过这样的经历看教程的时候感觉什么都会真正开始自己写的时候却一个字都写不出来。我前段时间在学习一门 Data Science 课程。课堂上老师讲的内容对于一个工程师来说其实并不复杂。top1Table.read_table(path_datatop_movies_2017.csv)但当我真正开始做作业时题目要求我读取top_movies_2017.csv我却突然大脑一片空白。我不断尝试read_csv import_csv等等各种可能的方法。但奇怪的是这个Table.read_table我明明在课本上看过很多遍。后来我意识到人脑学习知识的方式并不仅仅是阅读。学习往往是多种感官共同参与的过程。可能有听觉有触觉有遇到挫折后的思考还有不断尝试与失败的过程。而这些过程本身其实也是记忆的一部分。很多知识并不是看懂了就真的学会了。总结虽然 AI 可以帮助我们快速提炼文章纲要、总结重点但它更多只是给了我们一张地图。它可以帮助我们跳过一些暂时不感兴趣的内容避免把时间浪费在不重要的部分。但我们必须清醒地认识到如果你学习知识本身的速度并没有真正变快那么也不要轻易相信AI时代普通人也可以编程这种过度乐观的话。“普通人可以生成代码”并不等于普通人可以写出可维护的商业产品。AI 可以帮助你加速。但它无法替代你真正理解系统、理解代码、理解工程复杂性的过程。
AI时代,还有必要练习编程吗?
I时代已经开始流行所谓的 “Vibe Coding” 了那么还有必要练习编程吗我认为还是有必要的。虽然我之前写过一篇文章提到可以利用 AI 来帮助精炼阅读内容、快速理解文章结构但有几个现实问题并不会因为 AI 的出现而改变。人脑单位时间内能够学习到的知识量其实并不会改变。简单来说无论未来 AI 技术发展得多快你学习知识的速度并不会同步变快。学习本身并没有真正的捷径。AI 在训练时既学习了好的代码也学习了坏的代码。有时候坏代码不一定是错误代码它可能只是充满坏味道、难维护、架构混乱的代码。如果你自己看不出来问题那么 AI 往往也看不出来。例子1很多东西有经验的人第一眼看过去和没有经验的人看到的是完全不同的。比如在 React 中当你看到这样一段代码constphone{name:iPhone,price:{payInFull:1000,monthlyFin:99}};某天产品经理让你增加一个快照页面。这个页面需要展示商品当前状态的一个快照即使商品后续状态发生变化快照页面里的内容也不应该改变。AI 很快帮你生成了这样一段代码const phone { name: iPhone, price: { payInFull: 1000, monthlyFin: 99 } }; Snapshot {...phone} /你看到{...phone}心里想“这个我懂不就是对象拷贝吗”结果没过多久客服部门报告了一个 Bug在父组件内修改价格后快照页面里的价格竟然也一起改变了。你非常困惑觉得这不应该发生。经过研究后你发现Snapshot {...phone} /并不等于constsnapshot{...phone}前者只是 React 的一种 props spread 语法糖。于是你修改了代码const phone { name: iPhone, price: { payInFull: 1000, monthlyFin: 99 } }; const snapshot {...phone}; Snapshot {...snapshot} /结果还是不行。后来你才发现真正需要的是constsnapshotstructuredClone(phone);如果是曾经踩过类似坑的人或者真正认真学习过 JavaScript 对象引用机制的人往往一眼就能看出问题所在。例子2你有没有过这样的经历看教程的时候感觉什么都会真正开始自己写的时候却一个字都写不出来。我前段时间在学习一门 Data Science 课程。课堂上老师讲的内容对于一个工程师来说其实并不复杂。top1Table.read_table(path_datatop_movies_2017.csv)但当我真正开始做作业时题目要求我读取top_movies_2017.csv我却突然大脑一片空白。我不断尝试read_csv import_csv等等各种可能的方法。但奇怪的是这个Table.read_table我明明在课本上看过很多遍。后来我意识到人脑学习知识的方式并不仅仅是阅读。学习往往是多种感官共同参与的过程。可能有听觉有触觉有遇到挫折后的思考还有不断尝试与失败的过程。而这些过程本身其实也是记忆的一部分。很多知识并不是看懂了就真的学会了。总结虽然 AI 可以帮助我们快速提炼文章纲要、总结重点但它更多只是给了我们一张地图。它可以帮助我们跳过一些暂时不感兴趣的内容避免把时间浪费在不重要的部分。但我们必须清醒地认识到如果你学习知识本身的速度并没有真正变快那么也不要轻易相信AI时代普通人也可以编程这种过度乐观的话。“普通人可以生成代码”并不等于普通人可以写出可维护的商业产品。AI 可以帮助你加速。但它无法替代你真正理解系统、理解代码、理解工程复杂性的过程。