首页 行业资讯正文

AI 人工智能时代程序员将往哪走?

导读:6月21-23日,2019 GIAC全球互联网架构大会将于深圳举行。GIAC是面向架构师、技术负责人及高端技术从业人员的年度技术架构大会,是中国地区规模最大的技术会议之一。今年GIAC邀请到了众多布道师、明星讲师以及105位来自Google、微软、Oracle、eBay、百度、阿里、腾讯、商汤、图森、字节跳动、新浪、美团点评等公司专家出席。

在大会前夕,高可用架构采访了本届 GIAC软件工程分论坛 出品人邹欣,就目前大家广泛关注的软件技术方面的问题进行了访谈。

邹欣,现任微软亚洲研究院首席研发总监,参与AI 平台的研发和推广工作。从1996 开始,他在微软Outlook,Visual Studio、Bing、Windows 团队从事研发工作。 他在亚洲研究院从事过多年的技术创新项目,推出了FaceSDK 和学术搜索等创新产品。 他于2007年出版了《移山之道》,于2008年出版了《编程之美》 (合作)。2014年出版了《构建之法 – 现代软件工程》, 已经成为40多所大学的软件工程教科书。

邹欣:我现在在微软亚洲研究院工作,和同事们做一些AI 平台的研发,同时做一些和AI教育相关的工作。在这之前,我在Office、Visual Studio、Bing、Windows 等团队都工作过。

GIAC组委会 :您先后出版了《移山之道》、《编程之美》、《构建之法》等多本计算机畅销书籍,尤其是《构建之法》,被 40 多所高校当作教科书,可以说业内很多人都受益匪浅,能否跟我们聊聊您写书的初心是什么?关于写技术类书籍,您有什么样的心得体会分享给其他的作者?

邹欣:当时就是觉得自己有一些经验可以分享,就开始写博客,然后花了很多时间整理出版了第一本书《移山之道》,一些人告诉我说这个书名听上去像是一本哲学书,可能因此卖得很不好。但是有了第一本书的经验之后,在编辑的帮助下,我和一些实习生一起写《编程之美》,就容易多了。 第三本书《构建之法》是我在一些学校讲软件工程课,培训,和我自己软件工程经验的总结,每年我都发现有一些新的体会和资料,于是就不断更新出版,现在已经是第三版了。

写书的大部分时间是处于“半杯水”状态,你积累了一些书稿,悲观地看,觉得书还有一半没写,已写的内容也有很多要改进的,不知道哪一天才能完成; 乐观地看, 书已经写了一半, 再加把劲,马上就可以写完了(哈哈)。 我觉得首先要自己享受这个过程,其次要有持续努力,既然不是天才,就把自己当作一匹乐观的驽马,驽马十驾,功在不舍。

GIAC组委会 :提到软件工程,很多年轻人可能觉得是一种束缚,没有那种极客式的自由,对此您怎么看?能否给大家分享一些软件工程的成功案例?

邹欣:可以用跑步打一个比方,例如大家跑一百米,很多人没什么准备就全力跑,途中不太讲究姿势和动作,就是放飞自我,最多二十秒就过去了,成绩好坏也无妨。如果你是跑马拉松,那你是不能随便跑的, 要讲计划,要学会跑前热身,跑后拉伸,要讲究心率,核心能力,姿势,等等。这些都是你随意跑一百米的时候不要考虑的,从某种意义上看,也是一种束缚,但是没有这些束缚,就跑不了马拉松。

例如,你很少锻炼,但今天晚饭后,突然记起来你明天要跑一个半马,你现在要做什么样的准备,才能跑完全程呢? 可能做什么都不行了,软件工程的项目管理能避免这样的事情发生。

自由往往是来自于自律,和持续不断地改进。 我对 “极客式的自由”具体了解不多, 我就好奇,没有自律,没有长时间的刻意练习,能有极客的自由么?

GIAC组委会:从门户时代到移动互联网时代再到AI 时代,您觉得软件工程都经历了哪些重大的改变?

邹欣:软件工程的工具在过去的二十年中发生了很大的变化,软件工程的流程也有很多新的尝试(例如敏捷思潮),软件工程的核心倒是没有太大变化, 还是那句话,没有银弹。

