“慢速編程”讓你擺脫不思考戳手指狀態
我老爸曾經常說一句話:“慢點來,孩子,這樣你才能更快地完成工作。”
我已經在舊金山海灣區的許多高科技初創公司里工作過了。今年我52歲,我緩慢地、充滿思考地編程。我有點像是一個寫代碼的設計師,如果你繼續讀下去,會發現這點真的很明顯。
當我最近開發的一個項目中有一群信仰快速、細微迭代改變代碼的年輕程序員時,慢速編程對我來說成了一個問題。在工作中,我們在同一個代碼庫下開發,好像這就是一大鍋湯,我們只需要不斷且費力地攪動它,一個神奇完整的東西就會出現了。
這真的沒什么用。
這些開發者中的很多人都很相信一個謬論:所有的工程師都是可以被替代的,所以不該有人為某一段特定的代碼負責,任何程序員在任何時候都能改變任意部分的代碼。畢竟,我們有像Github(看看這個《14個最佳免費Hithub開發者工具》、《你不可不知的10個Github功能》)這樣極好的服務來管理和融合來自很多程序員的很多不同步的代碼改變。只要每人都不斷地提交代碼,同時不造成破壞,一切都會變好的。
這純粹是胡說八道!
你不能期許沒有設計過程就開始編程。設計在人類文明剛出現是就已經存在了。當下最新較好用的開發工具,不論有多好用,都不能替代建立大教堂、鐵路和長篇電影的最佳實踐和現實生活中的合作。
任何數量的編程也不能生成一種工具來減少軟件開發時間,開發速度快到連猴子都能完成團隊代碼的速度。
節律異常
在一群快速開發的程序員中做一名慢速程序員的意外事故是我變得節律異常了,這樣我的編程節奏就通過其他程序員連續不斷地快速機器迭代給打斷了。我的編程風格是由不同的尺度和時間表的有機弧線來定義的,每條弧線都從探索、嘗試、出錯、創造性地解決問題和臨時變量開始。基本上就是大量的腳手架之類的搭建工作,這樣一幅畫就開始成形了。然后,我再回頭做些修修補補的細節工作。每條弧線的末端就像是快要完成的代碼。我為代碼貢獻的開發弧線就等同于一個策略、設計方案和體系結構的出現。
有時候,一個成熟的生物出現后,我會回到原點重新開始,因為我想到了一個怎么去做的更好方法。有時候我錯了,有時候我是對的。在這個生物完全成形并開始盯著我看之前,真的沒辦法知道該怎么做。
無論如何,回到熬大鍋湯的程序員話題。問題是:在整個軟件生態系統中都沒有停滯,沒有平靜的過程來獲得牽引力和應用設計過程,這樣一個開發者,即使是一個快速程序員,怎么能做出好的設計呢?
任何說快速編程跟慢速編程一模一樣(除了速度之外)的程序員,都沒有理解設計流程。出于同樣的原因,很多神經系統科學家現在相信貫穿整個大腦的諸如流體之類的神經元放電的“涌流”(相當于我們所說的“狀態”來了)有一個時間上的反射過程,這個反射過程與思想和意識有緊密的聯系,所以說,好的設計需要時間。
慢速編程運動
根據維基百科描述:“‘慢速編程運動’是‘慢速運動’的一部分,它是一個強調細致設計,高質量代碼,軟件測試和思考的軟件開發哲學。它致力于避免拼湊代碼,有漏洞的代碼以及過度快速的發布周期。”
維基百科上還提到這個與“慢速軟件運動”有關的內容:“作為敏捷軟件開發的一部分,全世界成群的開發者們都在尋找更有先見性的項目,這是為了一個更可持續發展的職業生涯,并達到工作和生活的均衡。他們建議做些像結對編程、代碼審查和代碼重構之類的實踐,這些都會讓你獲得可靠而強健的軟件應用程序。”
在舊金山海灣區的風險投資支持的軟件開發正處于間距短到發燙的快軌上。資金動態在過程中提出反常的需求,那這個過程***留給設計演變的自然晝夜節律。快并不總會更好。實際上,更慢點有時候真的意味著更快,尤其是當一切都討論過并做過的時候。
還有另外一個問題:對技術近乎宗教般的癡迷,以及對工具有著戀物癖一樣的愛(看看這些好用的工具《你應當知道的7個Java工具》、《提高程序員工作效率的5個工具》)。人們想知道為什么軟件寫的很爛,軟件很爛是因為紙上談兵。快速程序員建立解決問題的工具來解決能幫他們寫代碼的工具的問題。
這就我我一直認為我們需要年齡較大的人們:女人,教育工作者,和藝術家參與軟件開發周期的原因。更多的人與人之間的聯系,更少的物與人之間的聯系。我不是說在開發團隊之外,坐在幫助臺前或者做些UI花朵之類的安排工作,我的意思是就讓他們在軟件開發團隊內部,以確保軟件能在***程度上與人性共鳴。
很高興我不是一個摸到鍵盤就不會思考的程序員
我的一個朋友是個成熟的女性軟件工程師,他做了一個有趣的小測試:“軟件編程不是敲代碼”。每個人都明白這點,但并沒有什么疼痛能經常的點醒我們。Brendan Enrick討論了這個問題。我們程序員花時間將我們的手指戳到鍵盤上的事實讓這項體力活動看起來等同于編程,但編程實際上是把思想、設計、語言、邏輯和精神構建變成一種能存儲在電腦內存中的形式的行為。
我妻子經常走到院子里來問我:“你在編程么?”通常我的回答就是“是的,我在編程”。這時候一般我都在拿著一把園藝剪在修剪枝枝丫丫或者在為院子里的花草樹木施肥。
植物、灰塵、剪刀跟編程的關系就好像鍵盤和發著輝光的屏幕之間的關系一樣緊密。
我們正在從一個工業時代和被增長率定義的經濟時代過渡到可持續發展時代。是的,新軟件和新業務都需要增長。但為了持續發展,他們需要帶著愛心的關懷緩慢地增長。就像一杯好酒,像一個嬰兒一樣。
原文:The Case for Slow Programming
譯文:http://www.php100.com/html/it/focus/2014/1202/7955.html
(翻譯:PHP100_Alex)