为什么我喜欢单独编程

jopen 10年前

        英文原文:Why I love solo programming

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

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

为什么我喜欢单独编程

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

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

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

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

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

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

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

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

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

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

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

        译文链接:http://news.html5tricks.com/why-i-love-solo-programming.html
        翻译作者:IT 新闻 – 蒋丽丽