為什麼我喜歡單獨程式設計

html5tricks發表於2014-08-06

  大約是一年前,我寫了一篇關於我為什麼不喜歡結對程式設計的帖子。此文也是對該帖子的補充。

  至今為止我已經在加利福尼亞州科學院工作 5 個月了。我建立了一個由美國國家科學基金會資助的關於螞蟻分類學的網站:antcat.org。

為什麼我喜歡單獨程式設計

  這是我作為一個程式設計師 25 年以來最棒的工作。

  原因有很多:因為是在博物館寫程式,所以每天我都可以看到機靈可愛的魚兒、稀奇古怪的蜥蜴以及五彩繽紛的蝴蝶;有關於 Rails 的全新應用;老闆英明又隨和;觀眾是在金門公園的科學家,距離我家只有 10 分鐘路程。雖然報酬只有 10 萬美金(編者注:只有?尼瑪),比我好幾年前拿的薪酬都低,但是有醫療保險,並且每週我只需報導兩三次就可以了。

  但是這項工作最加分的地方不是別的,而正如題目而言:我可以獨自工作。

  我不想自吹自擂說我有多麼享受這份工作。如果我能接受一個活力又創新的團隊——即使是與他們結對,這份工作可能會更加愜意。但是我接受不了。

  原因很簡單,單獨工作就可以按自己的方式程式設計。這意味著 95% 的測試驅動;意味著敏捷開發——因為我會想著用最簡單的方式去實現功能;意味著如果有必要我會新增 Solr;也意味著可以應用我在這個行業沉浸了四分之一個世紀的經驗;還意味著不會有任何喋喋不休的爭論。

  也可能只是我的運氣不好,這麼多年我共事過的這麼多人中,我還沒遇到過誰能與我分享關於精益開發,敏捷方法論,物件導向程式設計,資料庫設計,或者 甚至是結構化程式設計方面的想法和觀點的。一些相關的觀點我都是從都一些類似於 Martin Fowler 和 Kent Beck 這種傳奇人物的著作上學到的。不過,很多顯而易見的事情這些傢伙都過於想當然了,比如避免過早的優化,還有遵循責任制原則等等。

  老實說,我和我以前的同事在軟體開發時有很多的互動都是關於爭吵的。不過話又說回來,這些年來我已經變得婉轉和有禮貌多了,也會很快做出讓步 (畢竟,我也可能是錯的)。但總會有厭倦這種純粹為了爭論而爭論的傢伙(當然我不是)的時候。我只是想自己靜下心來以自己的方式好好寫程式碼。

  我很清楚因為我的選擇我錯過了什麼:我的方法可能實際上並不正確,但卻沒有人來給我指出;可能一直到最後,我不知道用其他方法來解決問題;毫無 疑問 bug 更多;在做設計決策時,有時候會頭腦發熱選個浪費時間和精力的,而不會有人來提醒我。以上種種如果是在一個團隊中,即使是結對程式設計,都是可以緩和甚至是避 免的。說起結對程式設計,我還不得不承認,單獨程式設計的工作效率是比不上結對程式設計的。列張表格的話,結對程式設計或者是在團隊中工作,優勢是“罄竹難書”的。但是, 唯一的問題就是,我討厭結對程式設計和團隊工作。

  我也很清楚,我可能看上去像是在主張“cowboy coder”的開發風格。話說在團隊中的 cowboy coder 的確是個大麻煩。但是如果沒有團隊呢,這還是麻煩嗎?

  比起那些伴隨著敏捷方法論長大的年輕人,關於這個問題孰是孰非的爭論更多的是出自於我這一代人之口。我想說的是,比起喋喋不休的爭執,我更願意 去學習更先進的理念,從 1989 年的 OOP(物件導向的程式設計),到 2000 年的 TDD(測試驅動開發實戰), 以及今天的精益生產。 這也是我與我曾經共事的同事造成分歧的原因。

  走到人生的叉路口,我相信心之所向才是最明智的選擇。有的人做事情的唯一原因就是這事情讓他們快樂(不論時間長短)。

  英文:Why I love solo programming 譯文:html5tricks

相關文章