每個程式設計師都知道,在一個軟體公司裡,你需要有一套嚴謹的編碼規範。每個程式設計師也都知道,為了能按自己的程式設計習慣制訂這套規範,每個程式設計師都在而抗爭。剛進入一個新公司時,每個程式設計師都會內心裡絕望,對那套由某些強勢架構師獨斷指定的編碼規範恐懼不已。
扔掉編碼規範吧,讓程式設計師自由發揮,你會得到更多的好處。從加強程式碼統一性上獲得的這點勝利根本解決不了問題。編碼規範就是技術上的遮羞布。在 nearForm 公司,我從來沒有想過要制定一個這樣的規範,因為我希望每個人都只需按照自己喜歡的方式程式設計。
這世界太吵鬧了。JavaScript的復興要為此負全責。尤其有一個“特徵”:可有可無的分號。無數的主張,猜想和反對聲鋪天蓋地。停止,去實際寫些程式碼好嗎。你知道我在說誰。
本意是好的,各路程式設計師大仙釋出各種JavaScript編碼規範和風格指導。你們全錯了。請停止這種要去拯救這個世界的行為。
編碼規範從何來?過程是這樣的:在你開始編碼時,你跟本不知道會做出什麼。這充滿樂趣,這是一場遊戲,直到你弄瞎一隻眼睛。一旦你被自己垃圾的程式碼傷了太多次,你開始知道你是個菜鳥。於是你開始走上了通往程式設計大師的道路,你貪婪的咀嚼《程式碼大全》, 《程式設計師修煉之道》,當然,還有 Joel。
之後,事情開始發生了。在通往朝聖的路上,你參透了真經。滿腹的技藝讓你成為了程式設計巨星。你的開發效率整整翻了一倍。現在,你要向世界傳播。讓你有今天成就的知識也同樣能拯救他人。你籠絡人心,你傳道,你糾纏不休。你訓導你的老闆要採用最好的實踐方法和開發規範。而最不可饒恕的,你竟然開始寫部落格了。
大多數程式設計師從來不發聲。那些喜歡弄出聲響的,都晉升了。你晉升了。你把你絕頂聰明的想法強加給他人。你編寫了一套編碼規範,你讓它成為了法律。
可之後,一切如舊。同樣苦幹,同樣最後期限迫在眉睫,同樣bug無數,同樣悲慘結局。銀彈跟本不存在。
幾年後,你不再編碼,你成為了管理者。你仍然認定編碼規範,條律,制度的至關重要。關鍵就在於正確的實施。你從來都沒有真正的做到過,但你堅持要實現這個目標。不僅如此,你變本加厲。程式碼量化標準!作為一個管理者,你成了痛苦的化身。
也許事情可能會向另外一個方向發展。也許你重新回去程式設計,或從未離去。經過一段時間,你發現自己如此無知,所有你的夢想都建立在沙灘上。你放棄了,你放棄了給程式設計師制訂枷鎖。這是另一層次的參悟。
至此,你認識到,人不是機器。人需要把智慧發揮到極致。你應該丟掉枷鎖,獲取最大創造。
可為什麼那些最聰明的程式設計師的做法卻完全的相反?為什麼他們喜歡控制其它程式設計師?是什麼讓他們如此獨裁?
首先,你想把你的經驗傳授給他人。但並非每個人的思維都跟你一樣。人的大腦是十分怪異的。
第二,控制別人的感覺良好。但這不可能真正有效的。你不能命令程式設計師去做什麼。貓不是圈養出來的。
第三,你逃避責任。團隊中的所有人都這樣。我們遵守了規範!專案失敗了。沒錯,可是我們是遵守了規範!
第四,好的意願;最佳實踐;很專業;很技術——誘人的開發過程。你仍在追逐你8歲時想摘到的那顆星星。但是,程式設計大師如何判斷一件事的成敗?看結果,這是唯一的標準。
第五,理想主義,你認為你理解整個世界,整個世界要尊崇你的意志。我們人類有些事情非常的在行….但那是在一萬次的失敗之後,一萬次重複的失敗。軟體工程就是其中之一,不是有了規範就萬事大吉的。
而最糟糕的不是這些。萬惡之首是,只要你具有上面的任何一點,你最終就會制定出一套編碼規範。
編碼規範真正的罪惡在於,它們在傷你的心,傷整個團隊的心。它們是一種耳語在說你不夠優秀。他們不信任你。沒有監管,你會搞的一團糟。
一年前我們開創 nearForm 公司,我們最在意的一件事就是要為客戶寫出最優秀的程式。在早先,我們嘗試過所有的開發過程、方法、制度規範。所有都讓人討厭。沒有一樣真正起到作用。
於是我們開始實施這樣的原則:相信我們的程式設計師是最有智慧的。這起作用了。
我希望所有人都能寫出整潔優秀的程式碼。你自己判斷這指的是什麼。如果在程式碼髒亂、變數名不一致的情況下你還能安穩的睡大覺,這你自己決定。但你知道,也許這只是一個100行的用node.js寫微型server,無關緊要。這你自己決定。
這你的責任,因為你一名程式設計師。
本文由“外刊IT評論”網(www.aqee.net)榮譽出品