最近应该是在知乎上回答一个问题《你的编程能力从什么时候开始突飞猛进?》这里时,又重新思考了一下,软件开发是什么?这个问题可能在过去、现在与未来是完全不同的。
你的编程能力从什么时候开始突飞猛进?
过去的软件:数据处理是核心
现在的软件:基础功能完成后UI/UX更重要
未来的软件:AI代替你完成一切
过去的软件开发
在过去几十年,应该是一直没有变化的,软件的开始核心是数据+算法,也就是从外部接收数据后,要做什么样的处理,然后再输出什么样的数据。
举个例子吧,你从外界获得了一段图像,你怎么样处理获得相应的统计信息?最后一次更新时间是什么?更新时的comments是什么?然后这个数据获得后,你要发送给谁呢?
这些就是过去的软件处理逻辑,从数据到数据,中间使用的是算法。

在这中间主要的变化是 面向过程的开发,它就是最纯粹的 数据+算法。随后呢,因为软件理念的变化,增加了 面向对象的 软件开发。然后又有 什么各种软件工程的基础模型从 瀑布到V字型,从V字型到螺旋,从螺旋到迭代,从迭代到敏捷。现在基本上算是稳定在敏捷吧。因为它是最容易得到MVP,同时也比较好的兼顾的时间与质量的平衡。
所以软件的核心就是 数据、数据处理算法、再加上一些基本的管理理念。
现在的软件开发
随着芯片/硬件的性能越来越好,大家发现,软件有一个良好的UI/UX,更容易得到用户的青睐。那自然大家就会发展出大量优秀的UI/UX,最典型的可以说有三种吧:
Apple的、Google的、Windows的三种完全不同风格的UI,好吧,也是越来越趋同的。因为这个世界的认知暂时还没有大的差异。

基本的窗口元素还是基于Windows这个窗口的祖先同步到了所有的软件开发世界:Button、TextField、RadioButton、Combox、tab、windows、processbar、scrollbar、还有一些其它元素。
在这些元素的支持下,我们获得了现在软件开发的基础UI/UX,所以现代的软件开发呢?
在完成基本功能的前提下,大家在拼命的把交互与界面搞得越来越花哨,你既可以认为它变好了,也可以认为它在没有核心突破的情况下,走到了一条牛角巷,可能也走到了尽头。
尽管这中间有过突破性的东西,MR/VR/AR这些吧,但是很遗憾,还没有特别成功的先例出现。
未来的软件开发
站在这个时间点来预测未来?可能AI是唯一的答案吧。
很明显,未来所有的App里都会嵌入AI的功能。我们现在的AI能力,如果很好的与现有软件功能结合起来,可能是一个质的提升吧。
比如我经常使用的AI软件:形色,用来识别我看的不认识的植物,这是一个典型的弱AI应用,它在植物识别的图像应用领域里完全超越了普通人的能力范围。也就是我们可以用它来增强我们在这一狭窄领域的能力。但是如果它在加上更多的现在GPT一类的AI的能力,是不是能交互得更好呢?不是简单的信息展示,再加上信息的有效交互,是不是一个更优秀的App呢?

当然,我依然觉得嵌入了AI能力的App并不是一个终极形态,未来的软件的终极形态是Agent,是由核心大模型驱动的各种不同的Agent。大家就像是同一个班级的学生,尽管基础信息接受的是一样的,基础的能力是一样的,但是依然能够出现更优秀的Agent,更普通的Agent,更差的Agent。
但是这些才是软件的终极结局。直接我们能够达到强人工智能的那一天,在那里,我们就不需要Agent了,只需要一个强人工智能,或者与你结合,或者代替你使用一切。
这才是软件的一生吧!