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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

精选留言

  • newbee

    2018-10-30 18:50:36

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

    2019-01-14 07:12:11

    回过头来重新阅读学习,过去的软件逻辑是通过人的需求编写程序开发软件产品,使得人们生活的效率提高了多倍。

    大数据技术和机器学习技术要做的事是挖掘人自身都可能不清楚喜好的事和物,因为需求的再次通过数据挖掘可以发觉未知的东西,这样在原先的基础之上更有效率的提高了我们的生活标准和便捷。

    大数据技术在今天的互联网公司已经成熟,所以我们有更丰富的数据和技术方法来做这件事。举几个耳熟能详的例子,阿里的支付宝花呗额度就是根据过去的消费能力来评估额度,这是传统银行没办法做的事,因为没有我们的消费数据。携程可以根据我们过去订的机票路线和酒店标准,推出我们和城市匹配度更高的酒店服务和旅游路线,这是线下旅行公司做不到的事。亚马逊的浏览能推出极高的相关性产品,这背后也是成百上千的工程师来在后面做大数据算法和挖掘。

    老师,因为金融是国运,我想问您大数据在传统金融行业的发展前景如何,期望听到您的回复。

    作者回复

    其实已经没有什么传统金融了,金融行业因为资金充裕,对大数据的投入和使用其实非常大的,不亚于互联网,未来的前景也非常看好。

    PS:我认为科技才是国运,金融是润滑油,科技才是发动机。

    2019-01-15 11:38:20

  • linazi

    2018-11-05 14:19:46

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

    2018-10-30 18:11:31

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

    2018-10-29 17:24:17

    期待老师的专栏!
  • 薄荷mier

    2018-10-29 19:48:51

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

    2018-10-29 23:50:09

    我设想,如果可以把自己大脑中的一些东西价值理念输入到计算机里面,通过数据分析。找到这些信息之间的相互关系,那么就可以创造更好的自己。比如说,如果你会弹吉他 并且 你的数学学的 特别好 。你可以通过数学知识创造出关于吉他的相关内容。再抽象点儿说,就是 你可以 找到 一种 两者之间更美的,你更喜欢的东西!这种东西,肯定是有价值的。
  • 斯盖丸

    2018-10-29 22:15:03

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

    大数据涉及的知识技能领域比较多,你需要选择一个具体领域,然后开始练级,这个专栏就是帮你全面了解大数据的知识体系,然后选择合适自己发展方向的领域。

    2018-10-31 21:17:55

  • AI

    2018-10-29 22:10:57

    顶起
  • 龙华强

    2018-10-29 21:14:48

    第一次买专栏,因为这是李智慧的。看了课程目录,确实干货满满,开栏第一章看了好几遍,有种理应如此的感觉。作为大数据开发工程师,不仅仅是为了写代码挣钱,更应有一种对大数据的清晰认识,后面的路也不会迷茫疲倦
  • sunlight001

    2018-10-29 19:30:58

    看了大型网站技术架构,很期待老师的专栏!
  • 小老鼠

    2018-10-29 20:20:20

    现在有种说法,AI又遇到了困境,无法向前,你如何看?
  • 爱读书的张先生

    2018-11-22 15:37:42

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

    谢谢

    2018-11-23 07:06:18

  • 林锋

    2018-11-20 07:40:46

    李老师就是我的架构启蒙老师,支持一下
  • 乘坐Tornado的线程魔法师

    2018-10-29 22:48:17

    之前有读过李智慧老师的著作《大型网站技术架构》,看到课程毫不犹豫购买下来并推荐给朋友们,很期待。
  • A洒脱的风

    2018-10-29 20:39:32

    比心
  • K

    2018-10-29 19:47:42

    支持智慧哥错不了
  • Geek_0a4616

    2020-07-09 08:53:09

    软件编程技术核心价值是把现实世界的业务操作线上化,通过软件和网络技术进行处理,实现降本提效。
    而目前为止基本能发掘开采的都被挖掘过了,很难成百上千倍地降本提效。而目前的大数据技术越来越成熟,通过大数据驱动来预测和发掘用户自己都不了解的需求,进而通过这项技术更好的服务好业务,未来给业务带来巨大的价值和想象空间。
    在这种情况下如果软件工程师不懂得大数据技术那么只能在算法外围配合算法人员做些算法白盒化归因分析等辅助性的工作,长期以往,生存空间越来越窄,发展越来越受限制。所以我们作为技术工程师需要懂大数据技术。
  • 夏一Sunny

    2018-11-09 13:06:49

    选择大数据是为了帮助用户挖掘连用户自己都不知道的需求,这是在传统编程的基础上更进一步,创造更上一层的价值。很认同老师的选择,我认为这是一种进步,更是一种趋势。希望通过学习老师的课程,能让自己有一个更系统的思维去认识大数据,去学习大数据开发。
  • 落叶飞逝的恋

    2018-11-05 10:34:50

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