老派程序员:徒手实现伟大成就

当在读Peter Seibel的精彩著作《编程人生:15位软件先驱访谈录(Coders at Work)》的时候,我发现一些老派的程序员(我是这样尊敬的称呼他们的)是非常的有趣,比如Ken
Thompson
,Joe Armstrong 和 Jamie Zawinski,他们开发软件时几乎不用任何现代的工具和技术技巧。

ken thompson

Ken Thompson是B语言(C语言的前身)的设计者,也是Go语言的设计者(与 Rob
Pike
合作)。在贝尔实验室工作的时候,他和Dennis Ritchie一起开发实现了C 语言和最初的Unix操作系统。一次在新泽西的晚饭上,当他在餐具垫上设计出来UTF-8字符编码方法后,他通宵工作,在贝尔实验室的Plan
9 操作系统
里实现了对UTF-8的全面支持。就编程风格而言,他只通过printf语句来调试,几乎没有单元测试,他开发软件是先设计数据结构,然后从局部开始实现,中间利用临时的测试接口,最终到达整体完成,

Jamie Zawinski

Jamie Zawinski 在麻省理工的人工智能实验室使用Lisp工作,之后他领导开发了Lucid Emacs,也是用的Lisp语言,这个软件就是后来被人们熟悉的XEmacs。此后他加入了Netscape项目,开发Unix版的Netscape浏览器的前端部分,之后他又领导了Netscape
Mail的开发(两个项目都是用的C语言)。他也是只喜欢用print语句来调试代码。他的开发过程有时是先整体后局部,有时是先局部后整体,顺其自然,在必要的时候进行重构。开发时他几乎不做单元测试,他认为单元测试会耽误时间——他认为第一次就应该把代码编对,他反复这样强调。在他的观念里,这是个优先级问题,“你是愿意去开发出一个没问题的软件,还是愿意下星期就把它完成,选择一个,你们不能兼得。”

joe_armstrong

Joe Armstrong开发了Erlang编程语言,他还为爱立信开发开源的 Open Telecom Platform(OTP)框架。开发软件时,他喜欢在写代码前写尽可能完备的文档,特别是对有难度的项目,比如有关实时网络协议的。对于有难度的问题他喜欢先用原型解决,对于调试,他只是有print语句。他是一个面向对象编程的批评者,他喜欢像Haskell这样的函数式编程语言。他从未使用过IDE,他喜欢使用的是Emacs和命令行(不需要用键盘)这样的开发工具。

所以,什么样的工具和技术技巧是你成为一个伟大程序员的所必须的?是这些TDD、BDD、Scrum、敏捷开发、设计模式、极限编程等现代技术吗?这些只是花瓶?还是为了用来实现更大的目标?或者这只是说明了有天赋的程序员不管使用什么工具都能走上自己成为伟大程序员的道路?

我个人的观点是,做一定程度的TDD、保证合适数量的单元测试,这些都是作用巨大的。因此这些现代技术才被看作是能够让我们工作更加容易、更有效率的科技进步——尤其是对那些非天才级别的程序员。

时间: 2024-11-01 12:51:24

老派程序员:徒手实现伟大成就的相关文章

什么原因成就了一位优秀的程序员?

这些年我曾和很多程序员一起工作,他们之中的一些人非常厉害,而另一些人显得平庸.不久前因为和一些技术非常熟练的程序员工作感觉很愉快,我花了一些时间在考虑我佩服他们什么呢?什么原因让优秀的程序员那么优秀,糟糕的程序员那么糟糕?简而言之,什么原因成就了一位优秀的程序员呢? 根据我的经验,成为一个优秀程序员同年龄,教育程度,还有和你赚多少钱没有任何关系.关键在于你的做法,更深入地说,就是你的想法.我注意到我所钦佩的程序员都有一些相似习惯.不是他们所选语言的知识,也不是对数据结构和算法的深入理解,甚至不是

八块腹肌:硅谷程序员的新标配

人们总是说硅谷的新陈代谢正在火箭式上升,这当然是一个用来形象说明利润.创新.产品或服务激增的比喻.但现在,这一幕就切切实实地发生在我们眼 前.科技行业的文化正在转变:健身已经成为所谓brogrammer(意指善于社交,喜欢出外玩乐的程序员)的新嗜好.软件开发人员一向把世界视为一系列 需要优化的系统.现在,他们开始用这种本能来观察自己的身体.让我们权且将它称为"高效技术人员的六块腹肌"--堪比健美运动员的身材,加上PHP思维的 头脑. "我做梦也没有想到这一幕," 4

码农故事:一位中级程序员的自白

