软件开发vs数据服务

自从人类文明从工业文明进入互联网文明以来,人类生活的操作系统发生了深刻的变化,生活方式完全被互联网颠覆,可是人类很多观念,认知依然停留在工业文明时代。

现在化的软件开发有一套完整的工业化的流程和规范,包括需求分析,开发,测试,等等。生产一个软件和生产一辆汽车本质上是一样的工业流程。工业文明的一个基本逻辑就是模块复用。这其中有一个前提条件,就是所成产的产品面对一个确定性的引用场景。这种确定性来自于成功的需求分析。针对数据的软件也是一样,它是这样看待数据的:数据的格式,内容,大小,以及所附着在数据上的业务需求,都是可以被确定性的预知的。

然而,进入互联网文明以后,我们要问一个问题,这种成功的需求分析还存在吗?我认为这种成功的需求分析是不存在的。

在工业文明时代,其实这种一劳永逸的需求分析也不存在,只不过由于互联网未能普及,信息流通不畅,需求变化的反馈迟缓,导致看上去需求分析的结果在一段时间内是不变的且准确的。

在互联网时代,信息流通快速,用户有了更大的空间改变需求,大数据随之产生。简单的说,数据既是需求,而不是用户口头上说出来的所谓的“需求”。即使你强行要求用户把所提出的需求写在合同上签字盖章,也不能改变用户的需求在随时变化的事实。因而需求分析也就面临随时失效的问题。

因而,在数据挖掘/分析这个行业,我们也有两种给基本的模式:

做一个数据挖掘的软件。这就是基本的软件开发的思维。第一步就是明确需求,就是让客户根据他们的经验(大部分情况下他们并没有经验,对自己的数据也不了解),所提出的需求也是自己想象出来。然后就是用传统的软件开发的流程,根据客户想象的需求进行开发。这种做法的结果往往就是开发出来的软件并不适用于客户的数据。根本的原因就是:把用户的数据当作是静态的,死的。依照前面所说,数据即是需求。这种情况下开发出来的软件,就算包含了人工智能的功能,一些预先训练好的模型,当它被部署了以后,它依然把数据当作是死的。

另外一种做法是提供数据服务。这种做法所产出的不是一个软件,而是从用户的数据上所发掘到的价值。这种做法在见到数据之前不会预设需求,而是将数据本身加上用户的业务当作需求。从事这种服务的团队所需要的是:1. 一个丰富的知识网络(各种算法,模型,用例), 2. 一套完备的软硬件的工具(服务器,GPU, 云,数据清洗/预处理/建模,存储,可视化), 3. 一个流水线化的团队(产品经历,算法工程师,标签工程师,全栈工程师)。从事服务的时候直接把机器+软件+人部署到数据上面去,现场看数据开脑洞,决定要做的问题,打标签,搞模型,展示从数据中挖掘出来的价值。

需求的不确定性,在工业时代就有,只是无从表达。互联网给了这种不确定性充分表达的机会,具体的表达方式就是:数据。因为数据就是需求。

一个从事数据业务的团队的价值应该附着于数据的价值本身,而不是附着于所使用的软件工具,软件的开发应该是为了协助服务,而不是为了一劳永逸的解决用户在数据上的问题。这是一种根本性的变化,其中的不确定性会带来焦虑感和不安全感,因为它终结了那种一劳永逸的软件开发的思维方式。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181207G02L8G00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券