我们用UML 做一个例子, 像任何新技术一样,以UML为代表的图形化分析方法的确解决了不少实际问题,但是也引发了一些误解、误用、狂热和“银弹”的信仰。UML的设计者和推动者之一Grady Booch说到: 在UML 出现之前和之后,软件项目成功的关键依然是 – 智慧地使用技术、遵从一个好的软件开发过程、有经验的开发者、和适当的技能组合。

这就是说,不管任何新技术如何宣称自己能解决大问题, 软件项目成功的关键依然是上面提到的四个要素。那么,我们怎么能更有效率地提高我们在那四个要素的修为呢? 这就是每个团队领导要考虑的问题。 搞定了这些因素,其他次要因素也就能解决了, 例如, 你找到了有经验的开发者,和良好的软件开发过程, 那么他们自然会找到合适的持续集成和发布的工具 (CI/CD),而不用老板亲自去关心这些细节问题。

GIAC组委会:听说您最近在研究AI?能否简单跟大家分享一下您学习AI的心得和成果?我们都知道,AI是有门槛的,而且在很多人的认知中,换方向是一个特别困难的事情,您是如何做到的?您觉得从事AI应该具备哪些知识、技能和素质呢?

邹欣:的确,学习 AI 是有门槛的,但也是有规律的。而且学习AI 并不是自古华山一条路, 有人可以从数学角度出发学习, 有的人喜欢从代码的角度学习,我和团队的小伙伴在学习AI 的过程中,摸索了一套从代码开始,在实践中体会各种深度学习的概念和算法的学习路径,我觉得这对于程序员来说是挺适合的一种学习方法 --- 如果我能看懂核心的深度学习模块的代码, 或者这个代码就是我自己写出来的, 那我就可以了解它是如何工作的了。

