编程大师访谈人物——比尔·盖茨(样章)_编程大师访谈录书评-查字典图书网
查字典图书网
当前位置: 查字典 > 图书网 > 编程 > 编程大师访谈录 > 编程大师访谈人物——比尔·盖茨(样章)
出版圈郭志敏 编程大师访谈录 的书评 发表时间:2011-12-22 15:12:32

编程大师访谈人物——比尔·盖茨(样章)

《编程大师访谈录》已经上市,在本书中,最具影响力的当属比尔·盖茨,图灵社区将此篇访谈公布出来,供大家赏读。在访谈开始之前,先让我们了解一下这位大师级人物。

威廉·亨利·盖茨 (William Henry Gates)
昵称比尔·盖茨 (Bill Gates) 1955年10月28日出生,在西雅图长大。他的父亲威廉·亨利·盖茨是一位律师,母亲是一位教师,性格坚强,富有独立性,善于与人交往。盖茨是家中三个孩子中唯一的男孩,排行第二。从少年时代热衷于电脑游戏,富于想像力,14时不再上数学课,因为他已很好地掌握了数学知识。1973年进入哈佛大学法律系学习,19岁时退学,与同伴保罗·艾伦(Paul Allen)创办电脑公司,直到后来创办了微软公司,自任董事长、总裁兼首席执行官。1998年1月,他将总裁一职让给史蒂夫·鲍尔默,2000年1月13日,他宣布不再担任该公司的首席执行官一职,以便从对公司日常事务的管理中脱出身来,集中精力推进下一代视窗因特网平台及其服务工作。 2008年6月27日是盖茨在微软全职工作的最后一天。不过,现在他依然担任微软的非执行主席。

进入访谈:

作为微软的CEO,威廉•H. 比尔•盖茨(William H. Bill Gates)被认为是当今个人计算领域和办公自动化行业一个强有力的推动者。比尔•盖茨从年轻时就开始了计算机软件的职业生涯。当盖茨和微软的联合创始人保罗•艾伦还在华盛顿州的西雅图上高中时,两人就开始做起了编程顾问的工作。1974年,盖茨在哈佛大学读本科时,他与艾伦合作为第一台商用微型计算机MITS Altair开发了一套BASIC编程语言。在那个项目顺利完成后,两人创办了微软公司,为新兴的微机市场开发并销售软件。

微软为软件产业在编程语言、操作系统和应用软件等各方面设定了标准。盖茨为微软提出了新产品的创意和技术发展的远景。在开发新产品时,他还会亲自指导技术小组,投入时间复审和完善微软所销售的软件。盖茨出生于1955年,是西雅图本地人,至今一直居住在那里。

*    *    *

采访者:显然,作为微软的CEO,你的责任重大。你现在仍在编程吗?

盖茨:我现在不编程了。我仍会在算法设计和基本方法上提供帮助,有时也会看看代码。但自从完成IBM PC BASIC和Model 100上的工作后,我就再也没机会自己动手编写程序了。

采访者:在微软的软件开发过程中,你扮演了什么样的角色?

盖茨:我做两件关键的事情。一是选择在程序中放入哪些功能。为了做到这一点,必须合理把握什么事情容易做、什么事情不容易做。还必须明白你追求的产品系列的策略是什么样的,并要关注硬件领域的进展。此外,我还致力于实现新功能的最佳方案,也就是如何把新功能做得既小又快。例如,我写过一个备忘录,是关于如何设计和实施Excel中的一项功能的:每当屏幕发生变化时,程序都要重新计算其中的公式。

在公司成立后最初的4年,我参与编写和设计了微软所有的程序。在所有这些最初的产品中,无论是BASIC、FORTRAN、BASIC 6800还是BASIC 6502,没有一行代码是我没有检查过的。但现在我们有大约160名程序员了,所以我主要是做产品和算法的复查。

采访者:你认为你在编程上最大的成就是什么? 盖茨:那得说是为8080编写的BASIC了,因为程序当时所产生的影响,而且因为我们设法把程序做得很小巧,非常适合当时的使用场景。那是我们决定创办微软时所编写的最早的程序。

我们三个人都清楚地记得那个最早的程序。我们得到了一个机会,在新墨西哥州的阿尔伯克基花了整整一个夏天,把程序彻底重写了一遍。我认为可以节省几个字节,让程序更精简。我们非常非常仔细地调试着,最终得到了那个4K的BASIC解释程序。

当你非常了解一个程序,觉得没有人在看了程序后会说“还可以做得更好”时,那种感觉真是太棒了,而且程序用在了很多机器中,让人觉得编写那样一个程序是件很兴奋的事情。

我还非常喜欢为Model 100编写的那个程序,特别是我们把一个非常有用的小编辑器压缩到了软件中。我和一个名叫杰米•铃木(Jey Suzuki)的日本程序员合作完成了那项工作。我们在非常有限的时间内完成了那个项目。如果编写的软件要烧入ROM,你是没有机会可以犯错的。

采访者:你认为计算机编程中最困难的部分是什么?

盖茨:最困难的部分是确定采用什么算法,然后还要尽可能地简化算法。做到最简单的形式是很难的。必须在心中模拟程序是如何工作的,必须完全了解程序各部分是如何一起工作的。最好的软件是其中有一个程序员完全了解程序的工作方式。要做到这一点,必须要特别热爱编程,集中精力让程序变得极为简洁。

采访者:随着计算机能力越来越强大、内存越来越多,编程会变得越来越复杂,还是会变得越来越拙劣呢?这对人们编写程序的方式会产生什么样的影响?

