查看原文
其他

和编程大师,来一场对话

小雪 看雪学院 2019-05-25

有人说,想要成为某个领域的专家,就应该向那个领域最顶尖的人学习。

想要成为优秀的编程人员,或许就应该看看这个世界上的那些编程大师,他们是如何走上了巅峰?

从一无所有开始,仅凭一支铅笔、一个记事本以及坚定的信念,就此开创出丰功伟业,那些编程大师们是如何创新并改变了世界的?

如果你是一个喜欢听故事的人,那么《编程大师访谈录》这本书将会很适合你阅读。


这是一本访谈笔录,作者是毕业于斯坦福大学,拥有英语文学士学位的Susan Lammers。她还是多媒体领域的先锋,曾是微软公司早期的多媒体出版部联合出版人和总监,负责微软最早的交互式媒体项目,包括微软的电子百科全书Encarta(英卡塔)。



本书的采访内容源于上世纪80年代,作者采访了19位计算机行业先驱人物,包括有比尔•盖茨、迈克尔•霍利、岩谷徹、加隆•兰尼尔、雷•奥兹,以及其他许多仍然在积极影响软件行业发展的人。


在近年出版的中文版序中,Susan Lammers谈及到这些旧日访谈之于今天的重大意义:


 “我对PC革命先驱的访谈,就是要把你直接带入这些杰出的年轻程序员富有想象力和创造力的大脑中,看看他们是如何思考并迸发出新思想,然后怎样逐步完善,再投入到艰苦卓绝的编程工作中,最终得出大众需要使用的工具。多年以来创新过程的根本并没有什么变化,因此,这些访谈内容在今天看来依然很有价值,发人深省。”



接下来,我们看看编程大师们面对Susan Lammers的提问,谈论了些什么?(注:下文是以第一人称的访谈实录)

 


比尔·盖茨:优秀的程序员很重要,但不赞同独行侠的做法


生于1955年的比尔·盖茨,是美国著名企业家、投资者、软件工程师、慈善家。他与保罗·艾伦一起创建微软公司,曾任微软董事长、CEO和首席软件设计师,并持有公司超过8%的普通股,也是公司最大的个人股东。1995年到2007年的《福布斯》全球富豪榜中,比尔·盖茨曾经连续13年蝉联世界首富。2008年6月27日离开微软公司,并把580亿美元个人财产捐到比尔及梅琳达·盖茨基金会。《福布斯》杂志2014年美国富豪排名,比尔·盖茨以812亿美元资产重登榜首。


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


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


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

 


约翰·沃诺克:好程序在于能保持平衡,而不是靠奇技淫巧

沃诺克出生于1940年,是美国计算机科学家和商人,1982年,沃诺克和查尔斯·戈斯奇克博士共同创建了Adobe系统公司,Adobe也一举成为世界上最大桌面出版、电子文档和图形软件公司。在应用软件市场取得了丰硕战果,领导推出了面向消费用户的Illustrator、Photoshop等软件。


对好程序执行性能检查时,它的性能应该呈现扁平状。这表明代码里不存在瓶颈。好程序在于它能保持平衡,而不是靠什么奇技淫巧。


我从1963念就进入这一行,至今已经写了20多年程序。经年累月,经验愈加丰富,积累的算法数以百计;你牢记自己学到的技巧、处理过的缺陷以及误入的死胡同。你记得自己犯过的所有错误、取得的所有成功。可以说,执行特定人物就像是从大杂烩中选定菜目,排出一席美味佳肴。你可以左手一份美味右手一盘佳肴,但搁在一起可能味同狗粮。懂得巧妙搭配食材才称得上好厨师。同样,把程序各个部分妥善组合在一起,才是成就优秀计算机程序员之道。



查尔斯·西蒙尼:解决各种问题的必经之路是——“我试图做什么?”

查尔斯·西蒙尼,1948年生于匈牙利布达佩斯,原名西蒙尼·卡罗利,软件开发专家,匈牙利命名法的发明者,曾任微软公司的产品开发主任,是微软早期核心人员之一,后来离开微软创办Intentional Software公司。2007年4月8日,查尔斯·西蒙尼乘坐进步TMA-10号太空火箭按照俄罗斯联邦航天局的计划发射升空飞往国际空间站,成为第五名太空游客。


严格来说,对编程而言,我认为我们应该知道自己想要做什么。如果不知道,那么有一个过程确实是解决各种问题的必经之路,那就是要弄清楚:我试图做什么?目标是什么?


打个比方,我想开发一个菜单驱动的文本编辑器,要求相应速度快,并且提供拼写检查器等。再开始真正编程之前,我需要先弄清楚产品。有时候,目标的选择取决于我都掌握了哪些技巧。以Bravo为例,这个程序是以算法为引导的。巴特勒·兰普森描述了两个很有意思的算法,于是我们试图围绕这些算法来编写这个编辑器,以充分利用这些算法。


此外,J.斯特罗彻·摩尔(J.Strother Moore),就是Boyer-Moore字符串查找算法的Moore,在文档编辑方面有几个很有意思的算法。于是我们决定:“嘿,等待对目标有充分的把握之后,我才会开始真正的编程。我调整姿态,关上房门,并且大声宣布:“现在我要开始编程了。”


SusanLammers在《编程大师访谈录》中详细记录了与每一位编程大师的采访内容,19场谈话独具特色并且内容丰富的,想要成为优秀程序员、甚至下一个编程大师的你不容错过!


就像谷歌研究中心主任彼得•诺维格说的那样:


“你如果想了解一名程序员的工作,最好的方法就是去读读他们写的程序。如果没有机会读(或者读过以后),就来读读本书这样的访谈录吧……成为一名程序大师可能要花上十年时间,但细细阅读本书,会帮助你更快地迫近自己的目标,至少会让你对身边的程序员们有一个更清晰的了解。



参考来源:

  • 《编程大师访谈录》

  • 维基百科



- End -


(点击图片即可进入)



往期热门资讯:        





公众号ID:ikanxue

官方微博:看雪安全

商务合作:wsc@kanxue.com



点击下方“阅读原文”

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存