我为什么喜欢独自编程
我已经在加利福尼亚科学院工作有5个月了。我正在开发一个由国家科学基金会支持的蚂蚁分类学网站:antcat.org。
这是我25年的程序员工作中最好的一个。
有好些理由:我工作在一个博物馆里,每天我可以四处走走观赏奇异的鱼,蜥蜴,和蝴蝶。这是一个用栅栏围住的绿区,老板聪明和善,用户都是科学家。博物馆就 在金门海峡公园,距我居住的地方只有10分钟的路程。我的年薪“只有”1百万,比我好些年前的薪水都少。但他们给我医疗保险,每周我还可以去几次 tidepool展览会。
但这最重要的原因是我喜欢独自编程。
我并没有觉得独自编程有什么特别好的。其实我喜欢工作在一个有活力和创新精神的团队里 — 甚至结对编程。但我没有选择这样。
原因非常的简单,现在的工作我可以按我想要的方式进行。也就是95%的驱动测试开发。也就是敏捷开发 — 用最简单的方式完成工作。也就是我可以按照我自己的意愿在项目里使用Solr。也就是我可以真正的开始学习Javascript。也就是我可以把这些年在 这个领域里积累下来的知识和经验完全应用到工程里。同时也就是我做这些事情时不需要和别争论这些事情。
也许是我一直不太走运,在lean开发,敏捷开发,OOP,数据库设计,或甚至结构化编程上,我从没有遇到与我有共同思想的人。我的观念都学自于阅读 Martin Fowler 和 Kent Beck等人的文章。很显然,有些理论都是这些人想当然出来的,例如避免过度优化,或遵循单一责任原则。
所以在跟我的同事的接触中总是为这些事情争论不休。这么多年来我的脾气已经变得圆滑和礼貌的多了,而且在某些观点上愿意采取一种让步的态度(毕竟,也许我的观点是错误的)。可是慢慢的你会有时候厌倦了做OOP“纯粹主义者”(我不是)。有时候你只是想把事情做“好”。
现在,我十分的清楚当你一个人工作的时候你失去的是什么。我做的事情常是错误的。其实有很多其它的我应该知道的方法但我一个人无从得知。毫无疑问我写出来 很多bug。有时候我弄出的错误的设计浪费了我很多的时间。如果我工作在一个团队中,或者结对编程,这些全都可以避免或减少。谈到结对编程,有一个事实, 我现在的工作效率没有我在Pivotal公司里结对编程时的效率高。当时我们的成绩是如此的显著,解决任务是过关斩将。唯一的问题是我不喜欢这种方式。
我也知道我在赞成一种“牛仔编程者”风格的开发,这种风格的人在团队合作中确实令人头痛。但在没有团队的情况下呢?
我知道人们从我们这代人中能更多的听到这种声音。这是相对于年轻的伴随着敏捷开发方法长大的年轻一代是这样的。我要说的是我在努力拥抱那些前沿的思想方法 — 1989年诞生的OOP,2000年诞生的TDD,现在的lean。这也导致了我更多的对这些东西产生了不同的观点。
当然,归根结底,我深信唯一明智的判断一种行为方式的标准是看它是否能使你快乐。一个人选择去做某种事情的唯一理由是它能使你快乐(从长远的视角看)。
对于我来说快乐是我的底线。
来自:http://www.vaikan.com/why-i-love-solo-programming/