盖茨:我们已经不再生活在每一个程序都精雕细琢的时代了。但是你会发现,程序要做到顶尖,最重要的是,那些关键的内部代码都是由少数几个知道自己在做些什么的人编写出来的。

现在把程序压缩到4K的内存区域中已经不那么重要了。你在很多情况下会看到人们使用C语言,而不再使用汇编语言了。遗憾的是,很多程序都太大了,已经没有一个人可以真正了解整个程序的所有部分了,所以能得到的共享代码也不是很多。此外,因为一直要在同一个程序中添加新功能,所以也没有太多机会让你回去重写代码。

最糟糕的程序是原来的程序员在开始时没有打好基础,而他们也没有再参与到程序的后续开发中。在这类程序上继续工作就会遇到一种我所说的“实验性程序”的情况。程序员对那些程序了解得太少,他们不知道改动之后会影响什么,比如说会不会影响运行速度。他们可能会使用已经存在的代码,他们也有可能并不知道如果修改了代码,会破坏何种依赖关系。于是他们加入了新代码,并在运行之后说:“噢,看哪,它不是那样运行的。”这种处理程序的方法效率非常非常低,但很多项目到了最后却都是这样的。

采访者:在一个像微软这样有160名程序员的公司中,你是如何创造一个环境以确保能开发出成功软件的?

盖茨:一种方法是建立小型的项目团队,通常是四五个人一组,其中一个人经证实有能力掌控整个程序。如果这个项目带头人遇到不确定的事情,他会与经验更为丰富的程序员一起讨论。

我们的部分策略是让所有程序员在进入编码阶段之前都先想清楚每一件事情。编写程序设计文档是至关重要的,因为在把问题当做算法看的时候,问题会得到很大的简化。可以说算法是最简单的形式,从中可以看出问题在什么地方是重叠的。

另一个重要因素是代码复查,要确保代码是看过的,看看资深人士是否能提出如何做得更好的建议。而且你必须参考类似的、做得特别特别好的项目。程序员可以看看以前其他人是怎么做的,从其他项目获得改进自己程序的想法和经验。

采访者:那些程序的构思是怎么来的?

盖茨:嗯,说实在的,还真没有什么正式的流程。在微软,通常在晚上或周末会有一个集思会。大家会有些大致的想法,比如说,我们要做世界上最好的字处理器,我们希望技术出版部门借助这个字处理器能够做他们想做的每一件事。为此我们会坐下来讨论:怎样才能让程序真正快捷?能够嵌入绘图功能吗?能够让字体平滑但又不降低程序的效率吗?各种各样的问题都会透彻地讨论,接着就会出现一些好的想法。

采访者:大体说来,程序的构思是集体智慧的结晶?

盖茨:对于决定要开发哪些程序,我们有一个相当大的团队来提出建议。然后会有一个筛选的过程,最后由我决定哪些想法是有意义的。我要确保项目有一些项目带头人,能够亲自参与项目,确保产品开发成功。为了开发一个产品并制定新的世界级的标准,需要投入非常大量的资源,所以我们选择的项目会非常非常少。

采访者:很多人都在谈论大型软件公司要想吸引能开发出优秀软件的人才有多难,因为这些大侠都太特立独行了,他们喜欢独自作战。在微软,你们是如何吸引并留住那些优秀人才的?

盖茨:优秀的程序员对于软件产品的开发是至关重要的。但是我们不赞同独行侠的做法,不会仅仅因为一个人很优秀,就允许他在代码中不添加注释,或允许他不与其他人沟通,或是允许他把自己的想法强加给别人。

我们希望程序员能够相互尊重。我认为大多数优秀的程序员都希望周围有其他优秀的程序员。当他们想出了一个很好的算法时,他们希望周围有能够欣赏其绝妙之处的同事。因为你在构想那个算法、脑海中产生那样一个模型时,那是个寂寞的事情。如果你原来以为处理过程很复杂,但却找到一个办法,让过程变得很简单,那种感觉好极了。不过你需要从其他程序员那里得到一些反馈。如果已经有了几个优秀的程序员,就会吸引更多优秀的程序员。

传统的管理规则是,程序员的管理者总是一个更加出色的程序员,没有我们所说的“技术倒挂”,让程序员为一个不知道编程为何物的人工作。我们仍旧遵循这一理念:在一定的级别上,我们会用业务经理,但不会用非程序员管理正在开发的软件项目。

采访者:你认为开发优秀的程序有什么特定规则吗?

盖茨:有些人刚一进到项目中就开始坐下来编码,而有些人则在编码之前把所有的过程都想清楚,我认为你会发现那些一开始就坐下来编码的程序员只是在把那些代码当做草稿使用。那些在他们头脑中思考的内容才是最重要的。

你必须得有非常聪明的程序员。一个优秀的程序员会一直不断地思考所开发的程序,无论是开车还是吃饭。不停地思考问题,需要耗费大量的脑力。

全文请点击:http://www.ituring.com.cn/article/details/736

展开全文


推荐文章

猜你喜欢

附近的人在看

推荐阅读

拓展阅读

对“编程大师访谈人物——比尔·盖茨(样章)”的回应

木头人 2015-12-22 12:16:33

挺有意思的,比如提到的 code review,现在基本成为行业共识了,可以说起源就是始于此处吧

龙思 2015-08-27 14:16:33

总结:外科手术式的小团队管理是正确的;不code review是错误的