开篇词 为什么说每个软件工程师都应该懂大数据技术?

2012年的时候,我从阿里跳槽到Intel做大数据开发。当时很多人不理解,我为什么会从如日中天的互联网公司跳槽到“传统”的IT公司。

我是这样考虑的,软件编程技术出现已经半个多世纪了,核心价值就是把现实世界的业务操作搬到计算机上,通过计算机软件和网络进行业务和数据处理。我们常见的软件系统,不管是电子商务还是库存管理,不管是搜索引擎还是收银终端,都是如此。这一点价值巨大,可以成百上千倍地提高我们的生活和工作效率。

但是时至今日,能用计算机软件提高效率的地方,几乎已经被全部发掘过了,计算机软件成为人们日常生活的必备品,人们已经习惯了计算机软件的存在。在这种情况下,如果想让软件再成百上千倍地提高我们的生活和工作效率,使用以前的那套“分析用户需求和业务场景,进行软件设计和开发”的做法显然是不可能的了。

那如何走出这个困局呢?我觉得,要想让计算机软件包括互联网应用,能够继续提高我们的生活工作效率,那就必须能够发掘出用户自己都没有发现的需求,必须洞悉用户自己都不了解的自己

计算机软件不能再像以前那样,等用户输入操作,然后根据编写好的逻辑执行用户的操作,而是应该能够预测用户的期望,在你还没想好要做什么的情况下,主动提供操作建议和选项,提醒你应该做什么。

这听起来很科幻,但实际上已经出现了,那就是大数据技术和机器学习技术,也就是后来我们都耳熟能详的人工智能AI技术。

现在回过头来看,我当时的选择是正确的。就在我加入Intel从事Hadoop开源软件开发的第二年,也就是2013年,大数据技术开始火热起来,从BAT到传统的商业公司,都纷纷在自己的软件系统中大规模使用大数据技术,有的公司甚至称自己为大数据公司,而2013年这一年,后来也被称为“大数据元年”。

又过了3年,也就是2016年,Google的AlphaGo横空出世,让我们见识到了“大数据 + 机器学习”的巨大威力。

所以,我同意这样一种说法:在未来,软件开发将是“面向AI编程”,软件的核心业务逻辑和价值将围绕机器学习的结果也就是AI展开,软件工程师的工作就是考虑如何将机器学习的结果更好地呈现出来,如何更好地实现人和AI的交互。

我曾经跟一个同学讨论这个观点,他认同面向AI编程,但是他认为:这并不意味着我一定要懂AI,也不一定要懂大数据和机器学习,我只要懂业务,理解机器学习算出的结果就可以了。

真的是这样吗?只需要懂业务就能在“面向AI编程”的时代胜任软件开发的工作吗?

在阿西莫夫的科幻经典巨作《基地》中,描述了这样一个场景:在银河系,随着战争的蔓延,很多星球的科技在逐渐退步,到后来,他们虽然还有核电站等高科技产品,但是已经不知道是如何运作的了。而在银河系的边缘,有一颗小星球,在大战爆发前从银河系各处转移来了大量的科技文献,这颗小星球也没有加入战争并将科学技术一直传承了下去。

后来,当其他星球的科技产品出现问题的时候,就会向这个小星球求援,小星球会派工程师前去维修。但是他们并不管工程师叫工程师,而是叫“僧侣”;也不管核电站叫核电站,而是叫“圣殿”;维修也不是叫维修,而是叫“祈祷”。

他们的说法是:因为这个星球上的人做了不该做的事,比如发动战争、破坏环境等,触怒了神,所以神怪罪下来,让他们失去能源,如果想恢复能源,就必须纠正自己的错误行为并向神祈祷赎罪。所以,当工程师进入核电站维修的时候,整个星球的人都跪下祈祷,当电力恢复的时候,大家纷纷称颂神的伟大。

你看,科学和宗教并不是互斥的,科学也可以成为宗教,当人们面对自己不懂的东西的时候,会倾向于用宗教的原理去解释。

如果未来是面向AI编程的,希望软件工程师不要把AI当作什么万能的东西。当机器学习结果出现问题的时候,我们既不要陷入某种不可知的“玄学”之中,也不要无谓地抱怨什么“人工智障”,而是应该积极参与到问题的讨论、分析和解决中去。这也是我的观点,即使自己不做大数据与机器学习相关的开发,每个程序员也应该懂大数据和机器学习

将来,数据会越来越成为公司的核心资产和主要竞争力,公司的业务展开和产品进化也越来越朝着如何利用好数据价值的方向发展。不懂大数据和机器学习,可能连最基本的产品逻辑和商业意图都搞不清楚。如果只懂编程,工程师的生存空间会越来越窄,发展也会处处受限

