寫程式跟做軟體
寫程式 (write a program) 跟做軟體 (develop software) 是兩個交疊但不同的概念,就好像寫作 (writing) 跟出版 (publishing) 的關係一樣。
如果我們願意承認,作者雖然是寫作的源頭(註1),但其實只是出版的一個環節,我們就能看出兩者的不同。書稿的完成只是出版的開始而已(註2),書稿要編輯、校對、排版,而這離最終產品「書」還很遙遠呢。隨便一想就有封面設計、介紹文字、印刷裝訂包裝發行,還有後面各種銷售的必要工作,例如被大書店或大通路婊。
而且,另一個常常被人忽略的面向是:這些事情不是只有商業書籍如此,主要目的不在營利的學術書籍仍然是如此。事實上,不管作者有名無名、不管主題冷門熱門,不管出版社是大還是小,甚至助印結緣書也免不了這個過程(結緣書也不是說要放哪裡就能放哪裡的)。
作者跟編輯常常不是同一群人。但是很多時候寫程式的人也得擔負類同於「編輯」的工作,這可能是很多人痛苦的來源:很多人不喜歡,或者不見得適合當自己的編輯。反之亦然。
不過,不管哪一個角色的人,都應該去認識到這兩者的不同,進而減少不必要的期望跟落差(這一點對於軟體使用者或許也是適用的:我們很少因為書皮長得醜而怪作者爛,但是同樣的事情會發生在軟體上)。但也許這就是程式寫作者們的盲點:以為高科技可以幫我們解決問題。好比說,Google Code Hosting好像解決了程式寫完後如何妥善公開一事(對一些人來說,也許「做軟體」就到這邊為止)。事實上Google Code Hosting一類的高科技正是因為減少了尋找擺放位置跟擺放方式的摩擦 (friction),反而使得「做軟體」的本質更加急迫地顯明了:那個放上去之後的「怎麼辦」才是更麻煩的事情(註 3)。
從這點來說 programmer 跟 software developer 有著工作內容的不同,但後者涵蓋了前者。
註 1:事實上即使是這個說法還是過度簡化的,但暫且讓我們忘了「文本有兩種,一種有可讀性 (lisible),一種有可寫性 (scriptible)」這類的說法吧,巴董事長的理念並不包括「寫作要先不傷身體,再講求效果」。但是軟體必須 do no harm 啊。
註 2:這也是過度簡化的。如果我的學生時代有哪一句話有留下深刻的銘印,應該會是:「寫作的美德只有一種,就是重寫」。
註 3:高科技(例如 CMS, VCS, BBS, DOS 等)往往只是更突顯問題的本質,而不是解決本質……
One Response to “寫程式跟做軟體”
不知道為什麼,重看到標題時, “拉電線跟做水電” 的念頭飄過我的腦害….
是的, 拉電線不等於做水電~