當然這個過程並不全都是快樂,它也有一些固有的苦惱。
首先,必須追求完美。計算機也以這種方式來變戲法。如果咒語的乙個字元、乙個停頓沒有與正確的形式嚴格一致,魔術不會出現。人類不習慣於完美,只有很少的人類活動需要它。我認為,向完美的方式進行調整是學習程式設計的最困難的部分。
其次,其它的人設定目標,供給資源,提供資訊。程式設計的人員很少控制工作的環境,甚至工作的目標。用管理的術語而言,某人的權威對他所承擔的責任是不充分的。不過,看起來在所有的領域中,對完成的工作,很少能提供與責任一致的正式的權威。而現實情況中,工作推進的動力需要實際(相對於正式)的權威。對其他人的依賴的影響比較突出,這對系統程式設計人員尤其痛苦。他依賴者其他人的程式。通常這些程式設計得不合理,實現拙劣,發布不完整(沒有源**或測試用例),或者文件記錄得很糟。所以系統程式設計人員必須花費時間研究和修改在理想情況下應該完整、可用和有用的東西。
下乙個煩惱——設計概念是有趣的,但尋找瑣碎的bug僅僅是一項工作。伴隨著創造性活動的,往往是枯燥、沉悶的時間,艱苦的勞動;程式編制工作也不例外。另外,人們發現除錯查錯具有線性的收斂,或者更糟的是具有二次方的複雜度。所以,測試一拖再拖,尋找最後乙個錯誤比第乙個錯誤花費更多的時間。
最後乙個苦惱,有時也是一種無奈——當某人花費大量勞動的產品在完成以前或完成時,顯得陳舊。可能同事和競爭對手已在追逐新的、更好的設想。可能替代的方案不僅僅在構思,而且已經在安排了。現實的情況通常比上述的好一些。當產品開發完成時,新的、更佳的產品通常並不可用;僅僅是被大家所談論。另外,它同樣需要數月的開發時間。事實上,僅現實需要時,才要求使用最新的設想。因為所實現系統的價值已能體現回報,滿足要求。
誠然,產品開發所基於的技術不斷在進步。一旦設計被凍結,在概念上就已經陳舊了。不過,實際產品的實現需要階段化和進行度量。實現的落後情況需要根據其它現有的系統進行測量,而非未實現的概念。我們所面臨的挑戰和任務是在現實的時間、有效的資源範圍內,尋找實際問題的切實可行的解決方案。
我的感受
奇怪的是,我從未覺得「向完美的方式進行調整是學習程式設計的最困難的部分」,恰恰相反,我認為這是程式設計吸引人的地方之一,這會讓人感覺自己更像「專家」。對第二條基本同意。尋找bug確實是乙個煩人的過程,但我們在尋找bug的時候都知道解決這個bug會給自己帶來怎樣的快樂。對第四條基本同意。
最後作者總結道:「這,就是程式設計。乙個許多人痛苦掙扎的焦油坑以及乙個樂趣和苦惱共存的創造性活動。對於許多人而言,其中的樂趣遠大於苦惱。」
《人月神話》筆記 職業的樂趣和苦惱
1 職業的樂趣 程式設計為什麼有樂趣?作為回報,它的從業者期望得到什麼樣的快樂?1 這種快樂是一種建立事物的純粹快樂。2 這種快樂來自於開發對他人有用的東西。3 快樂來自於整個過程體現出來的一股強大的魅力 將互相齒合的零部件組裝在一起,看到它們以精妙的方式執行著,並收到了預先所希望的效果。如 彈球遊...
作為程式設計師的苦惱
我是乙個工作三年多的程式設計師,做了三年多的開發工作,也有很多感悟。因為本人喜歡網際網路,也喜歡站在 產品 的角度思考問題,考慮行業狀態,產品的盈利模式,產品的ui設計,產品的功能規劃等等。但是我發現我的想法越多,在工作中,我反而越痛苦。當我對產品的想法與 客戶 的想法衝突時,往往是以我的妥協結束,...
《人月神話》讀書筆記1 職業的樂趣和職業的苦惱
本次閱讀人月神話,閱讀了職業的樂趣和職業的苦惱。通過對職業的樂趣的閱讀,我了解到作者對程式設計的樂趣的認識,作者形容的十分生動,就像孩子玩泥巴時一樣愉快,在程式設計時我們能夠體會到創造的樂趣,當別人使用我們創造的程式時我們又會獲得創造價值的成就感。通過對職業的苦惱的閱讀,我了解到作者對程式設計的苦惱...