大约是一年前,我写了一篇关于我为什么不喜欢结对编程的帖子。此文也是对该帖子的补充。

至今为止我已经在加利福尼亚州科学院工作5个月了。我创建了一个由美国国家科学基金会资助的关于蚂蚁分类学的网站:antcat.org。

这是我作为一个程序员25年以来最棒的工作。

原因有很多:因为是在博物馆写程序,所以每天我都可以看到机灵可爱的鱼儿、稀奇古怪的蜥蜴以及五彩缤纷的蝴蝶;有关于Rails的全新应用;老板英明又随和;观众是在金门公园的科学家,距离我家只有10分钟路程。虽然报酬只有10万美金(编者注:只有?尼玛),比我好几年前拿的薪酬都低,但是有医疗保险,并且每周我只需报道两三次就可以了。

但是这项工作最加分的地方不是别的,而正如题目而言:我可以独自工作。

我不想自吹自擂说我有多么享受这份工作。如果我能接受一个活力又创新的团队——即使是与他们结对,这份工作可能会更加惬意。但是我接受不了。

原因很简单,单独工作就可以按自己的方式编程。这意味着95%的测试驱动;意味着敏捷开发——因为我会想着用最简单的方式去实现功能;意味着如果有必要我会添加Solr;也意味着可以应用我在这个行业沉浸了四分之一个世纪的经验;还意味着不会有任何喋喋不休的争论。

也可能只是我的运气不好,这么多年我共事过的这么多人中,我还没遇到过谁能与我分享关于精益开发,敏捷方法论,面向对象编程,数据库设计,或者甚至是结构化编程方面的想法和观点的。一些相关的观点我都是从都一些类似于Martin Fowler 和 Kent Beck这种传奇人物的著作上学到的。不过,很多显而易见的事情这些家伙都过于想当然了,比如避免过早的优化,还有遵循责任制原则等等。

老实说,我和我以前的同事在软件开发时有很多的互动都是关于争吵的。不过话又说回来,这些年来我已经变得婉转和有礼貌多了,也会很快做出让步(毕竟,我也可能是错的)。但总会有厌倦这种纯粹为了争论而争论的家伙(当然我不是)的时候。我只是想自己静下心来以自己的方式好好写代码。

我很清楚因为我的选择我错过了什么:我的方法可能实际上并不正确,但却没有人来给我指出;可能一直到最后,我不知道用其他方法来解决问题;毫无疑问bug更多;在做设计决策时,有时候会头脑发热选个浪费时间和精力的,而不会有人来提醒我。以上种种如果是在一个团队中,即使是结对编程,都是可以缓和甚至是避免的。说起结对编程,我还不得不承认,单独编程的工作效率是比不上结对编程的。列张表格的话,结对编程或者是在团队中工作,优势是“罄竹难书”的。但是,唯一的问题就是,我讨厌结对编程和团队工作。

我也很清楚,我可能看上去像是在主张“cowboy coder”的开发风格。话说在团队中的cowboy coder的确是个大麻烦。但是如果没有团队呢,这还是麻烦吗?

比起那些伴随着敏捷方法论长大的年轻人,关于这个问题孰是孰非的争论更多的是出自于我这一代人之口。我想说的是,比起喋喋不休的争执,我更愿意去学习更先进的理念,从1989年的OOP(面向对象的程序设计),到2000年的TDD(测试驱动开发实战), 以及今天的精益生产。 这也是我与我曾经共事的同事造成分歧的原因。

走到人生的叉路口,我相信心之所向才是最明智的选择。有的人做事情的唯一原因就是这事情让他们快乐(不论时间长短)。

而我喜欢单独编程的最底线是,这让我快乐。

