2008/07/04

程式設計師還是工程師 Programmer or Engineer

中譯來自電子工程專輯, 英文來自Embedded.com。後面再來以回覆的方式寫我自己的看法。

‘程式設計師’這個詞應該從字典中刪除。

我痛恨‘程式設計師’(programmer)這個詞,雖然我承認經常使用它,因為它在我們的文化中太根深蒂固了。就像那些無意說出的粗魯詞句,儘管不斷出現,但是又缺乏有效的防治方法。

Dictionary.com將‘程式設計師’定義為‘編寫電腦程式的人員;對設備(尤其電腦)進行編程的人員’

編寫程式的人稱為程式設計師。這個描述更像是‘編碼員’,日復一日地編寫著程式碼。編碼人員,如同技師及看門員一樣,都是不可缺少的員工。但是他們可能成為一個軟體專案的破壞性因素。

我認為,軟體專案失敗的十大理由之一,是團隊無法抗拒開始編碼的衝動。編碼不過只是軟體工程的一部份,類似於為橋鋪路面。沒有路面我們無法通過,但橋樑施工需要仔細的工程規劃、分區、籌款以及其他眾多比鋪路更複雜的活動,同時對於最終的結果來說也更重要。

糟糕的鋪路可以重來或進行修補,但是糟糕的橋樑設計可能會倒塌。劣質的軟體工程必將帶來專案的失敗,即使編碼人員(程式設計師)做得再好也無力回天。

我們之中大部份人是工程師:軟體工程師,韌體工程師,或是硬體/軟體工程師,儘管我們水準各異。實際上,近期的嵌入式網調查顯示只有13%的受訪者擁有電腦科學學位;80%具有工程學(EE或CE)的學位。

工程是一門解決問題的藝術,也可以說就是建構韌體。由架構設計開始,在這個過程中,我們思考如何設計、規格、團隊、工具以及得到解決方案的方法。

接著我們開始設計-這裡特別強調‘設計’-一個強壯的基礎。使用OS還是不用OS?劃分為多個處理器?我們如何劃分問題使其方便解決?何種資料結構更有效?

這時,編碼才真正開始,某種程度上講編碼可以交給另一個組織,或許採用外包方式。

編碼相對簡單;軟體工程卻很困難。軟體工程師是負責以某種合理的可重複方式建構可靠系統重任的專家

3 意見:

菠蘿麵包 提到...

個人倒沒這麼強烈的排斥 Programmer. 只是個名詞而已。

話說回來,這個數據還真令人驚訝:「近期的嵌入式網調查顯示只有13%的受訪者擁有電腦科學學位;80%具有工程學(EE或CE)的學位。」也許做硬體的比做軟體的多造成的吧。

不管把自己怎麼定位,我也相信人在智力上有高下,但是,身為一位軟體程式人員,也就是 Software Programmer,應該,也必須,在進行寫程式之前深思那好幾個 W/H:

我在做的東西是什麼?
是要給誰用的?
能帶來什麼好處?
有沒有我還沒想到的可能性,只是我做不到?
會用到什麼資源?
我該怎麼做?
有哪些人同時參與?
跟別人的合作該如何進行?
屬於我的部份還能模組化嗎?
該選用什麼工具(或程式語言)來進行編碼?
在進行編碼之前,是否已將規格與介面定義清楚?
說明文件準備好了嗎?

上面的問題或許還有遺漏,但是若還沒做好就開始編碼,往後的日子肯定會問題重重,不是未符規定,就是重新編碼,要不,你還會看到諸多臭蟲爬來爬去。

好吧,寫程式之前要這麼多工作,那是不是又要分工一次?

這麼多工作,到底還要不要我編碼?

菠蘿麵包 提到...

很多人,甚至是上層管理者,沒看到程式碼就內心不安,這是造成工程師壓力的主要來源。

而更多程式寫作人員,在其內心太信任自己,覺得與其浪費時間在那些高空樓閣的建構,不如直接開始寫程式,也是造成一直不斷修補漏洞重要的原因。

Kerwin 提到...

大型專案,設計整合優於程式開發
小型專案,邊寫邊設計也是OK的
====隨便屁一下...:)