当在读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、保证合适数量的单元测试,这些都是作用巨大的。因此这些现代技术才被看作是能够让我们工作更加容易、更有效率的科技进步——尤其是对那些非天才级别的程序员。

老派程序员:徒手实现伟大成就相关推荐

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

    摘要:本文介绍了三位非常著名的程序员:Ken Thompson,Joe Armstrong 和 Jamie Zawinski,他们是如何发明一门新语言,他们开发软件时会像我们一样使用当今流行的开发工具 ...

  2. 老派程序员浅谈Python的异常处理

    @本文来源于公众号:csdn2299,喜欢可以关注公众号 程序员学府 文章目录 一.与python异常相关的关键字 二.python中的异常类型 三.基本方式: 三.手动使用raise引发异常 Pyt ...

  3. 移动互联网时代,好程序员的标准是什么?

    在移动互联网迅速发展的今天,移动开发者的数量也是迅猛的增加,ios和Android开发者的数量更不必多说,程序员这个行业被很多人认为是高薪行业,可是他们也都不知道程序员其实也是公认的吃青春饭,程序员这 ...

  4. 作为程序员,要取得非凡成就需要记住的15件事。

    作为程序员,要取得非凡成就需要记住的15件事. 1.走一条不一样的路 在有利于自己的市场中竞争,如果你满足于"泯然众人矣",那恐怕就得跟那些低工资国家的程序员们同场竞技了. 2.了 ...

  5. 什么原因成就了一位优秀的程序员?(转)

    这些年我曾和很多程序员一起工作,他们之中的一些人非常厉害,而另一些人显得平庸.不久前因为和一些技术非常熟练的程序员工作感觉很愉快,我花了一些时间在考虑我佩服他们什么呢?什么原因让优秀的程序员那么优秀, ...

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

    这些年我曾和很多程序员一起工作,他们之中的一些人非常厉害,而另一些人显得平庸.不久前因为和一些技术非常熟练的程序员工作感觉很愉快,我花了一些时间在考虑我佩服他们什么呢?什么原因让优秀的程序员那么优秀, ...

  7. 成就优秀程序员的很多因素你知道多少?

    程序员想变得更牛逼吗? 导读:编程虽是复杂活,但成就优秀程序员的很多因素和我们在学校中最早学到的相差无几. 1. 分享所有 尽可能使用开源,并且当你有能力的时候,要对其有所贡献.聚全社会之智慧,胜过某 ...

  8. 从摩托罗拉、诺基亚再到航空领域应用,这款开源数据库的成功如何成就天才程序员?...

    作者 | Richard Hipp 编译 | 马超 出品 | CSDN(ID:CSDNnews) 如果说有什么事物能够使男程序员心中的父爱完全觉醒,那我想一定是投身于自己创建的开源项目中去了.在和熊谱 ...

  9. 作为程序员的他凭什么成就年薪100W架构师?

    08年毕业,工作10年,作为程序员的他凭什么成就年薪100W架构师? 享学课堂online 2019-05-30 13:56:31 华为能发展如此壮大,能直面一个超级大国动用国力来对其打压仍屹立不倒, ...

最新文章

  1. unittest ResourceWarning: unclosed socket.socket fd=864, family=AddressFamily.AF_INET... 解决办法...
  2. TCP客户机-服务器
  3. Design Pattern - Prototype(C#)
  4. ebay注册流程_跨境电商平台eBay企业入驻流程
  5. wcf双工通讯遇到的问题
  6. MySQL InnoDB存储引擎为什么要用自增的主键?
  7. linux下添加定时任务
  8. php全表搜索,搜索整个表? PHP MySQL
  9. css 魔方,css 3d旋转魔方
  10. 基于Linux利用PPP实现4G模块联网
  11. mysql全文检索 中文_mysql全文索引不支持中文的解决方案
  12. 深入理解虚拟内存机制
  13. 20155310《网络对抗》免杀原理与实践
  14. 笔记本外接RTX 2080显卡
  15. 寒江独钓NDIS驱动学习总结
  16. 深度学习CV(基础理论知识)
  17. 短波信道模型--多径瑞利信道原理详解及matlab实现
  18. python-OpenCV信用卡数字识别
  19. matlab积分练习,matlab练习之数值微积分和方程数值求解
  20. 树莓派更换更新源一直出现GPG错误显示没有数字签名

热门文章

  1. python+opencv直方图均衡化
  2. 记一次k8s pod频繁重启的优化之旅
  3. HTTP 500 - Internal Server Error 服务器内部错误
  4. tcp 与udp 的区别
  5. 大二综合项目:数据库Mysql,Navicat
  6. 用计算机弹一笑倾城简谱,一笑倾城歌词,一笑倾城歌词简谱
  7. canvas图片绘制-两张图片的叠加
  8. AI数学基础——经验分布,熵
  9. NAMD 中计算水分子沿某一放向的平均值 (tcl/tk 脚本输出数据, awk 求某一列平均值)
  10. Vivo(IQOO)无法输出调试日志解决办法