|
本文是從 I am not an engineer - I’m a software developer 這篇文章翻譯而來。
在《Object-Oriented Software Development Using Java》這本書的導言部分,第8-9頁上的“軟件開發(fā)過程是工程化的過程嗎?”一節(jié)中,Xiaoping Jia寫道:
…對于“軟件工程”這個詞的精確定義仍然沒有多少共識,就連使用“軟件工程師”作為一個專業(yè)職稱的正當性也受到質(zhì)疑…
工程(engineering)和工藝(craftsmanship)之間的一個關鍵區(qū)別就是,工程的成功可以通過事前對設計的科學分析而得到保證,而工藝的成功卻是通過當前的和之前的制作上的試驗和失誤獲得的…
在某些非常成熟的工程化領域里,失敗、有時甚至是災難難以杜絕…但相同的失敗卻很少會重復發(fā)生…而對于軟件開發(fā),相同類型的失敗比比皆是。
成熟的工程化領域里的成功很大的原因在于對知識的規(guī)范和積累,重復利用以前的解決方案…對于軟件開發(fā),盡管有積累的大量的經(jīng)驗和設計技術,卻很少有被系統(tǒng)化的整理過的…
所以,軟件開發(fā)是一項跟傳統(tǒng)的工程方法有很大的不同的活動。充其量也只是一個不成熟的工程學科。軟件開發(fā)如果想成為真正的工程方法,軟件開發(fā)人員必須要機械的去執(zhí)行設計分析,確保已知的失誤不會重現(xiàn),把設計知識系統(tǒng)化。
我不是一個工程師。我是一個軟件開發(fā)者。在跟一個是工程師的朋友交談中,我問他覺得我和他的工程作業(yè)上最大的不同是什么。他沒有想太久。“我的產(chǎn)品都是大規(guī)模生產(chǎn)的。”
我是一個軟件開發(fā)者。在我的想象里,就像Jia指出的,我們更接近是手藝人,而不是工程師。但我所說的“手藝”跟Jia說的有很大的不同,我所指的不僅僅是開發(fā)過程和工程過程之間的交集,更指的是讓軟件成為工藝品的工藝流程方法。
我既不是一個計算機科學家,也不是一個業(yè)余人士,既不是一個專家,也不是一個新手。我處在中間,我靠寫代碼為生。
it知識庫:我不是一個工程師 – 我是一個軟件開發(fā)者,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。