程式設計師十誡:第十誡:在規則中理解精意
不是憑著字句,乃是憑著精意。因為那字句是叫人死,精意是叫人活。 《哥林多後書》 3:6
這是一個充滿規則的世界。有形的和無形的規則,看得見的和看不見的規則,幾乎滲透了這個世界的每一個角落,甚至人內心深處的每個角落。人與人之間相處有規則。不管是孔子的“以德報德,以直報怨”,還是老子的“以德報德,以德報怨”,抑或基督裡面的“愛你的仇敵,為逼迫你的人禱告”,無不都在闡述著群居在一起的人,該如何處理人與人之間的“德怨”規則。國有國法,家有家規。不管是國家領土神聖不可侵犯,國家主權神聖不可侵犯,還是男主內,女主外,“男人是女人的頭”,夫唱婦隨,也無不在彰顯著由人組成的團體之間,和團隊內部之間的規則。再拓而言之,人外在的溝通工具,語言或文字,也都有他們自己的規則。同樣的,軟體系統不管是外在的使用,還是內在的開發,幾乎每一個過程,也都被規則引導著。
對於程式開發來說,這些規則粗到一門程式語言的語法,一種協議,細到一個框架的配置,一個開發工具的使用等。正是掌握了這些眾多的規則,程式設計師才能完成一個專案,一個系統,才能勝任所在的崗位。常言道,無規矩不成方圓。從這個角度來看,規則是個好東西。然而規則雖然是死的,但人是活的。當死一般的規則為活人所用,結果是死是活,恐怕難以定論。正如錢本來也是個好東西,但到了不同的人手裡,卻併成不同的樣。眾所周知,錢可以被人所用,也可以把人帶進墳墓。或許,規則到了某些人的手裡,並不會把他帶進顯而易見的墳墓,但也不排除被帶進一個被禁錮的籠子裡,全身心的被困於其中。這籠子,其實和墳墓又有什麼區別呢?對於程式設計師來說,這規則諸如行業規範,或系統配置等。如果程式設計師只注重了外在的配置,而不深入配置背後的原理,那麼就如套上了枷鎖,被別人牽著鼻子走。當深入理解了內部的原理,面對換湯不換藥的新技術,即不會輕易隨波逐流,也能很快上手。
“命令的總歸就是愛(《提摩太前書》1:5)”。父母對小孩子有很多誡命,諸如不要學別人抽菸、喝酒,不要玩火等,其背後真正的動機是出於對孩子的愛。社會有諸多法律,但不管是那此法律,還是這彼法律,其起初的本意都在於儘可能的保障每個人,或者每個團體、或機構的權利和義務,能夠維持社會的良好秩序。不同的行業裡面又有不同的規範,甚至同一個行業裡不同的領域也有不同的規範。在軟體開發中,更是如此。通訊協議有通訊協議的規範,編寫程式碼有編寫程式碼的規範。“日有日的榮光,月有月的榮光,星有星的榮光;這星和那星的榮光也有分別。(《哥林多前書》 15:41)”不同的協議規範又不一樣,不同的程式語言規範也不一樣。可不管是這規範,還是那規範,終極最終目的是為了統一規範軟體開發這個行業。有了統一的規範,就有了標準,電腦和電腦之間,系統和系統之間,團隊和團隊之間,程式設計師和程式設計師之間都有了共同的語言。有了共同的語言才能更好的對話,交流和溝通,協作。有了良好的對話、交流和溝通,才能便於做好一個專案,開發好一個系統。簡而言之,如果說父母對孩子的“命令總歸就是愛”,那麼軟體開發中這諸多的規範,其“總歸就是盡力做到統一,並在統一中和諧發展。”
然而,不要忘了,法律是人制定的,各個行業的標準也是人制定的,軟體開發行業自然也不例外。可是,人是有限的,是不完美的,不完美的人制定出的法律也難以做到完美。這如有限加有限,其結果還是有限,不可能因為兩個或多個有限相加,就變成無限的。因此,哪怕是再多的人,再權威的組織制定的法律、或規範,也不可能至善至美,毫無破口。愛因斯坦說過,他不相信權威,結果上帝在他身上似乎開了個玩笑,最終他也被人列入權威。
我們不是愛因斯坦,但我們每個人都有懷疑權威的自由和權利。我們也沒有愛因斯坦般的天賦,即便對權威有所懷疑,也難以在懷疑權威中最終成為權威,但我們每個人都可以設身處地般,假設自己是制定權威的參與人之一。當我們真若設身處地的去想了,久而久之,明白了權威的來龍去脈,明白了權威的本質,就不會被權威所左右。同樣的,作為程式設計師,如果能時常站在制定行業規範者的角度去思考問題,思考規範的作用,表現形式等,久而久之,你就在死氣沉沉的規範裡面可以做出活生生的設計和系統來。不僅如此,甚者,你可以在僵硬的程式碼裡、有機械般的程式世界裡享受一個充滿快樂的程式人生。
相關文章
- 十年程式設計師的告誡:千萬不要重寫程式碼!程式設計師
- [譯] 關於你的程式設計生涯的一些告誡程式設計
- 推薦兩篇發人深省的短文 (《十條誡令》的全文)
- 好程式設計師大資料解析 SQL最佳化方案精解十則程式設計師大資料SQL
- 移動遊戲開發十誡!第一個雛型就要搞定的事遊戲開發
- 好程式設計師大資料乾貨 SQL最佳化方案精解十則程式設計師大資料SQL
- 好程式設計師大資料培訓分享SQL最佳化方案精解十則程式設計師大資料SQL
- 理解正規表示式(程式設計師第3期文章)程式設計師
- 以前的程式設計師,現在的程式設計師程式設計師
- 寫給工程師的十條精進原則!工程師
- 寫給工程師的十條精進原則工程師
- 理解靜態區域性變數(static)在程式中的執行規則變數
- 我似乎理解了程式設計的意義程式設計
- 在Linux中,如何設定防火牆規則?Linux防火牆
- 計算機基礎與程式設計第十週總結計算機程式設計
- 程式設計師找工作必備 PHP 基礎面試題 - 第十天程式設計師PHP面試題
- 寫給工程師的十條精進原則-摘要工程師
- 在中國程式設計師是青春飯嗎?程式設計師
- Go程式設計的一些規則Go程式設計
- 業務規則引擎平臺如何降低程式設計師工作量? - brcommunity程式設計師Unity
- C primer plus 第六版 第十章 第十題 程式設計練習答案程式設計
- 程式設計師的macOS系列:精選MacApp程式設計師MacAPP
- 程式設計師測試原則 - Kent Beck程式設計師
- 好程式設計師精講 java設計模式—享元模式程式設計師Java設計模式
- 程式設計師的十年之癢程式設計師
- 我的十年程式設計師之路程式設計師
- 程式設計師畫像,十年沉浮程式設計師
- 程式設計師十步學習法程式設計師
- 十大Java程式設計師書籍Java程式設計師
- 接地設計基本規則
- 高階語言程式設計第十次作業程式設計
- 程式設計師的職業規劃!程式設計師
- 國外一教授坦言,用這方法能迅速成為python程式設計師,但都不願意說_程式設計小十Python程式設計師
- 《計算機基礎與程式設計》第十週學習總結計算機程式設計
- 好程式設計師java分享spring框架精講程式設計師JavaSpring框架
- 第十篇.HFM規則入門(三:深入使用exp函式)函式
- 原型設計產出物中需求規則描述原型
- 科學軟體十條簡單程式設計原則程式設計
- Java語言程式設計(基礎篇)第十版 5.14Java程式設計