开篇词|为什么说每个软件工程师都应该懂大数据技术?
文章目录
2012 年的时候,我从阿里跳槽到 Intel 做大数据开发。当时很多人不理解,我为什么会从如日中天的互联网公司跳槽到“传统”的 IT 公司。
我是这样考虑的,软件编程技术出现已经半个多世纪了,核心价值就是把现实世界的业务操作搬到计算机上,通过计算机软件和网络进行业务和数据处理。我们常见的软件系统,不管是电子商务还是库存管理,不管是搜索引擎还是收银终端,都是如此。这一点价值巨大,可以成百上千倍地提高我们的生活和工作效率。
但是时至今日,能用计算机软件提高效率的地方,几乎已经被全部发掘过了,计算机软件成为人们日常生活的必备品,人们已经习惯了计算机软件的存在。在这种情况下,如果想让软件再成百上千倍地提高我们的生活和工作效率,使用以前的那套“分析用户需求和业务场景,进行软件设计和开发”的做法显然是不可能的了。
那如何走出这个困局呢?我觉得,要想让计算机软件包括互联网应用,能够继续提高我们的生活工作效率,那就必须能够发掘出用户自己都没有发现的需求,必须洞悉用户自己都不了解的自己。
计算机软件不能再像以前那样,等用户输入操作,然后根据编写好的逻辑执行用户的操作,而是应该能够预测用户的期望,在你还没想好要做什么的情况下,主动提供操作建议和选项,提醒你应该做什么。
这听起来很科幻,但实际上已经出现了,那就是大数据技术和机器学习技术,也就是后来我们都耳熟能详的人工智能 AI 技术。
现在回过头来看,我当时的选择是正确的。就在我加入 Intel 从事 Hadoop 开源软件开发的第二年,也就是 2013 年,大数据技术开始火热起来,从 BAT 到传统的商业公司,都纷纷在自己的软件系统中大规模使用大数据技术,有的公司甚至称自己为大数据公司,而 2013 年这一年,后来也被称为“大数据元年”。
又过了 3 年,也就是 2016 年,Google 的 AlphaGo 横空出世,让我们见识到了“大数据 + 机器学习”的巨大威力。
所以,我同意这样一种说法:在未来,软件开发将是“面向 AI 编程”,软件的核心业务逻辑和价值将围绕机器学习的结果也就是 AI 展开,软件工程师的工作就是考虑如何将机器学习的结果更好地呈现出来,如何更好地实现人和 AI 的交互。
我曾经跟一个同学讨论这个观点,他认同面向 AI 编程,但是他认为:这并不意味着我一定要懂 AI,也不一定要懂大数据和机器学习,我只要懂业务,理解机器学习算出的结果就可以了。
真的是这样吗?只需要懂业务就能在“面向 AI 编程”的时代胜任软件开发的工作吗?
在阿西莫夫的科幻经典巨作《基地》中,描述了这样一个场景:在银河系,随着战争的蔓延,很多星球的科技在逐渐退步,到后来,他们虽然还有核电站等高科技产品,但是已经不知道是如何运作的了。而在银河系的边缘,有一颗小星球,在大战爆发前从银河系各处转移来了大量的科技文献,这颗小星球也没有加入战争并将科学技术一直传承了下去。
后来,当其他星球的科技产品出现问题的时候,就会向这个小星球求援,小星球会派工程师前去维修。但是他们并不管工程师叫工程师,而是叫“僧侣”;也不管核电站叫核电站,而是叫“圣殿”;维修也不是叫维修,而是叫“祈祷”。
他们的说法是:因为这个星球上的人做了不该做的事,比如发动战争、破坏环境等,触怒了神,所以神怪罪下来,让他们失去能源,如果想恢复能源,就必须纠正自己的错误行为并向神祈祷赎罪。所以,当工程师进入核电站维修的时候,整个星球的人都跪下祈祷,当电力恢复的时候,大家纷纷称颂神的伟大。
你看,科学和宗教并不是互斥的,科学也可以成为宗教,当人们面对自己不懂的东西的时候,会倾向于用宗教的原理去解释。
如果未来是面向 AI 编程的,希望软件工程师不要把 AI 当作什么万能的东西。当机器学习结果出现问题的时候,我们既不要陷入某种不可知的“玄学”之中,也不要无谓的抱怨什么“人工智障”,而是应该积极参与到问题的讨论、分析和解决中去。这也是我的观点,即使自己不做大数据与机器学习相关的开发,每个程序员也应该懂大数据和机器学习。
将来,数据会越来越成为公司的核心资产和主要竞争力,公司的业务展开和产品进化也越来越朝着如何利用好数据价值的方向发展。不懂大数据和机器学习,可能连最基本的产品逻辑和商业意图都搞不清楚。如果只懂编程,工程师的生存空间会越来越窄,发展也会处处受限。
如果说,大数据技术和应用是一个技术的殿堂,希望我的专栏不仅可以带你找到进入大数据“殿堂”的钥匙,也能透视“殿堂”里的结构、装饰、家具,告诉你为什么用这些元素可以构建恢弘的“殿堂”,以及如何更好地利用这个殿堂的空间与设施,而不是你进入“殿堂”看到一张床就舒服地躺下,错失了更美的风景。
学习大数据最好的时间是十年前,其次就是现在!
欢迎你进入我的专栏,我们一起一探究竟。
文章作者 anonymous
上次更新 2024-01-14