為什么我喜歡單獨編程

大約是一年前,我寫了一篇關于我為什么不喜歡結對編程的帖子。此文也是對該帖子的補充。

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

這是我作為一個程序員25年以來最棒的工作。

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

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

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

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

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

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

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

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

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

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

而我喜歡單獨編程的最底線是,這讓我快樂。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/447374.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/447374.shtml
英文地址,請注明出處:http://en.pswp.cn/news/447374.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

如何看待自己寫的爛代碼

如果你不是入行不久的新程序員,你很可能會遇到一些你曾經寫過的老代碼,看到它們,你可能會有這樣的反應: 哦,shit!這是什么?當時我腦袋進水了? 我就這樣過。我的朋友和同事們都經歷過…

給創業者的一些建議

CEO要像個產品經理 就拿我的項目來說,網站的模板設計,視覺體驗,操作體驗,產品展示,網址等都是不合格的。創始人開始創業其實就是一個產品經理,好好雕琢你的產品。 不做機會最大的,只做自己擅長…

談操作系統的碎片化和融合

摘要:目前,Android和iOS統治著移動操作系統,桌面端被Windows所主宰,隨著智能家居、可穿戴設備等新興平臺的興起,造成了各家操作系統四分五裂的情況,但在不久的將來他們終究會走向融合。 目前,An…

盤點大數據的十大發展方向,Scale-out將成主流

摘要:隨著人們對大數據認知的加強,除去特點之外,人們開始更加關注于它的使用價值和未來的服務方向。本文列舉了大數據的十大發展方向,其中Scale-out將成為主流。 【編者按】如今,大數據儼然成為IT領域最受關注的熱詞之…

程序員的成功是否有規律可循?

摘要:自然界中存在許多規律,那么在程序人生上是否有規律可循呢?這種規律是如大多數人期望的那樣嗎?V眾投發起人李智勇對此進行了探討,他分析了必然與偶然、本質與細節,并就程序人生規律的三要素進行了解讀。…

S?D?I?與?A?S?I 接口詳解介紹

分量編碼 在對彩色電視信號進行數字化處理和傳輸是,一種常用的方式是分別對其3個分量(Y,R-Y,B-Y)進行數字化編碼。這就是分量分量編碼,另外還有全信號編碼,全信號編碼是對彩色全電視信號直接進行…

FFMPEG解碼多線程

FFMPEG多線程解碼 FFMPEG多線程編碼器一般以在Slice內分功能模塊進行多線程編碼,如h263,h263P,msmpeg(v1, v2, v3),wmv1。包含以下幾個線程:(1)Pre_estimation_motion_thread運動估計前的準備;(2)Estimation_motion_t…

SpringNBoot日志配置

市面上的日志框架 日志門面 (日志的抽象層)日志門面 (日志的抽象層)JCL(Jakarta Commons LoggingSLF4j(Simple Logging Facade for Java) jboss-loggiJUL(java.util.logging&#x…

ffmpeg的內部Video Buffer管理和傳送機制

本文主要介紹ffmpeg解碼器內部管理Video Buffer的原理和過程,ffmpeg的Videobuffer為內部管理,其流程大致為:注冊處理函數->幀級釋放->幀級申請->清空。 1 注冊get_buffer()和release_buffer() FFAPI_InitCodec() avcodec_alloc_c…

springBoot的模版引擎

模版引擎 常見的模版引擎有JSP、Velocity、Freemarker和Thymeleaf Thymeleaf模版 使用時需要把html頁面放在classpath&#xff1a;/templates/文件夾下&#xff0c;thymeleaf就能自動渲染創建模版文件&#xff0c;并需要導入thymeleaf的名稱空間 <html lang"en"…

FFmepg 多線程解碼歷程

FFmepg 多線程解碼歷程 - 1:validate_thread_parameters /** * Set the threading algorithms used.//設置線程的使用算法 * Threading requires more than one thread.//需要一個以上的線程 * Frame threading requires entire frames to be passed to the codec,//幀線程…

SpringMVC自動配置

springboot為SpringMVC配置了自動配置&#xff0c;以下是SpringBoot對SpringMVC的默認配置 org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration 自動配置在Spring的默認配置之上添加了以下功能 包含ContentNegotiatingViewResolver和BeanNameView…

做一名合格的生意人

偶然的成功&#xff0c;包含著某種必然的因素&#xff0c;那就是一個生意人本身的素質。作為一名現代生意人&#xff0c;要想使自己所從事的事業取得新的成功&#xff0c;就要加強自身的修養&#xff0c;不斷掌握新知識&#xff0c;努力使自己成為“全才”。 □ 事業成功的十個…

restful風格的增刪改查

注意 如果靜態資源放到了靜態資源文件夾下卻無法訪問&#xff0c;請檢查一下是不是在自定義的配置類上加了EnableWebMvc注解templete文件夾不是靜態資源的文件夾&#xff0c;默認是無法訪問的&#xff0c;所以要添加視圖映射 package cn.xxxxxx.hellospringbootweb.config;imp…

歷史上最有影響力的10款開源項目

開源是大趨勢&#xff0c;開源軟件也在越來越多的出現在日常電腦桌面上&#xff0c;如Firefox瀏覽器、Ubuntu操作系統等。人們選擇開源軟件的原因&#xff0c;主要有低成本、安全無病毒侵害、更加透明和開放等。按照大多數的開源協議如GPL&#xff0c;開源軟件允許自由分發。在…

SpringBoot默認的錯誤處理機制

錯誤處理機制&#xff1a; 訪問一個不存在的頁面時&#xff0c;或者程序拋出異常時 默認效果 瀏覽器返回一個錯誤的頁面&#xff0c;注意查看瀏覽器發送請求的請求頭可以使用專業的軟件比如postman分析返回的json數據 springboot錯誤處理的自動配置信息 主要給日容器中注冊…

GitHub政府用戶破萬:開源成重塑政府新手段

據GitHub官方博客介紹&#xff0c;目前GitHub上的各地政府用戶數量已經達到1萬個&#xff01; 2009年&#xff0c;紐約參議院正式入駐GitHub公開部分技術資料與文檔&#xff0c;成為GitHub上的第一個政府組織。隨后&#xff0c;美國華盛頓特區、邁阿密、芝加哥、紐約&#xff…

配置嵌入式Servlet容器

如何定制和修改Servlet容器的相關配置 修改定制和修改Servlet容器的相關配置 server.port8081 server.context-path/crudserver.tomcat.uri-encodingUTF-8//通用的Servlet容器設置 server.xxx //Tomcat的設置 server.tomcat.xxx 編寫一個EmbeddedServletContainerCustomizer&…

云OS:Linux在桌面打翻身仗的機會?

不可否認&#xff0c;Chrome OS取得了驚人的增長。Chromebook自發行以來&#xff0c;迅速席卷全球&#xff0c;常年位居最暢銷筆記本榜首。這款基于Linux的筆記本在合適時間提供了合適的解決方案。很多情況下&#xff0c;云不僅僅是一個可選項&#xff0c;而是一個最優選項。Li…

Docker容器基本使用

Dcoker Docker是一個開源的應用容器引擎&#xff0c;是一個輕量級別的容器技術Dcoker支持將軟件編譯成一個鏡像&#xff1b;然后在鏡像中對各種軟件做好配置&#xff0c;再將鏡像發布出去&#xff0c;供別人使用運行中的鏡像稱為容器&#xff0c;容器的啟動是非常快速的核心概…