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