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

ken_thompson

ken thompson

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

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

Jamie_Zawinski

Jamie Zawinski

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

joe_armstrong

joe_armstrong

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

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

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

[英文原文:Old school developers - achieving a lot with little ]
分享这篇文章:

25 Responses to 老派程序员——徒手实现伟大成就

  1. 思想流氓 says:

    “他喜欢使用的是Emacs和命令行(不需要用键盘)这样的开发工具” 这里是不是写错了?应该是不喜欢用鼠标吧

  2. Thina says:

    command line (no mouse required).

  3. lyman says:

    “你是愿意去开发出一个没问题的软件,还是愿意下星期就把它完成,选择一个,你们不能兼得。”——这句译的也怪怪的。

    • 寻找小包子 says:

      这里估计是针对XP说的,XP里好像有个类似场景恢复的说法:如果你这次把时间做完,下次在开始的话,可能进不到上次的状态,所以故意将工作停留在单测通不过的地方……他估计是反对的这个吧

  4. Jeremy says:

    那…前端大牛是不是应该用alert编程?

  5. lys says:

    这些大牛不用写unit test的一个重要原因,他们基本上独立编写整个软件,所有的code都是自己写的,都在自己的脑子里,这样可以避免很多因为沟通不够产生的问题。普通人通常都是都是在一个大家伙里面修修补补搞一块东西,很多时候bug的产生都是因为不理解别人的逻辑,或者没有意识到其它部分的依赖。

    • dohkoos says:

      TDD、BDD、Scrum等等都是软件工程的概念。什么是软件工程?其实就是一堆人在开发软件,这里面当然需要一些标准来抹平沟通的问题。一个人开发的时候根本就没有沟通问题,当然是怎么效率高就怎么来了。

  6. haitao says:

    程序员有3级:新手,老手,高手,牛人不参与评级了

  7. liango says:

    那个时候还没有这么多概念这么多ide也是个原因吧

  8. cyler123 says:

    插一句和主题无关的话:
    改版后的网页丑爆了

  9. 忧郁 says:

    不喜欢现在的网页,再改回来吧

  10. ecc says:

    强烈推荐把左边的xx微博分享栏移走或者去掉,它让网页看着很挤。

  11. jizhask says:

    真的建议将左边的分享栏隐藏或去掉,让人看网页的时候会感觉很难受!!!

  12. 傲世狂少 says:

    站长,建议将页面布局调整调整,左边部分和右边明星比例失调,显得整体比较不协调,这种网站文字内容还应该突出,毕竟是it技术类网站。

  13. zhiguoxu says:

    第一次就把东西弄对,不要给自己留太多错误的可能

  14. jxqlovejava says:

    改版后的页面挺清爽的

发表评论

电子邮件地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.