程序員都是工程師嗎?
英文原文:Are Programmers Engineers?
為了吸引注意力,Slashdot 提出了一個備受爭議的老話題:所有的程序員都是工程師嗎?
當然不是。
我曾經卻不這么認為。我的母校是伊利諾伊大學香檳分校,計算機科學系是工程學院的。我可以證明,這好幾年都在學和工程師一樣的課程。
正因為很多學校把計算機科學歸于工程學院,很多程序員畢業之后都以為他們和工程師沒什么區別。但是差別很快就會顯現出來。
工程師是必修課,程序員則是選修。
要做一個工程師,你就必須獲得授權。你必須通過專業的工程師考試。在工程這個領域,你必須有證書來證明你知道正確答案。在法律專業,也是這樣。 我非常確定對于著作權法的了解我比一些小型城市的律師強。然而他們可以在這個領域內發表一些自己的觀點,但是我就不行。工程學也如此。有些事情只有有執照 的工程師做才合法。
但是每一個人都可以編程。
工程師為自己的事業工作,而程序員做他們喜歡做的事情。
通常,工程師比程序員擁有更高的學位。有人認為他們想證明自己,但是我認為,這源于對事業的選擇。許多程序員都是因為興趣編程,并逐漸地變得專業。我就是這樣。很多年前我還不會開車的時候就會編程了。有時候,我們做了錯誤的決定,正是因為混淆了愛好和專業的區別。
工程師卻不是這樣。人們不會將橋梁建筑作為他們的愛好,而選擇將成為橋梁工程師作為自己的事業。工程師們通常將他們的工作作為自己的事業,因為這一直都是他們的夢想。
工程師理解地更深,程序員通常不知道他們在做什么。
通常,工程師可以預測工作流程。他們不會陷入紛繁復雜的參數中,不必糾結于使用什么方法來完成項目。讓他們來估測一個項目,通常會得到準確的答案。
到現在為止,沒有管理軟件項目的通用方法。每個人的方法都不同。一些人幾乎沒有用什么程序,卻得到了驚人的結果;一些人用傳統的方法論,卻不能按時解決問題。
工程是實實在在的,編程是抽象的。
工程師使用的是物理的東西,像力學,電和熱。當工程師建造什么東西的時候,通常是實實在在的事物,可以摸得到,可以拿在手上,甚至可以保持它的形態度過幾個世紀。
編程利用的是一些抽象的東西。我們創造變量并賦予他們名字,通過操作它們來創造事物。當產品最后完成的時候,不需要什么制作流程。成品不過是一 些字節。理論上講,如果一只猴子在鍵盤上敲打,也有幾率敲出相同的字節。這樣生產處的產品是看不見摸不著的,可能在幾年之后,就不再有什么價值了。
我的意思并不是說工程師就比程序員更有價值。我能建造出一座橋,一臺電視,或者一條小舟嗎?不,但我藐視一切能建造它們,部署優秀控制系統的工程師。因為程序員同樣解決了困難的問題。
我們的大學,由于沒有適合我們的學院,而將我們稱為「工程師」。我不會怪他們,因為我并不會期望借「工程師」這幾個字來獲得更多的尊重。
為什么就不接受軟件開發是一個特殊的行業呢?我們必須承認沒有別的領域,像編程這樣。工程師對我來說太枯燥。
我喜歡做一個程序員。
<span id="shareA4" class="fl">
</span>