我们正在把这个学习途径总结在我们的 GitHub 项目中,大家有兴趣可以去看看(https://github.com/microsoft/ai-edu/tree/master/B-教学案例与实践/B6-神经网络基本原理简明教程/)。

当然,AI 的领域非常广泛, 应用也很多,没有一种技能组合适用于所有人和所有情况。我觉得要从结果出发,你想解决什么样的痛点? 达到什么样的效果?你目前能做到的和你想要达到的差距有哪些?分析之后,开始弥补差距就好。

GIAC组委会:很多人认为AI会根本性地颠覆我们开发软件的方式,那它到底是增量的改进,还是真正的颠覆?

邹欣:人工智能是不是会颠覆软件开发的方式?我认为并不会。要推出一个好的人工智能模型也需要版本控制,需要工程师去合并、分支、比较这些版本。我们认为人工智能会成为软件开发的一部分,研究人工智能模型的数据科学家最终会融入软件开发过程中,和工程师、人机交互设计师和项目经理一起合作,做快速迭代、持续集成、持续发布的模型。而且,AI 技术本身也在快速发展过程中,只要是能通过大量训练找到规律的事情, 它都会做得越来越好,它还能颠覆AI 技术本身。例如,人工智能行业中的数据清洗、建模调优都可以由人工智能自我来完成。 回到基本的编程, 我们知道在CSDN,GitHub,Stack Overflow 以及MSDN 上面有海量的关于编程的问答, 有很多源代码,注释,等等信息,这些信息能用于训练 AI,最后 AI 能自己从网上找到源程序, 自己编程么? 这些想起来很奇妙, 其实, 一个普通的程序员一天大部分时间都是在 “通过搜索引擎来攒代码”, 他也是东找西找来拼凑自己的程序, 那么,让一个 AI 来做类似的事情,是不是也顺理成章呢? 如果程序员的低技术含量的 “攒代码” 工作被工具取代, 那么他的独特价值在哪里呢,这的确值得程序员思考。

GIAC组委会:这么说,有了强大的 AI, 程序员的生存空间就会减少么?

邹欣:这未必, 软件开发仍然是有很多事情要做的。AI 时代的软件开发,除了继续要了解用户需求之外, 还要处理好算法,算力和数据。 例如公司买了10块 GPU 卡,怎么让30 人的团队能有效率地使用这些资源? 那就需要一个分布式管理系统来管理。 微软亚洲研究院最近开源了这样的一套系统 OpenPAI (https://github.com/Microsoft/pai), 大家可以去试用一下。 如果我要做很多AI模型调参数的工作,怎么办? 可以参考微软 NNI (https://github.com/Microsoft/nni)工具以及其他类似的工具。

GIAC组委会:您在《构建之法》中提到了软件工程师的成长。从您的经历看,一直都在稳步成长。您个人觉得哪段经历对您个人成长帮助最大呢?为什么?能否结合自己的成长经历,给初入职场的人总结一下您认为最重要的一点建议?对于想快速提高自我的人,有没有您觉得帮助很大的书单推荐一下?

邹欣:哪一段的经历都是有帮助的,当然,在年轻时通过锻炼积累的经验, 在以后的工作中可以不断地提供复利,这是最好的。在年轻的时候要做一些有难度,有挑战的项目。 我也在高校教《软件工程》课, 看到学生的各种心态,有时候想劝劝一些学生,但是大学生往往听不进别人的劝说。 其实,大家上大学的时候,那些给你放水的老师,其实是害了你。

哈哈,书单,这是一个常见的问题,我经常在网上看到很多书单,然后下面有很多评论,说“收藏了”, “以后会看”等等。 我怀疑很多人事后都忘了看,然后继续在其他类似的书单下面会发表类似的评语。

我也有一个和软件工程、创新相关的书单,一共有 70 多本书,感兴趣的人可以搜索一下。但是,软件开发不是报书名,背菜谱,而是实干。我觉得最好的学习方法,就是进入这个领域,做一些力所能及的事情,然后再把经验分享给别人,或者教育初学者,如果你能做到这一步,那么你的确是学会了。

GIAC组委会:GIAC 的软件工程专场,邀请到了您、孤尽、郑晔、范飞龙等众多业内大咖,作为专题的出品人,在议题甄选方面,您是如何考虑的?

邹欣:首先要感谢各位演讲人花时间整理和分享自己的独到心得,而且这些心得是来自第一线的亲身体会,不是道听途说的心灵鸡汤。 内容的安排,大致是从个人到团队,从微观到宏观,从当前的热点到历史经验,希望听众能有所收获。具体来说:

郑晔:从个人的角度,如何提高工程师的工作效率,和自我的管理。

范飞龙:软件开发日常工作,很多时间都花在各种小事情上了, 如何处理软件开发过程中那些碎片化的问题?逐渐提高流程的效率。

孤尽:很多小问题拖着不解决,就会成为大问题,这时候要考虑重构,那么,怎么决定是否重构,如何有效地重构。

邹欣:从历史的角度,一个软件公司在 40 年的时间里能几次站在技术的浪潮之巅,它的软件工程实践是怎么演化的,这些经验教训对于小型团队有帮助么。

GIAC组委会 :最后,您对GIAC大会有什么样的寄语?

邹欣:首先,是培训的价值,很多人觉得公司都很忙,没时间搞什么培训。英特尔公司的创始人,安迪葛洛夫曾经提到了培训价值的算式:

假设公司花了12小时的时间备课并给10个员工培训 4小时。总共花费12 + 10*4 = 52 小时。在培训后的一年中,这10个员工会有20,000 个小时的工作时间,如果培训能提高1% 的效率,那么公司将会节约200 小时。(附加题:如果是996 的工作方式,能节约多少时间?)

大家可以把这个算式分享给各自的领导。

另外,最近IT界的热点新闻不断,很多同行在讨论热点的时候注意到了,很多领域表面上的泡沫可能很绚丽多彩,可以吸引很多目光,但是核心问题仍然是:我们掌握了这个领域的核心技术么?对生态系统贡献了独特的价值么?如果没有,那么说一千道一万,到了关键时刻还是受制于人。GIAC 大会的每一个与会者都应该想一下,我个人要培养什么根本的技能,我的团队现在要掌握什么核心技术?在将来能输出什么独特的价值?

版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

评论