为什么我喜欢单独编程相关推荐

  1. 今天在csdn看到一博主今年大三,初中就喜欢上编程,学习了各种知识,初中…挺震惊。不禁细数我的编程史,挺有感。

    今天在csdn看到一博主今年大三,初中就喜欢上编程,学习了各种知识,初中-挺震惊.不禁细数我的编程史,挺有感. 要说我第一次接触编程,也是在初中,但这次接触我觉得并没有对我有所影响. 初中时期,记不清 ...

  2. 保持函数依赖的模式分解可以减轻或解决什么_为什么我更喜欢函数式编程?

    作者 | Mario Morgenthum 译者 | 平川 编辑 | 陈思 AI 前线导读:在学习 Haskell 之前,作者一直使用主流语言,如 Java.C 和 C++--现在他仍然喜欢它们.那么 ...

  3. 编程 单引号 双引号_我的25个最喜欢的编程引号也很有趣

    编程 单引号 双引号 Recently I was looking for some good programming quotes for one of my presentation. I was ...

  4. 自己动手合成喜欢的编程字体

    有很多漂亮的编程字体,英文部分很漂亮,但中文只能显示默认的宋体,在写中文注释的时候很不搭,于是自己试着把好看的中文字体合成到英文字体当中,感觉效果还不错.下面就把合成方法写给大家,希望可以帮助和我一样 ...

  5. 你确定你真的喜欢编程吗??

    很多人因为喜欢编程的工作,以及将想法转化为代码的整个过程,才成为了开发人员.学习新技术.编程语言.框架等,学习很多技术的运作原理,从无到有构建各种软件. 从初级软件开发人员开始,努力成长为一名&quo ...

  6. 我以为我喜欢编程是因为我喜欢你

    新来的前端亚希工作十分认真,分配的任务加班加点完成,遇到bug不推脱,利索地修复,为人专业靠谱.和她聊天得知,她本科是英语专业的,在学校里没接触过编程. 我很惊讶,问她怎么改行到这的? 她大大方方地说 ...

  7. 如何学好3D游戏引擎编程《转自3D游戏引擎网》

    此篇文章献给那些为了游戏编程不怕困难的热血青年,它的神秘要我永远不间断的去挑战自我,超越自我,这样才能攀登到游戏技术的最高峰         --阿哲VS自己 QQ79134054多希望大家一起交流与 ...

  8. 你对Java网络编程了解的如何?Java NIO 网络编程 | Netty前期知识(二)

    本文主要讲解NIO的简介.NIO和传统阻塞I/O有什么区别.NIO模型和传统I/O模型之间的对比.以及围绕NIO的三大组件来讲解,理论代码相结合. 很喜欢一句话:"沉下去,再浮上来" ...

  9. 关于如何学好游戏3D引擎编程的一些经验

    原帖地址:http://www.opengpu.org/bbs/forum.php?mod=viewthread&tid=2202&extra=page%3D1 此篇文章献给那些为了游 ...

最新文章

  1. Java 的 API、JDK 和 IDE 是什么
  2. 自习室网上预约系统设计_港澳居民“回乡证”出新规啦!新系统网上预约更方便!...
  3. 区块链去中心化有那么有用吗?
  4. Netty之粘包分包
  5. nginx里面的rewrite重写模块详解
  6. Nuxt使用高德地图
  7. 十一届蓝桥杯国赛 扩散-多源bfs
  8. SpringBoot(十一)-- 动态数据源
  9. phoenix的元数据一般存在哪里_ElasticSearch文档元数据(Metadata)
  10. 服务器解析请求的基本原理
  11. 简单了解一下如何使用Spring框架里JDBC和事务
  12. php检查浏览器是否有cookie,php – 检查是否启用了Cookie
  13. 常见WAF_WEB应用防火墙_运维必备_应用安全
  14. JAVA ZIP解压出现不可预料的压缩文件末端
  15. ubuntu16 下安装 dnw 给开发板传输文件,出现的问题以及解决方法
  16. 企业如何管理终端软件安装
  17. word2vec和bert的基本使用方法
  18. “倔驴”一个h5小游戏的实现和思考(码易直播)——总结与整理
  19. WEB基础与前端开发--课程表页面的设计
  20. μC/OS-III_系统特点

热门文章

  1. 【转】彻底理解cookie,session,token
  2. 【转】WebSocket初探
  3. 【转】使用websocket-sharp来创建c#版本的websocket服务
  4. 算法- 分治算法(实现汉诺塔)
  5. 【HDU - 1937 】Finding Seats(二维前缀和+尺取法)
  6. 【HDU - 1251 】统计难题(字典树,求拥有公共前缀的字符串数量)
  7. 【51Nod - 1094】和为k的连续区间 (前缀和,二分查找)
  8. 【HDU - 1754】I Hate It (线段树模板 单点覆盖更新+区间最大值查询)
  9. 【HDU - 4509】湫湫系列故事——减肥记II(合并区间模板 or 离散化标记 or 线段树)
  10. 从零实现一个3D目标检测算法(2):点云数据预处理