今天和几个朋友发起了一个非常激烈的AI编程讨论,我觉得我的输入还是非常多的,从他们的视角听听到底怎么样面对AI编程。
我认为可以做到无代码编程,即程序员无需感知代码就可以实现需求。
其中一个同学有一个反对意见非常大,他说不能够信任AI编程,现在还是要自己去看每一行代码具体是怎么实现的,否则面对的是灾难。
而且他还特别提到以后代码怎么审核,必须还是要人来看。
在一定程度上来说,我并不认同他的看法,我认为到了短期一定是全AI编程。
这个时间很短,最多半年时间,80%的项目将会进入全AI编程,即程序员不用写一行代码,就可以实现需求上线。
程序员最核心的工作其实并不在于写代码本身,而是在于清晰的定义需求、指导AI一步步实现、功能调试、确保符合预期、实现持续可维护的规范。
也就是说原来程序员写完技术方案之后还需要写具体的代码。而现在程序员压根不用关注具体代码逻辑的实现,只要定义好清晰的功能是什么。
AI根据定义,就把代码给写了。
当然,功能定义就非常重要,需要非常清晰,没有歧义,不会前后矛盾。比如功能包含了要做什么和不要做什么,以及功能之间的逻辑关系。AI完成功能后,程序员只要确认代码结构符合预期,编码就结束了。
然后只要白盒测试功能,也就是站在业务规则的角度来构造测试case。这些测试的case也几乎都能够让AI来帮助验证。
比如说我在创建一个订单页面展示的需求,我要定义好测试用例,当数据为空的时候怎么显示?当数据只有一页的时候怎么显示?当数据超过一页的时候又如何显示翻页?
AI在写完代码以后,就会按照我的测试用例再进行检查一遍,如果发现问题,那么自动修改,不断的迭代,直至通过所有的测试用例为止。
甚至有些时候压根就不需要程序员和测试同学的介入。这个需求就完成线上交付了。
这面有一个问题,程序员到底在这里面做什么角色呢?需求是产品经理写的,代码又全部是AI写的,测试用例也是AI自己检测的。甚至在这个需求过程中,程序员压根就不用看代码,功能就全部完成了。
那么程序员到底需要做什么事情呢?程序员是不是没有价值了?答案当然不是。
程序员的核心价值在于对结果负责。
很多人可能不明白这一点。用AI来编程,但AI不是万能的,它不能够对结果负责。举一个简单的例子来说,产品经理产出了一个需求后,他也可以直接把这些东西丢到AI生成功能。
但是出了问题怎么办?AI写的代码跑不起来怎么办?AI写的架构没办法持续迭代和维护,怎么办?这是用力跑的,全部通过了,但是在一些极小的场景下出问题了怎么办?从0~1做一个新需求非常简单,但是要增加一个功能,根本就改不动,怎么办?
虽然可以不用看代码,但是出问题得查问题吧?产品经理显然不具备深度修复问题的能力。
比如,AI写的一个调用,依赖有冲突,咋整?
另外,在完成线上发布以后,出了故障怎么办?谁来背锅?至少得有个人吧。总不能让业务同学背技术的锅。也不能让老板来背锅。
所以,程序员的价值就出来了。
因此可以看到在很长一段时间内,程序员这个角色是少不了的,可能不需要那么多,但一定需要。
AI 不会替代所有程序员,但是一定会替换不用AI的程序员。