Coding
并不全都是喜悅。我們只有事先了解一些編程固有的煩惱,這樣,當(dāng)它們真的出現(xiàn)時,才能更加坦然地面對。
?
首先,必須追求完美。因為計算機也是以同樣的方式來變戲法:如果咒語中的一個字符、一個停頓,沒有與正確的形式一致,魔術(shù)就不會出現(xiàn)。(現(xiàn)實中,很少的人類活動要求完美,所以人類對它本來就不習(xí)慣。)實際上,我認(rèn)為學(xué)習(xí)編程的最困難部分,是將做事的方式往追求完美的方向調(diào)整。
?
其次,是由他人來設(shè)定目標(biāo),供給資源,提供信息。編程人員很少能控制工作環(huán)境和工作目標(biāo)。用管理的術(shù)語來說,個人的權(quán)威和他所承擔(dān)的責(zé)任是不相配的。不過,似乎在所有的領(lǐng)域中,對要完成的工作,很少能提供與責(zé)任相一致的正式權(quán)威。而現(xiàn)實情況中,實際(相對于正式)的權(quán)威來自于每次任務(wù)的完成。
?
對于程序員而言,對其他人的依賴是一件非常痛苦的事情。他依靠其他人的程序,而往往這些程序設(shè)計得并不合理,實現(xiàn)拙劣,發(fā)布不完整(沒有源代碼或測試用例),或者文檔記錄得很糟。所以,程序員不得不花費時間去研究和修改,而它們在理想情況下本應(yīng)該是可靠完整的。
?
下一個煩惱
——
概念性設(shè)計是有趣的,但尋找瑣碎的
bug
卻只是一項重復(fù)性的活動。伴隨著創(chuàng)造性活動的,往往是枯燥沉悶的時間和艱苦的勞動。程序編制工作也不例外。
?
最后一個苦惱,有時也是一種無奈
——
當(dāng)投入了大量辛苦的勞動,產(chǎn)品在即將完成或者終于完成的時候,卻已顯得陳舊過時。可能是同事和競爭對手已在追逐新的、更好的構(gòu)思;也許替代方案不僅僅是在構(gòu)思,而且已經(jīng)在安排了。
?
這就是編程。一個許多人痛苦掙扎的焦油坑以及一種樂趣和苦惱共存的創(chuàng)造性活動,其中的樂趣遠(yuǎn)大于苦惱。