技术达人 邹欣 专访

栏目: 编程工具 · 发布时间: 7年前

内容简介:技术达人 邹欣 专访

受访者:邹欣,微软中国首席研发总监,他在2007年出版了《移山之道》,于2008年出版了《编程之美》 (合作),于2014年出版了 《构建之法——现代软件工程》

小记者:龙星镖局 

(1) 假如要学习编程,是不是越早越好,不一定非要等到上大学?有些人建议学编程语言时先从 python 这样的语言入手,而后再学习C、C++这样复杂的语言,这和很多国内高校的顺序是相反的。你是什么建议?

兴趣爱好什么时候开始都行。关于第二点类似的讨论不少,例如这个 2009年的博客和评论 讨论了MIT 的入门课从讲授 Scheme 转到 Python 的故事.  今年斯坦福大学也换了入门课的语言, Java 换到 JavaScript 。 我觉得,在教学的时候,可以从各个方向给学生介绍 CS 的核心知识及计算机语言, 条条道路通罗马, 下面的各种道路都可以试一试:

  • 物理 -> 电子 -> 某种底层嵌入式应用 -> 机器代码 -> 汇编 –> 高级语言
  • 数学 -> 数理逻辑 -> 形式语言与自动机 -> 计算机语言理论 -> 某种计算机语言 (这种道路让人想起高德纳老师)
  • 容易理解的语言如 VB和计算机游戏 ->学习UI编程 -> 学习语言设计 –> 设计符合自己要求的语言和工具 (参见 轮子哥的成长

学校的教学有它自己的很多限制, 学生的质量和基础,老师的能力,学校的培养计划,学期的长度(13 – 15 周),等等。 我认为入门课不妨生动活泼一些, 让学生有足够的动手机会。 另外,语言是否 “复杂“,是由各种因素决定的,如果你隐藏了细节, 很多复杂的东西也很简单,例如: C++ 的 cout/cin  语句就比 C 语言的 printf()/scanf() 简单多了, 当然,如果把这些问题都讲透了,这些都不是太复杂。问题是:

  • 老师有没有能力把这些讲清楚
  • 把这些讲清楚,对学生后续的学习有没有直接的帮助?

(2) 国内和国际上对软件工程的教育差别在哪里?

比较双方代码量的区别就知道了。另外看看学生的吐槽: http://www.cnblogs.com/xinz/archive/2013/02/06/2908169.html

国外的好老师,真的把教学当作一个严肃的课题来做,按照教学规律、软件工程的规律来搞教学,请看这个例子: https://zhuanlan.zhihu.com/p/20610349

(3) 计算机系和软件学院的老师有区别么?

你在校园里面碰到老师,如果他们号称搞科研的,那:如果她是计算机系的,你可以问老师:你 发现 了计算机科学的什么 客观规律 ?如果是软件工程的,你可以问:你 构建 了什么样的软件?你发现了 工程 的什么规律?如果这些老师号称是搞教学的,那如果她是计算机系的,你可以问老师:你如何启发学生认识并掌握计算机科学的 客观规律 ?如果是软件工程的,你可以问:学生怎样从你这里学习到了编程技术,并掌握了软件 工程 的规律?

(4) 公司面试,如何看待面试前先刷题?

这个没啥好说的,别人面试前做什么,公司管不着。如果公司看不出一个人的真正水平,那就是这个公司的问题。

(5) 你带过很多程序员,你觉得优秀 程序员 有哪些共同的特点?

动手能力强, 发自内心地想把事情做好。

(6) 业界有很多 设计模式 相关的书籍,读的时候很有感觉,但具体应用时候又觉得无所适从,这是为什么?

我喜欢下围棋,也看过不少围棋书。 有这样一个说法,如果光下棋不看书,水平就停滞;看一本围棋书再实战,棋力就会下降一级。当然,如果继续实战,棋力会涨回去,甚至超过原来的水平。所以,要理论和实战相结合。

(7) 你是软件工程领域的行家,出版过《构建构建之法——现代软件工程》一书,如何理解书名的“现代”?软件工程方法论有过时的说法么?

古书上说 “世易时移,变法宜矣”, 方法论当然要随着时代的变化而调整。 我们要问的是, 世易了么?时移了么? 开发软件的需求方变化了么? 开发软件的理论基础变了么?开发软件的 工具 变了么?软件从业者的情况变了么?团队交流的情况变了么?这些变化的因素是本质的变化, 还是非本质的变化?

很早以前就有嵌入式开发, 这个和最近兴起的IoT开发有什么异同呢?很早以前有批处理系统,写数值计算的程序,通过纸带输入,过一天才有结果输出。 现在有深度学习,投进去数据和各种参数,也要很久才能得到一个结果。 这两种是一样还是不一样?改变的因素是本质的, 还是非本质的?

(8) 你的《构建之法》以及和老师的合作 ( http://edu.cnblogs.com ) ,似乎很看重实战,我也听到不少大学领导说 “我们大学的教育使命,和职业培训是有区别的,我们要讲大学之道,培养科学家...”,你怎么看这个问题?

中国的大部分大学,培养学生的目的是让他们成为合格的职业人士;还有一些学校,要培养学生当科学家,当然也很好。不过,一些人把科学家和其他职业人士对立起来了。 科学家也是一种职业,不能以特殊性否定普遍规律 -- “我要培养白马,所以培养马的规律不适用于我“。  中国的大学在招 “科学家” 的时候,招聘流程和其他行业招人也很类似,说明也是按 “职业” 的规律来招人的, 而且有些学校通常会限定许多条件, 例如必须在国外获得某些学位等等, 这么说中国的大学培养不了科学家? 这不是和上面提到的中国大学主要目的互相打脸了么?

科学家(或者说科技工作者)也是一类职业,也有它本身的规律,也有原理,知识,技能。 它不是隔绝于其他职业之外,而是和其他职业有很多共性。成功的科学家和成功的其他职业人士一样,展现出良好的分析,表达,个人管理,时间管理的能力,正确处理 “合作+竞争”的关系,还有项目管理的能力,等等。 这些能力的获得,都需要练习,特别是 “专注的,有反馈的,持续改进的” 练习。为何这些技能不能在大学里训练呢?这样的训练不就是职业培训的一种方式么?

科学家作为一种职业,也要持续地给自己充电,有些通过脱产读更高一级的学位,博士后,有些通过出席研讨会、阅读、参加课程来学习。例如最近一些科学家都参加了如何使用 “云计算” 来帮助科研的课程,或者参加 “教育心理学” 的课程。 科学家在参加这种课程的时候, 也有企业的人员或老师参加, 大家不都是一样职业的培训么? 为何看不起 职业培训 呢? 在培训过程中,有人获得顿悟,立即成为 “完整的人,高尚的人”; 也有人是渐悟,逐渐提高了自己的修养;还有人就是学到了一些技能,这也无妨,对吧?

或曰:"大学是培养人心智的地方,急于把自己安塞到社会中的某个岗位会让大学生急功近利,失去本真的学习快乐。" 对IT 专业来说,心智如何培养?平时抄作业,考前哀求老师画重点,就能得到心智? 想偷懒,不想面对现实,那就直说 ,不要拿“心智”来搪塞, 要格物致知,要深入研究,练习,要分析IT行业发展的源和流。 没有脚踏实地的实践而奢谈 “心智”, 仿佛临渊羡鱼,或幻想空中楼阁。

“大学之道,在明明德...”  , "为天地立心,为生民立命,为往圣继绝学..." 古人的话,真的很美。但别自我麻痹太多,现代的大学之道应该能分解为可衡量的,可执行的,可具体传授的各个部分。教育者要分而治之,把大学生的 职业培养 搞好,让大学生毕业后能跻身于一流的研究院或大学,一流的企业,或者,毕业生去了一些普通的单位,甚至没有单位,但是他们有信心在社会上自立。这,就是最基本的大学之道。

(9) 很多计算机、软件工程领域的同学看了很多编程方面的书,但实践中还是感觉写不出来好代码,你觉得最大的原因是什么?

看得太多,想得太多,写得少,从实际世界得到的反馈太少。

(10) 当前计算机领域的工作越来越细分,很多职位只负责算法模型调研,实际的编程实现有工程团队在做,经常出现需求不能正确实现的情况,有没好的建议?

就像足球队那样,有分工,但是目标是一致的  -- 赢得比赛。需要的时候,后卫也要射门,前锋也要防守。负责模型调研的应该要把全栈做一两遍,才有全局的感觉。 写程序,搞研究,目的是各种各样的,要想清楚自己和团队的目的是啥。请看 https://zhuanlan.zhihu.com/p/20003750

(11) 20几岁的软件工程师最担心就是:30岁之后怎么办? 30岁之后的软件工程师最担心的就是:35岁之后怎么办? 你怎么看?

21 世纪以来,中国大陆每年招收六百万大学生,其中的百分之十是在学习各种IT 相关的专业(计算机科学与技术、计算机工程、计算机软件、软件工程、管理信息系统等)。扣除读研究生(最终大部分也会走上工作岗位)、出国等分流,同时考虑到培训机构给就业市场贡献的大量劳动力,每年大致有四十万到六十万左右的“软件工程师”进入工作岗位。他们都是以什么样的心态对待这一职业的呢?在工程师抱怨这个行业的同时,我们可以由低到高,看看人们对职业的态度有哪些等级:

a. 临时的寄托或工作 ( Temporary Work)

在大学你会看到很多人选IT专业的原因和“热爱”没有什么关系,有些人是因为专业调剂来到这里,有些人是因为要拿一个文凭作为敲门砖(例如,跨专业考上软件专业的研究生,然后计划以硕士的资格去考公务员)。 他们处于低动力, 低技能的状态。

b. 工作 (Job)

这就是一个能挣钱养家的营生,如果别的营生更赚钱,那就会跳到别的地方去。一些人留在这个职业,只不过是因为他不会做别的。这些人会经常问“软件开发做到35岁以后怎么办”这样的问题。当然,如果了解和体会了软件开发的投入和回报的关系, 这些人的心态会进步到下一个阶段.

c. 职业 (Profession)

在工作的基础上,能加上职业道德,职业规划。只有在这个层次上可以开始谈有意义的“职业发展”。他们对“30岁以后”、“35岁以后”都有一定的打算。

d. 投身的事业 (Commitment / vocation)

把软件项目相关的目标作为长期的承诺,碰到困难也不退缩,一直坚持到完成任务。

e. 理想的呼唤(Calling)

一些人觉得这是理想的呼唤,通过软件可以改变世界,他们主动寻找机会,实现自己的理想。

(12) 很多读者会问,  我怎么知道这个工作就是我的事业, 或是理想的呼唤呢?  我上课、上班不用心,正因为这不是我想投身的事业,我想投身什么我也不知道,但是肯定不是正在学习的软件工程!

这些读者可以参考一下 Emanuel Derman 的故事,他从小喜欢物理,认为这就是“理想的呼唤”,在名校拿了理论物理的博士学位之后,非常想做“纯物理”研究,很看不起应用物理,更不用说其他工作了。但是由于经济和能力的原因,他不得不去一般的大学做物理老师,和家人两地分居,郁郁不得志。在35岁的时候(很多中国IT人士认为是程序员的职业终点),他改行做了贝尔实验室某不太重要部门的程序员,在那里领悟到了编程的优美和挑战;几年后他跳槽去华尔街证券公司做程序员,第一个项目是把交易员用的命令行程序改造为GUI 的程序(听起来也不是很高大上),也经常被资深的交易员呼来唤去,令人不爽。但是他坚持学习金融知识,做各种金融分析,逐渐成长为金融风险研究的专家,部门总经理(也被公司解雇过);最后在实践中把金融,数学,和软件融合在一起,在这个新领域提出了有广泛影响力的新模型,被评为金融界的 “年度金融工程师”。他最后去一流大学开创了金融工程 (Financial Engineering) 这门学科。他回顾自己的职业经历时说: "回首当年,我(的态度)的确是错了。任何事情,当你仔细探究,你就会理解它的量和质;当你对一个领域的神韵足够了解,并开始连接这个领域的表现形式和实现细节的时候,任何一个领域都是会变得引人入胜的。"

再多说一句,这么多年之后,大家发现 交易员的工作逐渐被程序和程序员取代了 。 如果我们对职业有认真的态度,那就能发现很多证明个人能力的方式。


以上所述就是小编给大家介绍的《技术达人 邹欣 专访》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Designing Data-Intensive Applications

Designing Data-Intensive Applications

Martin Kleppmann / O'Reilly Media / 2017-4-2 / USD 44.99

Data is at the center of many challenges in system design today. Difficult issues need to be figured out, such as scalability, consistency, reliability, efficiency, and maintainability. In addition, w......一起来看看 《Designing Data-Intensive Applications》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具