編程樂趣苦惱

      網友投稿 713 2022-05-29

      本文是摘錄了《人月神話THE MYTHICAL MAN-MONTH》第一篇“焦油坑The Tar Pit”中的內容。【】中的內容是自己的一些想法,不好勿噴。

      職業的樂趣

      編程為什么有趣?作為回報,它的從業者期望得到什么樣的快樂?

      編程的樂趣與苦惱

      首先是一種創建事物的純粹快樂。如同小孩在玩泥巴時感到愉快一樣,成年人喜歡創建事物,特別是自己進行設計。我想這種快樂是上帝創造世界的折射,一種呈現在每片獨特、嶄新的樹葉和雪花上的喜悅。【創造絕對是生物的天性,從古至今,從自然界到人類,初期是為了生存,之后是為了生活乃至高質量的生活,再之后就是為了快樂。】

      其次,快樂來自于開發對其他人有用的東西。內心深處,我們期望其他人使用我們的勞動成果,并能對他們有所幫助。從這個方面,這同小孩用粘土為“爸爸辦公室”捏制鉛筆盒沒有本質的區別。【從我自身的角度,工作中我很喜歡寫工具類,當別人沒有選擇自己實現某個功能,而是使用我的工具類的時候,滿足感油然而生,這是不是虛榮心我不知道,但卻是聽開心的。】

      第三是整個過程體現出魔術般的力量——將相互嚙合的零部件組裝在一起,看到它們精妙地運行,得到預先所希望的結果。比起彈珠游戲或點唱機所具有的迷人魅力,程序化的計算機毫不遜色。【好幾個同事問我敲代碼有什么意思,我都很奇怪的反問:沒意思嗎?當你把一些亂七八糟的東西組合成一個有靈魂的系統,難道不覺得自己創造了世界嗎?不神奇嗎?】

      第四是學習的樂趣,來自于這項工作的非重復特性。人們所面臨的問題,在某個或其它方面總有些不同。因而解決問題的人可以從中學習新的事物:有時是實踐上的,有時是理論上的,或者兼而有之。【這一條應該算是一種挑戰,軟件行業日新月異,總有新的技術代替舊的技術,不想再這條路上被淘汰,只能不斷的學習。可能有人(我也是)把這條當做苦惱,應該還是道行太淺。】

      最后,樂趣還來自于工作在如此易于駕馭的介質上。程序員,就像詩人一樣,幾乎僅僅工作在單純的思考中。程序員憑空地運用自己的想象,來建造自己的“城堡”。很少有這樣的介質——創造的方式如此得靈活,如此得易于精煉和重建,如此得容易實現概念上的設想。(不過我們將會看到,容易駕馭的特性也有它自己的問題。)【我一直深信,程序員是一群很純粹的人,每天面對的是不會欺騙的電腦程序,沒有什么勾心斗角、爾虞我詐,團隊中講究的是精誠合作,沒有利益沖突。久而久之,自然而然就變得單純,有人說是“傻”,但我更喜歡“憨”這個字。就像郭靖,敲代碼的技術就是降龍十八掌,一招飛龍在天,一招潛龍勿用,再來一招亢龍有悔。。。】

      然而程序畢竟同詩歌不同,它是實實在在的東西;可以移動和運行,能獨立產生可見的輸出;能打印結果,繪制圖形,發出聲音,移動支架。神話和傳說中的魔術在我們的時代已變成了現實。在鍵盤上鍵入正確的咒語,屏幕會活動、變幻,顯示出前所未有的或是已經存在的事物。

      編程非常有趣,在于它不僅滿足了我們內心深處進行創造的渴望,而且還愉悅了每個人內在的情感。

      職業的苦惱

      然而這個過程并不全都是喜悅。我們只有事先了解一些編程固有的煩惱,這樣,當它們真的出現時,才能更加坦然地面對。

      首先,必須追求完美。因為計算機也是以這樣的方式來變戲法:如果咒語中的一個字符、一個停頓,沒有與正確的形式一致,魔術就不會出現。(現實中,很少的人類活動要求完美,所以人類對它本來就不習慣。)實際上,我認為學習編程的最困難部分,是將做事的方式往追求完美的方向調整。【工作中寫代碼,看到別人不良好的代碼,總是感覺不舒服,有點強迫癥了,看到這條,我瞬間感覺在20年之前就有大神說出了很多程序員的行為傾向。我們只是在追求完美,代碼的結構、效率、可讀性,每一點都做得很好,這才是我們想要的。】

      其次,是由他人來設定目標,供給資源,提供信息。編程人員很少能控制工作環境和工作目標。用管理的術語來說,個人的權威和他所承擔的責任是不相配的。不過,似乎在所有的領域中,對要完成的工作,很少能提供與責任相一致的正式權威。而現實情況中,實際(相對于正式)的權威來自于每次任務的完成。

      對于系統編程人員而言,對其他人的依賴是一件非常痛苦的事情。他依靠其他人的程序,而往往這些程序設計得并不合理,實現拙劣,發布不完整(沒有源代碼或測試用例),或者文檔記錄得很糟。所以,系統編程人員不得不花費時間去研究和修改,而它們在理想情況下本應該是可靠完整的。【大家都懂得,滿滿的都是心酸。。。】

      下一個煩惱——概念性設計是有趣的,但尋找瑣碎的bug卻只是一項重復性的活動。伴隨著創造性活動的,往往是枯燥沉悶的時間和艱苦的勞動。程序編制工作也不例外。另外,人們發現調試和查錯往往是線性收斂的,或者更糟糕的是,具有二次方的復雜度。結果,測試一拖再拖,尋找最后一個錯誤比第一個錯誤將花費更多的時間。【有人說程序就是改不完的bug,自己實現的功能的bug,糟糕架構引起的bug,需求的變更及其引起的bug。有時候,一個開始很好的項目,在修改bug的過程中,變成了一堆很糟糕的補丁加補丁,不得不推倒重來,就像我們組現在推倒重來的這個項目。】

      最后一個苦惱,有時也是一種無奈——當投入了大量辛苦的勞動,產品在即將完成或者終于完成的時候,卻已顯得陳舊過時。可能是同事和競爭對手已在追逐新的、更好的構思;也許替代方案不僅僅是在構思,而且已經在安排了。

      現實情況比上面所說的通常要好一些。當產品開發完成時,更優秀的新產品通常還不能投入使用,而僅僅是為大家談論而已。另外,它同樣需要數月的開發時間。事實上,只有實際需要時,才會用到最新的設想,因為所實現的系統已經能滿足要求,體現了回報。

      誠然,產品開發所基于的技術在不斷地進步。一旦設計被凍結,在概念上就已經開始陳舊了。不過,實際產品需要一步一步按階段實現。實現落后與否的判斷應根據其它已有的系統,而不是未實現的概念。因此,我們所面臨的挑戰和任務是在現有的時間和有效的資源范圍內,尋找解決實際問題的切實可行方案。【其實對于這一點并沒有那么苦惱的,一門新技術的出現到投入真正的實際生產中,中間需要很長一段時間的檢測及眾多小白鼠(我很喜歡當小白鼠)的參與,一味的追求最新技術,可能被淘汰得更快。】

      這,就是編程。一個許多人痛苦掙扎的泥沼以及一種樂趣和苦惱共存的創造性活動。對于許多人而言,其中的樂趣遠大于苦惱。

      開發者

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:Java基礎 第三節 第二課
      下一篇:Java注釋總結
      相關文章
      亚洲av产在线精品亚洲第一站| 亚洲黄网站wwwwww| 国产精品亚洲精品| 亚洲天堂一区二区三区| 精品亚洲国产成AV人片传媒| 亚洲AV无码成人精品区在线观看| 国产av无码专区亚洲国产精品| mm1313亚洲精品国产| 国产精品久久久久久亚洲小说| 亚洲乱妇老熟女爽到高潮的片| 亚洲中文字幕无码中文| 亚洲日韩精品无码AV海量| 亚洲日本在线电影| 亚洲Av永久无码精品一区二区| 亚洲国产成人精品无码区花野真一| 亚洲日韩精品无码专区| 亚洲avav天堂av在线网毛片| 国产精品亚洲专区无码牛牛| 亚洲av成本人无码网站| 亚洲电影日韩精品| 亚洲一区二区三区在线播放| 中文字幕亚洲无线码| 亚洲乱码国产乱码精品精| 亚洲成AV人片天堂网无码| 久久亚洲私人国产精品vA | 亚洲AV天天做在线观看| 亚洲成人在线网站| 亚洲黑人嫩小videos| 亚洲国产成人在线视频| 亚洲国产乱码最新视频| 亚洲精品GV天堂无码男同| 自拍偷自拍亚洲精品偷一| 亚洲精品无码久久毛片| 亚洲老妈激情一区二区三区| 亚洲产国偷V产偷V自拍色戒| 91亚洲精品第一综合不卡播放| 亚洲国产精品综合久久2007| 亚洲人成欧美中文字幕| 亚洲成人国产精品| 国产AV无码专区亚洲A∨毛片| 色拍自拍亚洲综合图区|