最近在看一本關于軟件工程的書《人月神話》,這本書在軟件開發(fā)領域極富盛名,雖然我不是軟件開發(fā)工程師,但這本書提及的很多編程和項目管理思想還是很吸引我。
在書的第一章,作者提到了編程的樂趣,他說編程起碼提供了5個方面的樂趣:
- 創(chuàng)建事務的純粹快樂
- 開發(fā)對他人有用的東西
- 組裝零部件成為一個有用的產品
- 為解決問題而持續(xù)學習
- 純粹的思維活動
這讓我想起知乎上有個問題:程序員的你,真的熱愛編程嗎?

有三百多個回答,大部分都覺得寫代碼是件開心的事情,當然也有可能是幸存者偏差,不喜歡編程的人連回答都懶得回答。
我接觸的很多程序員確實對編程都會有超越一般人的興趣,不僅僅是為了謀生而被迫去喜歡,更多是真的編程創(chuàng)作過程是有趣的。
我想可能編程是一種能產生心流的事情,為開發(fā)一個軟件,不斷地寫代碼、運行、測試、更新、迭代,最終創(chuàng)造出一個看得著的產品,且對他人有用,這是多么有成就感的事。
某位圖靈獎得主這樣描述描述編程:
神話和傳說的魔力在我們這一代成真,只要在鍵盤上敲下正確的咒語,顯示屏就像是活了過來,里面都是以前不可能存在或發(fā)生的事情。
這里分享一下《人月神話》原文:
編程為什么有趣?作為回報,它的從業(yè)者期望得到什么樣的快樂?
首先,這種快樂是一種創(chuàng)建事物的純粹快 樂。如同小孩在玩泥巴時感到快樂一樣,成年人喜歡創(chuàng)建事物,特別是自己進行設計。我想這種快樂是上帝創(chuàng)造世界的折射,一種呈現在每片獨特的、嶄新的樹葉和雪花上的喜悅。
其次,這種快樂來自于開發(fā)對他人有用的東西。內心深處,我們期望我們的勞動成果能夠被他人使用,并能對他們有所幫助。從這一角度而言,這同小孩用粘士為 “爸爸的辦公室”捏制鉛筆盒沒有任何本質的區(qū)別。
第三,快樂來自于整個過程體現出的一股強大的魅力一一將相互嚙合的零部件組裝在一起,看到它們以精妙的方式運行著,并收到了預期的效果。比起彈球游戲機或 自動電唱機所具有的迷人魅力,程序化的計算機毫不遜色。
第四,這種快樂是持續(xù)學習的快樂,它來自于這項工作的非重復特性。人們所面臨的問題總有這樣那樣的不同,因而解決問題的人可以從中學習新的事物,有時是實踐上的,有時是理論上的,或者兼而有之。
最后,這種快樂還來自于在易于駕馭的介質上工作。程序員,就像詩人一樣,幾乎僅僅在單純的思考中工作。程序員憑空地運用自己的想象,來建造自己的“城堡”。很少有創(chuàng)造介質如此靈活,如此易于精煉和重建,如此容易實現概念上的設想(不過我們將會看到,容易駕馭的特性也有它自己的問題)。
然而程序同詩歌不同,它是實實在在的東西;它可以移動和運行,能獨立產生可見的輸出;它能打印結果,繪制圖形,發(fā)出聲音,移動支架。神話和傳說中的魔術在我們的時代己變成現實。在鍵盤上鍵入正確的咒語,屏幕會活動、 變幻,顯示出前所未有的也不可能存在的事物。
編程的快樂在于它不僅滿足了我們內心深處進行創(chuàng)造的渴望,而且還喚醒了每個人內心的情感。