我是一名中级程序员. 我有相当不错的基本技能.我犯了足够多的错误才明白为什么那些被称为错误.我很清楚我还需要了解更多东西.最重要的是,我知道那些东西大概是什么,并且我正在努力而积极地提升自己. 勇敢地承认自己不过是水平一般的程序员,这花了我一些时间.我不再感觉有必要去抓住那些我并不了解的观点.当人们发现我对某样东西不了解时,我也不再感到害怕. 事情并非从来如此.你可能对此不以为然,但是我曾经自诩为编程大师. 这种对自己能力的不正确的评估,很大程度归因于我在一个相对封闭的环境中学习技能.在过去那些

很认真的聊一聊程序员的自我修养

今天谈一谈,程序员提高自我修养是为了什么?     程序写的好有人崇拜,有妹子喜欢?还是到博客.论坛.社区发表文章进行分享获得成就?我想这是少数人的追求,也是更高的追求,在这之前 我认为,在中国,程序员提高自我修养的目的,是为了 1.更好的融入工作,减少困难,增加成就 2.稳步的提升能力,提高收入,达成财务自由 2.站在更高的层面看待自己的学习和工作,树立更加适合的人生观价值观,家庭幸福,生活愉快 说的更通俗一点,就是用更加合理的方式和方法,赚取到更多的收入   说了这么多废话,进入正题 何为程

程序员之路——一个老程序员对刚上大学的学弟学妹的忠告

始终认为,对一个初学者来说,IT界的技术风潮是不可追赶. 我时常看见自己的DDMM们把课本扔了,去买些价格不菲的诸如C#, VB.Net 这样的大部头,这让我感到非常痛心. 而许多搞不清指针是咋回事的BBS站友眉飞色舞的讨论C#里面可以不用指针等等则让我觉得好笑. C#就象当年的ASP 一样,"忽如一夜春风来,千树万树梨花开",结果许多学校的信息学院成了"Web 学院". 96, 97级的不少大学生都去做Web了.当然我没有任何歧视某一行业的意识. 我只是觉得如果他

程序员生涯之我见 找到自己的兴趣所在

程序|程序员 在海外有很多中国人在从事程序员这个职业.我认识很多这样的朋友,发现许多人并不快乐,只是将这个工作当成养家糊口的工具.还有许多人工作努力而不能入门.我曾经在很长一段时间内也有过困惑,但最后终于走了出来.在这里谈谈自己的看法,希望对大家有一些启发. 俗话说"兴趣是最好的老师".这话很有道理,但运用在事业上往往并不是这么一回事.在学生时代你可以追随兴趣天马行空,为未来作各种各样的设想.坚韧不拔而又有些运气的在后学生时代仍可在预设的道路上跋涉前进,甚至一帆风顺.而绝大多数同仁们则

15 位顶尖的牛叉程序员

现如今程序员是越来越多了,所以优秀的程序员也是越来越多了.但是他们中哪些才是顶尖中的顶尖呢? 其实要明确地指出"哪一个"程序员是最优秀的,这几乎不太可能,但是业内的开发者们还是对这个话题乐此不疲.ITworld 就通过投票,以及对其他国外社区(比如 Quora.Reddit)中的数据进行分析,来判断排名和分析是否一致.结果,有一些名字确实在大家的讨论中反复出现. 下面就让我们来看看依然健在的最受大家认可的 15 位优秀程序员: (小编先补充声明,下面排序并不是按个人成就.如果你喜欢的大

小小游戏程序员2年10个月工作总结(第三份工作,离开腾讯)

很久没有写总结了,也不是因为没事可以总结,而是因为缺少一个合适的时机.今天是该为我的打工生涯写篇总结了,因为今天我正式从腾讯离职,加入hortor,开始创业. "做一个有追求的程序员",这是Leo说的.他认为一个优秀的程序员应该具有,谦虚.包容.开放.责任心.自尊而不自负.理性思考.怀疑一切.执着.实践总结.知其然更知其所以然的特质.这些都没有错,但是,唯一没有谈到,什么是程序员的追求,也许,Leo的文章中说的追求,就是追求做一个优秀的程序员吧.刚好是我要走的时候看到的此文,并且文章的

为什么程序员的社会地位不高?

到目前为止,在过去60年中在世界排名前20的国家中,没有哪条街是以程序员或者计算机科学家的名字命名的.没有任何一个世界主要城市拥有程序员或者计算机科学家的雕像.没有程序员或者计算机科学家获得过总统奖章(Presidential Medal)或者国会金质奖章(Congressional Gold Medal).没有国家级别的针对程序员或者计算机科学家的颁奖典礼. 但是我们有艺术.运动.经济.娱乐等大型颁奖典礼.更没有红地毯或者类似诺贝尔奖来表彰程序员的成就和为人类作出的贡献. 即使程序员.计算机科