软件工程发生了一件奇怪的事情。
我们有AI可以生成函数,解释堆栈跟踪,写出SQL查询,脚手架API,重构代码,写出测试,甚至从一个提示构建整个应用程序.
不知何故,这让我比以往更相信 软件工程师需要强大的基础。
不减.
再来 因为当写出代码变得便宜时,理解代码变得昂贵.
关于AI协助开发的不适部分,让我们假设你问一个AI:"为管理用户而给我制造一个REST API". 5秒后,你有控制器,模型,路线,验证,认证,测试,可能还有多克配置.
不错 但后来有东西断了 数据库开始计时。
您的队列继续重试同一工作 。
记忆用量缓慢攀升.
种族条件只在生产流量中出现。
您的 API 返回不一致的数据 。
人工智能给了你三种可能的修补方法.
所有三个声音合理。
现在怎么办?
这就是基本知识突然变得非常昂贵的地方。
如果你不了解HTTP,数据库,货币,操作系统,网络,数据结构,算法,应用架构,以及你正在合作的运行时间,那么你真的没有AI辅助开发工作流程.
你有一个AI依赖。
这是非常不同的事情。
AI很擅长生成代码 我们应该承认这一点。
人工智能非常有用。
我用这个 我用它做实验。
我问它愚蠢的问题。
我让它产生无聊的代码。
我让它解释不熟悉的API。
我用为第二双相.
有时我甚至让它 写了第一个丑陋的版本的东西。
没关系 软件工程一直致力于使用工具.
编译器取代了手写机码.
框架取代了大量的锅炉板.
图书馆取代了重塑常用算法。
云平台取代了维护物理服务器.
AI只是另一个抽象层.
但是抽象是有代价的.
只有在抽象失败时,你才能安全地抽象出你足够理解的东西来调试.
这就是人们经常忘记的部分。
代码不是软件 这也许是新工程师最重要的区别之一.
软件系统不仅仅是源代码.
一个系统是一个组合: 要求数据算法 状态接口 网络数据库 操作系统 基础设施安全 人和很多假设 无文献记录的AI可以生成代码.
它无法神奇地消除它下面的复杂性。
你还需要了解生成的代码在做什么。
否则,你基本上开着一辆赛车, 同时问乘客是哪个踏板是刹车。
基本原理给你一个心理调试器 学习基本知识的最大好处之一 就是他们给你一个理性的方法 假设一个API突然变得缓慢。
初学者可能会问AI:"我的API为什么慢?
一个工程师开始打破问题。
申请缓慢吗?
数据库慢吗?
网络慢吗?
我们问的太多了吗?
是否有N+1查询问题?
我们在等外线服务吗?
CPU饱和了吗?
记忆在压力下吗?
关系累吗?
队列备份了吗?
算法有没有做不必要的工作?
这不是在回忆解决办法。
是为知去向.
基础知识从猜测转向调查 学习算法,即使AI能写出"但我不再需要学习算法了.
AI可以生成它们".
当然 而计算器可以计算出927×381.
你还是应该明白乘法 学习算法的要点并不是要证明在采访中可以手动执行排序算法.
更深层的价值是学习如何思考计算问题.
你开始问:当数据集变得更大时会发生什么?
什么是时间的复杂性?
记忆成本是多少?
此操作能否被索引 ?
可以吗