“慢速程式設計”讓你擺脫不思考戳手指狀態

edithfang發表於2014-12-03
我老爸曾經常說一句話:“慢點來,孩子,這樣你才能更快地完成工作。”

 
       
我已經在舊金山海灣區的許多高科技初創公司裡工作過了。今年我52歲,我緩慢地、充滿思考地程式設計。我有點像是一個寫程式碼的設計師,如果你繼續讀下去,會發現這點真的很明顯。


當我最近開發的一個專案中有一群信仰快速、細微迭代改變程式碼的年輕程式設計師時,慢速程式設計對我來說成了一個問題。在工作中,我們在同一個程式碼庫下開發,好像這就是一大鍋湯,我們只需要不斷且費力地攪動它,一個神奇完整的東西就會出現了。
 
這真的沒什麼用。
 
這些開發者中的很多人都很相信一個謬論:所有的工程師都是可以被替代的,所以不該有人為某一段特定的程式碼負責,任何程式設計師在任何時候都能改變任意部分的程式碼。畢竟,我們有像Github這樣極好的服務來管理和融合來自很多程式設計師的很多不同步的程式碼改變。只要每人都不斷地提交程式碼,同時不造成破壞,一切都會變好的。
 
這純粹是胡說八道!
 
你不能期許沒有設計過程就開始程式設計。設計在人類文明剛出現是就已經存在了。當下最新較好用的開發工具,不論有多好用,都不能替代建立大教堂、鐵路和長篇電影的最佳實踐和現實生活中的合作。
 
任何數量的程式設計也不能生成一種工具來減少軟體開發時間,開發速度快到連猴子都能完成團隊程式碼的速度。
 
節律異常
 
在一群快速開發的程式設計師中做一名慢速程式設計師的意外事故是我變得節律異常了,這樣我的程式設計節奏就通過其他程式設計師連續不斷地快速機器迭代給打斷了。我的程式設計風格是由不同的尺度和時間表的有機弧線來定義的,每條弧線都從探索、嘗試、出錯、創造性地解決問題和臨時變數開始。基本上就是大量的腳手架之類的搭建工作,這樣一幅畫就開始成形了。然後,我再回頭做些修修補補的細節工作。每條弧線的末端就像是快要完成的程式碼。我為程式碼貢獻的開發弧線就等同於一個策略、設計方案和體系結構的出現。
 
有時候,一個成熟的生物出現後,我會回到原點重新開始,因為我想到了一個怎麼去做的更好方法。有時候我錯了,有時候我是對的。在這個生物完全成形並開始盯著我看之前,真的沒辦法知道該怎麼做。
 
無論如何,回到熬大鍋湯的程式設計師話題。問題是:在整個軟體生態系統中都沒有停滯,沒有平靜的過程來獲得牽引力和應用設計過程,這樣一個開發者,即使是一個快速程式設計師,怎麼能做出好的設計呢?
 

 
       
任何說快速程式設計跟慢速程式設計一模一樣(除了速度之外)的程式設計師,都沒有理解設計流程。出於同樣的原因,很多神經系統科學家現在相信貫穿整個大腦的諸如流體之類的神經元放電的“湧流”(相當於我們所說的“狀態”來了)有一個時間上的反射過程,這個反射過程與思想和意識有緊密的聯絡,所以說,好的設計需要時間。

慢速程式設計運動
       
根據維基百科描述:“‘慢速程式設計運動’是‘慢速運動’的一部分,它是一個強調細緻設計,高質量程式碼,軟體測試和思考的軟體開發哲學。它致力於避免拼湊程式碼,有漏洞的程式碼以及過度快速的釋出週期。”
 
維基百科上還提到這個與“慢速軟體運動”有關的內容:“作為敏捷軟體開發的一部分,全世界成群的開發者們都在尋找更有先見性的專案,這是為了一個更可持續發展的職業生涯,並達到工作和生活的均衡。他們建議做些像結對程式設計、程式碼審查和程式碼重構之類的實踐,這些都會讓你獲得可靠而強健的軟體應用程式。”
 
在舊金山海灣區的風險投資支援的軟體開發正處於間距短到發燙的快軌上。資金動態在過程中提出反常的需求,那這個過程最好留給設計演變的自然晝夜節律。快並不總會更好。實際上,更慢點有時候真的意味著更快,尤其是當一切都討論過並做過的時候。
 
還有另外一個問題:對技術近乎宗教般的痴迷,以及對工具有著戀物癖一樣的愛。人們想知道為什麼軟體寫的很爛,軟體很爛是因為紙上談兵。快速程式設計師建立解決問題的工具來解決能幫他們寫程式碼的工具的問題。
 
這就我我一直認為我們需要年齡較大的人們:女人,教育工作者,和藝術家參與軟體開發週期的原因。更多的人與人之間的聯絡,更少的物與人之間的聯絡。我不是說在開發團隊之外,坐在幫助臺前或者做些UI花朵之類的安排工作,我的意思是就讓他們在軟體開發團隊內部,以確保軟體能在最大程度上與人性共鳴。

很高興我不是一個摸到鍵盤就不會思考的程式設計師
       
我的一個朋友是個成熟的女性軟體工程師,他做了一個有趣的小測試:“軟體程式設計不是敲程式碼”。每個人都明白這點,但並沒有什麼疼痛能經常的點醒我們。Brendan Enrick討論了這個問題。我們程式設計師花時間將我們的手指戳到鍵盤上的事實讓這項體力活動看起來等同於程式設計,但程式設計實際上是把思想、設計、語言、邏輯和精神構建變成一種能儲存在電腦記憶體中的形式的行為。
 
我妻子經常走到院子裡來問我:“你在程式設計麼?”通常我的回答就是“是的,我在程式設計”。這時候一般我都在拿著一把園藝剪在修剪枝枝丫丫或者在為院子裡的花草樹木施肥。

 
       
植物、灰塵、剪刀跟程式設計的關係就好像鍵盤和發著輝光的螢幕之間的關係一樣緊密。
 
我們正在從一個工業時代和被增長率定義的經濟時代過渡到可持續發展時代。是的,新軟體和新業務都需要增長。但為了持續發展,他們需要帶著愛心的關懷緩慢地增長。就像一杯好酒,像一個嬰兒一樣。

原文:The Case for Slow Programming

(翻譯:PHP100_Alex)
來自:PHP100
相關閱讀
評論(1)

相關文章