我為什麼痴迷於程式設計?

edithfang發表於2014-11-04
Quora上有人提問“為什麼有些人痴迷於程式設計”,有30年程式設計經驗的工程師Marcus Geduld給出了自己的答案。Marcus Geduld不僅是程式設計師,還是莎士比亞戲劇的導演,教師,作家和恐龍研究者。

我喜歡創造一些新的東西。這不能簡單地理解為我在程式設計時所做的工作,因為那些服務於我工作的硬體和軟體都是已經存在的,但它真的會讓人有一種在“創作”的感覺。當有了一個想法後,你可以從頭創造它,剛開始看到的就是一個空白沒有任何內容的編輯器,但完成之後,它就是一個可以執行的程式。

我喜歡創造讓別人可以使用的東西。敲上一段程式碼,加個按鈕,就可以讓成千上萬的人在網際網路上使用它,這是多麼奇妙的感覺。
 


我喜歡扮演“上帝”的角色。編寫程式就像構建了一個小型世界,在這裡我可以對裡面的東西進行調整和改變,並觀察效果。這就好像我擁有了一個玩具星球,然後說道:“我要讓它今天下雨,看!所有的人就都開啟了雨傘。”這種在程式設計中扮演上帝的感覺和寫小說,畫畫,當導演是相似的。

我喜歡在一種需要極度準確的系統中工作。這也是一些人厭惡程式設計的原因,但這一點很吸引我,一個寫錯位置的分號或很小的一個拼寫錯誤都會帶來災難性的後果。這讓我時刻保持著警覺,這就像作為一個莊園的管家一樣,每一件事都應該井然有序。一些人喜歡精準,一些人就不這樣,經常會說“我也說不好,你應該懂我的意思......”顯然,我是前者。

我喜歡解決難題。如果你想知道程式設計工作是否適合你,先試著看一些謎題類的書籍。

我喜歡做研究。程式設計是要查詢並閱讀很多文件和相關資料的。

我喜歡做實驗。程式設計會涉及大量的反覆的實驗。


      
我喜歡寫詩,這和程式設計很相似。詩人和程式設計師都會著迷於用詞,規則,表達,並看看他們能對這些有多大的推進作用。程式設計師經常談論某一語言的表達,這和詩人構思一個好的表達是一樣的。
      
 詩歌和程式碼都可以很精緻美麗,我是一個程式設計師,但我還導演了一些莎士比亞戲劇,很多人對此很驚訝,但我知道很多優秀的程式設計師都會參與戲劇,字謎遊戲,拼字遊戲等。

我喜歡交流。很多優秀的程式設計師都會告訴你程式碼首先要讓別人讀懂,甚至有時演算法沒有那麼高效,看也要有很強的易讀性。
       
Phil Karlton說過:“在電腦科學領域,有兩大難題,如何驗證快取和如何給各種東西命名。”我喜歡命名這件事,程式設計師經常需要在寫程式碼的過程中命名或進行標記,所以名字的清楚和恰當是十分重要的。
      
 為什麼它如此重要呢?當你命名了一個東西叫cButton,下一個人看到你的程式碼就會產生迷惑,但如果你把它命名為closeButton,他就會馬上知道你想表達的含義。最尷尬的就是,有時在幾周甚至一年後,你再看你自己寫過的程式碼,比如看到這個cButton,你也會問“我當時是怎麼想的”。
       
上週,我在修改別人的程式碼,它是用來劃分網頁的,每一部分在頂部都有一個Logo(標誌)。最開始寫程式碼的程式設計師把這些logo命名為header,比如header1,header2。我沒有注意,我把裡面其它一些東西命名為了header。所以當我後來再看這些程式碼時,就被那些混亂的header搞亂了。
       
我仔細思考了一下,意識到他的這些header都是對一些圖形的logo命名的,我的是對文字命名的,所以我重新進行了命名,把他的改為logo1和logo2,我的叫做titile,這樣就不會混亂了。這只是一個小的例子,或許你不喜歡這樣的工作,但我很享受其中。

我喜歡學習。和鯊魚一樣,程式設計師要不停的前進。技術的發展和變革是巨快的,作為程式設計師要一直學習。儘管我已經程式設計很多年了,我仍然需要持續不斷的看書,看部落格等等。不進則退!
       
有很多很好的程式設計書籍和課程,但是僅靠這些指導是遠遠不夠的,它只能幫你入門,真正要學到東西還需要你親自寫程式碼,出錯,分析除錯,然後從中吸取教訓。你要享受這樣自學的過程,我就是這樣的。

我喜歡偵查。大約有60%的程式設計工作都是在排查錯誤(debug),找到問題所在,這就意味著要有很多“偵查”工作。有時你要先將整個專案分解,然後再整合到一起。
 

      
我喜歡獨自工作。程式設計讓我有很多機會一個人工作,不受干擾。

我喜歡合作。如今,只有極少數的程式設計師是一個人完成所有的工作,更多的是一個團隊一起開發,一週的一部分時間是和同伴一起工作,另一部分時間是獨自的工作時間。我非常需要這樣兩種工作形式,我也很享受兩者交替進行。

原文:http://www.quora.com/Why-do-some-people-like-programming/answer/Marcus-Geduld

(翻譯:PHP100_Zeroing)
來自:PHP100
相關閱讀
評論(3)

相關文章