拼湊代碼與編程(Hacking Vs. Programming)之間有什么不同?我聽說過的一個觀點是駭客可以在短時間內編許多代碼,但是一旦發生變更,這些代碼就要完全重寫。而程序員也許會花更多的時間來編碼,但發生變化的時候,不需要全部重寫就可心迅速且輕松地安裝。我聽說這個來源歸于谷歌的Maggie Johnson的觀察。我覺得這聽上去很可靠。拼湊常常被描述為“粗制濫造”。你把一堆代碼放在一起并且在過程中將其編排好。一些駭客很聰明,他們可以在非常短的時間內做到一些令人驚異的事情。然后他們就會進行下一件事情。又或者他們會由于沒有其他人可以很好地理解以固定、修改或改善它而繼續同一樣事情。工作保障?也許有,但對于使這個軟件,尤其是付了費的人來說卻不是件好事情。
我有時會做點拼湊,也就是把一些東西在短時間內無具體計劃地弄到一起。我并不是個天才,所以結果自然很糟糕。執行很糟糕,可維護性很糟糕,沒有人會想用它。我猜這也許會使人對此有偏見。我更喜歡編程—思考,計劃,在井井有條的模式中進行。在我教學的第一年(很久以前了)我就清楚了這之間的區別。當時我在致力于我自己的一個小游戲編程并且決定將它展示給我的學生看。當我解釋我是如何圍繞若干可能使程序更容易擴張的常數來編程時,一名學生轉頭對另一名學生說:“看,他才剛剛開始就已經在為之后所要增加的作計劃了。” 在我看來這就是真正編程的要素之一。
我在大學主修系統分析。在那個時候,計算機科學專業和軟件工程專業都還不成熟。但我的教授將一個概念灌輸進了我們的頭腦里,那就是程序必須要可維護并且可擴展的。我們從第一天起就被教導,從某種意義上說,程序的生命不會結束,只可能被拋棄。更有可能,在某一時刻你宣布勝利或者諸如此類。但別人會維持這些程序,擴充并且接受它們。使他們生活得更輕松是件好事。想一想黃金法則—你會想要編寫你正在修改的代碼的程序員編程序。我想那就是這樣被寫出來的。
目前駭客受到了廣泛的關注。他們就是那些在籃球比賽中扣籃并被精彩回放的運動員們。但籃球比賽的勝利是來自于團隊合作的基礎上的—隊員們的配合,通過運球、上籃、傳球將球傳給主力。從長遠來看,我們需要更多真正的程序員來編出穩固的、可靠的,當改變發生時不必重頭來過的程序。