2008年3月30日 星期日

程式設計師的使命

最近參與了大型專案的開發,讓我對程式設計師該做的事有了更進一步的感想。

程式設計,是一門很有趣的藝術。身為程式設計師,很多人都認為只要能寫寫指令就是了。其實程式設計師要學的事根部就不是程式指令,而是如何建構出靈活的、易於擴充的程式。

記得之前有人說,越厲害的程式設計師,寫一個程式出來所需的時間以及所需的程式碼行數越少。老實說,我聽了實在是嗤之以鼻,那人的腦袋還停留在電腦剛發明的時代。現代的程式設計師,最需要學的事情是"為別人著想"。假如你用兩三行就寫出一個一般要花四五行的程式,沒錯,你可能省了CPU 0.01%的時間,但你讓其他人要多花100%的時間看懂你的程式。在現在cpu那麼強大的時代,還抱持著以最少程式行數寫完程式的人,我認為他們不是初學者,就是自大狂,沒辦法與人合作。

很多大型專案都有個'程式公約",也就是要求每個開發人員都要遵守一些基礎標準。我很喜歡這種感覺,就像你是一名建築設計師,和其他的建築設計師、電機工程師一起合作蓋一棟雄偉的建築物,總不能這邊的屋頂是白的,那邊卻是黑的吧。很巧的是,程式設計也有像建築藍圖一樣的東西,我們叫做UML圖,他記載了程式裡物件之間的關係,也是發展程式的重要基礎,讓新參與的成員能很快了解整個程式的架構。

我認為程式設計師必須要有藝術家的腦袋,才能建構出實用且漂亮的程式。這部分也是我需要學習的地方。這種感覺,有點像是先在腦袋中模擬一個場景,再透過電腦將場景以文字的方式架構出來,最後透過編譯器實際生產。我想再也沒有比做出完美程式更能讓程式設計師感到有成就的事了吧。

image