如果说,大数据技术和应用是一个技术的殿堂,希望我的专栏不仅可以带你找到进入大数据“殿堂”的钥匙,也能透视“殿堂”里的结构、装饰、家具,告诉你为什么用这些元素可以构建恢弘的“殿堂”,以及如何更好地利用这个殿堂的空间与设施,而不是你进入“殿堂”看到一张床就舒服地躺下,错失了更美的风景。

学习大数据最好的时间是十年前,其次就是现在!

欢迎你进入我的专栏,我们一起一探究竟。

精选留言(15)
  • newbee 👍(75) 💬(1)

    读作作者的《大型网站技术架构》,深为作者的见解和对后来者的引导所折服,没想到今天能开始追作者的专栏。对于程序员必须要懂数据和机器学习的观点十分赞同,特别是互联网公司,产品一旦做大了之后,必然要拥抱数据处理。有些产品甚至生来就基于数据及机器学习。

    2018-10-30

  • 杰之7 👍(29) 💬(2)

    回过头来重新阅读学习,过去的软件逻辑是通过人的需求编写程序开发软件产品,使得人们生活的效率提高了多倍。 大数据技术和机器学习技术要做的事是挖掘人自身都可能不清楚喜好的事和物,因为需求的再次通过数据挖掘可以发觉未知的东西,这样在原先的基础之上更有效率的提高了我们的生活标准和便捷。 大数据技术在今天的互联网公司已经成熟,所以我们有更丰富的数据和技术方法来做这件事。举几个耳熟能详的例子,阿里的支付宝花呗额度就是根据过去的消费能力来评估额度,这是传统银行没办法做的事,因为没有我们的消费数据。携程可以根据我们过去订的机票路线和酒店标准,推出我们和城市匹配度更高的酒店服务和旅游路线,这是线下旅行公司做不到的事。亚马逊的浏览能推出极高的相关性产品,这背后也是成百上千的工程师来在后面做大数据算法和挖掘。 老师,因为金融是国运,我想问您大数据在传统金融行业的发展前景如何,期望听到您的回复。

    2019-01-14

  • 斯盖丸 👍(7) 💬(1)

    老师,您也会像左老师那样在专栏里列个书单让我们按图索骥一步步“练级”吗?

    2018-10-29

  • 爱读书的张先生 👍(3) 💬(1)

    看了作者的《大型网站技术架构》非常棒,一看作者开专栏了,就果断买了,希望跟着作者能够开拓眼界。

    2018-11-22

  • 先平A一下再跑 👍(1) 💬(1)

    emmm催更

    2018-10-30

  • 大孩儿 👍(0) 💬(1)

    能不能把所有的课程都有一个上线时间啊,都不知道这个课程是什么时候上线的

    2024-08-11

  • kimoti 👍(0) 💬(1)

    请问老师AI有没有可能自己贯串软件开发的整个生命周期?除了需求是人给定的。

    2020-09-16

  • vigo 👍(0) 💬(1)

    智慧老师乃真智慧也!

    2018-11-15

  • jack 👍(0) 💬(1)

    学习大数据最好的时间是十年前,其次就是现在!

    2018-11-05

  • innovator琳 👍(0) 💬(1)

    师傅领进门,修行靠个人。期待师傅能领我进门。

    2018-11-04

  • newjueqi 👍(0) 💬(1)

    在我写的书中,l连作者简介都是参考李先生的《大型分布式网站架构设计与实践》,在书中多次安利了这本书,和读者交流的时候,也推荐想深入学习的读者去读李先生的书。看到了李先生要出专栏,就立刻买了。

    2018-10-31

  • linazi 👍(21) 💬(2)

    我是一个女程序猿 从15年开始接触大数据 一直到现在 但还是不能够很好的理解大数据的整体生态体系架构 别人问我 只能说出个大概 脑袋中没有一个完整的体系和学习思路 希望听了智慧老师的课 能够有所启发

    2018-11-05

  • MJ 👍(18) 💬(2)

    请教老师,关于大数据时代,学习一门编程语言,是java还是python好呢?系统的话,Ubuntu还是centos呢?求老师指点

    2018-10-30

  • 芒果 👍(14) 💬(0)

    期待老师的专栏!

    2018-10-29

  • 薄荷mier 👍(11) 💬(0)

    买了,听大佬讲讲和大数据、机器学习、人工智能、云计算有关的内容,因为太火了,很多人都讲,但是听谁的?我选择听极客时间的~( ̄▽ ̄~)~

    2018-10-29