程式設計師十誡:第十誡:在規則中理解精意

海微發表於2012-09-05

不是憑著字句,乃是憑著精意。因為那字句是叫人死,精意是叫人活。 《哥林多後書》 3:6

 這是一個充滿規則的世界。有形的和無形的規則,看得見的和看不見的規則,幾乎滲透了這個世界的每一個角落,甚至人內心深處的每個角落。人與人之間相處有規則。不管是孔子的“以德報德,以直報怨”,還是老子的“以德報德,以德報怨”,抑或基督裡面的“愛你的仇敵,為逼迫你的人禱告”,無不都在闡述著群居在一起的人,該如何處理人與人之間的“德怨”規則。國有國法,家有家規。不管是國家領土神聖不可侵犯,國家主權神聖不可侵犯,還是男主內,女主外,“男人是女人的頭”,夫唱婦隨,也無不在彰顯著由人組成的團體之間,和團隊內部之間的規則。再拓而言之,人外在的溝通工具,語言或文字,也都有他們自己的規則。同樣的,軟體系統不管是外在的使用,還是內在的開發,幾乎每一個過程,也都被規則引導著。

 對於程式開發來說,這些規則粗到一門程式語言的語法,一種協議,細到一個框架的配置,一個開發工具的使用等。正是掌握了這些眾多的規則,程式設計師才能完成一個專案,一個系統,才能勝任所在的崗位。常言道,無規矩不成方圓。從這個角度來看,規則是個好東西。然而規則雖然是死的,但人是活的。當死一般的規則為活人所用,結果是死是活,恐怕難以定論。正如錢本來也是個好東西,但到了不同的人手裡,卻併成不同的樣。眾所周知,錢可以被人所用,也可以把人帶進墳墓。或許,規則到了某些人的手裡,並不會把他帶進顯而易見的墳墓,但也不排除被帶進一個被禁錮的籠子裡,全身心的被困於其中。這籠子,其實和墳墓又有什麼區別呢?對於程式設計師來說,這規則諸如行業規範,或系統配置等。如果程式設計師只注重了外在的配置,而不深入配置背後的原理,那麼就如套上了枷鎖,被別人牽著鼻子走。當深入理解了內部的原理,面對換湯不換藥的新技術,即不會輕易隨波逐流,也能很快上手。

“命令的總歸就是愛(《提摩太前書》1:5)”。父母對小孩子有很多誡命,諸如不要學別人抽菸、喝酒,不要玩火等,其背後真正的動機是出於對孩子的愛。社會有諸多法律,但不管是那此法律,還是這彼法律,其起初的本意都在於儘可能的保障每個人,或者每個團體、或機構的權利和義務,能夠維持社會的良好秩序。不同的行業裡面又有不同的規範,甚至同一個行業裡不同的領域也有不同的規範。在軟體開發中,更是如此。通訊協議有通訊協議的規範,編寫程式碼有編寫程式碼的規範。“日有日的榮光,月有月的榮光,星有星的榮光;這星和那星的榮光也有分別。(《哥林多前書》 15:41)”不同的協議規範又不一樣,不同的程式語言規範也不一樣。可不管是這規範,還是那規範,終極最終目的是為了統一規範軟體開發這個行業。有了統一的規範,就有了標準,電腦和電腦之間,系統和系統之間,團隊和團隊之間,程式設計師和程式設計師之間都有了共同的語言。有了共同的語言才能更好的對話,交流和溝通,協作。有了良好的對話、交流和溝通,才能便於做好一個專案,開發好一個系統。簡而言之,如果說父母對孩子的“命令總歸就是愛”,那麼軟體開發中這諸多的規範,其“總歸就是盡力做到統一,並在統一中和諧發展。”

然而,不要忘了,法律是人制定的,各個行業的標準也是人制定的,軟體開發行業自然也不例外。可是,人是有限的,是不完美的,不完美的人制定出的法律也難以做到完美。這如有限加有限,其結果還是有限,不可能因為兩個或多個有限相加,就變成無限的。因此,哪怕是再多的人,再權威的組織制定的法律、或規範,也不可能至善至美,毫無破口。愛因斯坦說過,他不相信權威,結果上帝在他身上似乎開了個玩笑,最終他也被人列入權威。

我們不是愛因斯坦,但我們每個人都有懷疑權威的自由和權利。我們也沒有愛因斯坦般的天賦,即便對權威有所懷疑,也難以在懷疑權威中最終成為權威,但我們每個人都可以設身處地般,假設自己是制定權威的參與人之一。當我們真若設身處地的去想了,久而久之,明白了權威的來龍去脈,明白了權威的本質,就不會被權威所左右。同樣的,作為程式設計師,如果能時常站在制定行業規範者的角度去思考問題,思考規範的作用,表現形式等,久而久之,你就在死氣沉沉的規範裡面可以做出活生生的設計和系統來。不僅如此,甚者,你可以在僵硬的程式碼裡、有機械般的程式世界裡享受一個充滿快樂的程式人生。

相關文章