程式碼整潔之道
簡介:
本書是程式設計大師“Bob 大叔”40餘年程式設計生涯的心得體會的總結,講解要成為真正專業的程式設計師需要具備什麼樣的態度,需要遵循什麼樣的原則,需要採取什麼樣的行動。作者以自己以及身邊的同事走過的彎路、犯過的錯誤為例,意在為後來者引路,助其職業生涯邁上更高臺階。
本書適合所有程式設計師閱讀,也可供所有想成為具備職業素養的職場人士參考。
第十二章 協作
大多數軟體都是由團隊開發出來的。當團隊成員能夠十分專業地互相協作時,整個團隊是最為高效的。單打獨鬥與遊離於團隊之外都是不專業的表現。
12.1 程式設計師與人
我們並非是因為喜歡和其他人在一起工作才選擇做程式設計師的。我們都認為人際關係難以應付而且毫無規律。程式設計用的機器則整潔,行為也可預見。如果可以一個人待在房間裡數個小時沉浸在一些真正有趣的問題上,那將會是最開心的時光。
好吧,我這麼說可能有點兒以偏概全了,確實也有不少例外。有許多程式設計師很善於和別人共事合作,享受其中的挑戰。但是整個群體的平均狀況還是朝我所描述的方向發展的。我們,程式設計師們,還是最享受面無表情的沉思,把自己像蠶繭一樣裹起來,沉浸於問題思考中。
程式設計師與僱主:
專業程式設計師的首要職責是滿足僱主的需求。這意味著要和你的經理們、業務分析師們、測試工程師們和其他團隊成員很好地協作,深刻理解業務目標。這並不是說你必須要成為業務方面的老學究,而是說你需要理解手上正在編寫的程式碼的業務價值是什麼,瞭解僱你的企業將如何從你的工作中獲得回報。
因此,專業程式設計師會花時間去理解業務。他們會和使用者討論他們正在使用的軟體,會和銷售人員與市場人員討論所遭遇的問題,會和經理們溝通,明確團隊的短期目標和長期目標。
程式設計師與程式設計師:
程式設計師與程式設計師之間通常很難密切合作,這就會帶來一些不小的問題。
-
程式碼個體所有
不正常的團隊最糟糕的症狀是,每個程式設計師在自己的程式碼周邊築起一道高牆,拒絕讓其他程式設計師接觸到這些程式碼。我曾在許多地方看到過,不少程式設計師甚至不願讓其他程式設計師看見他們的程式碼。這是引發災難的“最有效秘訣”。
-
協作性的程式碼共有權
我贊同這種做法:團隊中每位成員都能簽出任何模組的程式碼,做出任何他們認為合適的修改。我期望擁有程式碼的是整個團隊,而非個人。專業開發人員是不會阻止別人修改程式碼的。他們不會在程式碼上構造所有權的藩籬,而是儘可能多地互相合作。他們透過合作來達到學習的目的。
-
結對
“專業人士會結對工作。”為什麼?因為至少對有些問題而言,結對是最有效的解決方法。
專業人士結對工作,還因為這是分享知識的最好途徑。
專業人士之所以結對,是因為結對是複查程式碼最好的方式。(最有效率且最有效果的程式碼複查方法,就是以互相協作的方式完成程式碼編寫。)
12.2 一起協作
專業人士會共同工作。當戴著耳機坐在角落裡時,你是無法參與合作的。因此,我期望大家能夠圍坐在一張桌子前,彼此面對面。你要能夠感受到其他人的恐懼擔憂,要能夠聽到其他人工作不順時的牢騷,要有口頭上和肢體語言上的下意識的溝通交流。整個團隊要像一個統一的整體,彼此連通。
也許你認為自己一個人工作時會做得更好。也許確實如此,但這並不意味著你一個人工作時,整個團隊會做得更好。況且,事實上,一個人單獨工作時,不太可能會工作得更好。有些時候,單獨工作是正確的。當你只是需要長時間努力思考一個問題時,可以一個人單獨工作。當任務瑣碎且無足輕重、和另外一個人一起工作顯得浪費時,可以一個人工作。但是一般說來,和其他人緊密協作、在大部分時間段中結對工作,是最好的做法。
12.3 結論
也許我們不是因為透過程式設計可以和人互相協作才選擇從事這項工作的。但真不走運,程式設計就意味著與人協作。我們需要和業務人員一起工作,我們之間也需要互相合作。