從三個(gè)方面分析軟件開(kāi)發(fā)過(guò)程中的幾個(gè)誤區(qū)
軟件已經(jīng)成為了以計(jì)算機(jī)為運(yùn)行平臺(tái)的系統(tǒng)和產(chǎn)品發(fā)展和進(jìn)化中的關(guān)鍵因素, 而且是已經(jīng)變成了世界這個(gè)大舞臺(tái)上最重要的技術(shù). 他們已經(jīng)從最初的解決和分析特定問(wèn)題的工具演變成今天一個(gè)軟件行業(yè).
然而, 作為軟件開(kāi)發(fā)過(guò)程的一部分, 就算是今天, 要求我們?cè)谙薅ǖ念A(yù)算內(nèi),很及時(shí)的交付高質(zhì)量的軟件產(chǎn)品, 也不是件容易的事. 造成目前這種現(xiàn)狀的原因有很多,今天我們就從特定的角度去分析這些原因.
首先我們從軟件開(kāi)發(fā)經(jīng)理的角度去分析原因:
軟件開(kāi)發(fā)項(xiàng)目經(jīng)理和其他行業(yè)的項(xiàng)目經(jīng)理大致一樣, 他們需要控制自己的預(yù)算, 項(xiàng)目計(jì)劃和項(xiàng)目的質(zhì)量. 由于軟件行業(yè)在幾十年的發(fā)展過(guò)程中, 已經(jīng)形成了軟件開(kāi)發(fā)自有的規(guī)范和流程, 而且這些標(biāo)準(zhǔn)的規(guī)范和流程已經(jīng)得到了實(shí)踐和時(shí)間的考驗(yàn) ,已經(jīng)有很大的參考價(jià)值. 但是, 軟件行業(yè)是一個(gè)變化和進(jìn)化非常快的行業(yè), 每個(gè)軟件的開(kāi)發(fā)都有自己的特性. 如果項(xiàng)目經(jīng)理把這些規(guī)范和流程當(dāng)作教條一樣去遵守和執(zhí)行, 一味的生搬硬套,就會(huì)產(chǎn)生各種各樣的問(wèn)題,我們來(lái)看看現(xiàn)存的一些誤區(qū):
誤區(qū)1: 目前現(xiàn)有的軟件開(kāi)發(fā)已經(jīng)有足夠的標(biāo)準(zhǔn)和流程, 我們不需要再給軟件開(kāi)發(fā)過(guò)程中的參與者提供其他的額外的信息
現(xiàn)實(shí): 盡管存在軟件開(kāi)發(fā)的流程和標(biāo)準(zhǔn), 但是否他們對(duì)我們有用? 軟件開(kāi)發(fā)者是否知道和了解這些流程? 這些標(biāo)準(zhǔn)和流程是否包括了現(xiàn)代軟件開(kāi)發(fā)實(shí)踐? 我們所要開(kāi)發(fā)的軟件是否有自己的特色? 因此, 作為軟件開(kāi)發(fā)經(jīng)理, 我們要針對(duì)特定的軟件和軟件開(kāi)發(fā)團(tuán)隊(duì)構(gòu)成, 在現(xiàn)有的標(biāo)準(zhǔn)和流程之上, 制定適合自己的開(kāi)發(fā)標(biāo)準(zhǔn)和流程.
誤區(qū)2: 如果開(kāi)發(fā)進(jìn)度落后了, 我們只要多加幾個(gè)人就可以了
現(xiàn)實(shí): 軟件開(kāi)發(fā)并流程和制造業(yè)的機(jī)械流程還是有區(qū)別的. 曾經(jīng)在一本書(shū)上看到過(guò)一句話” Adding people to a late software project makes it later”. 當(dāng)我們?cè)陧?xiàng)目開(kāi)發(fā)的過(guò)程中添加開(kāi)發(fā)人員時(shí), 我們必須花大量的時(shí)間去培訓(xùn)他, 因此, 我們就相應(yīng)的減少了我們有效的開(kāi)發(fā)時(shí)間. 當(dāng)然并不是不可以加人, 但一定要有計(jì)劃的,配合協(xié)調(diào)好的情況下家人, 才能增加實(shí)際的開(kāi)發(fā)效率.
誤區(qū)3: 如果我們項(xiàng)目外包給第三方的公司. 我就什么都不需要做了.
現(xiàn)實(shí): 如果一個(gè)公司不知道如何去管理和控制內(nèi)部的軟件項(xiàng)目, 即使他們外包出去, 也一樣存在各種各樣的困難, 比如與客戶(hù)的交流, 項(xiàng)目后期的維護(hù)等問(wèn)題,這些問(wèn)題. 不是說(shuō)你外包了, 你就不需要承擔(dān)這些責(zé)任了.
其次,我們從客戶(hù)的角度去分析原因:
客戶(hù), 就是軟件需求者,他們有些是只懂業(yè)務(wù)的人. 因此, 如果項(xiàng)目經(jīng)理和開(kāi)發(fā)人員沒(méi)有對(duì)需求有非常深入的了解, 就可能在今后的開(kāi)發(fā)過(guò)程中留下后患.
誤區(qū)1: 一個(gè)大致的軟件需求, 已經(jīng)足以讓項(xiàng)目進(jìn)入開(kāi)發(fā)階段, 我們可以在后續(xù)階段提供更詳細(xì)的需求.
現(xiàn)實(shí): 這是目前大多軟件公司,特別是小軟件公司存在的現(xiàn)狀, 往往客戶(hù)都不知道自己到底需要怎么樣的系統(tǒng), 往往是項(xiàng)目經(jīng)理和開(kāi)發(fā)人員在引導(dǎo)客戶(hù)提出需求. 因此在這種情況下,變化絕對(duì)是不可避免,而且是常有的, 往往我們花幾天時(shí)間做了這個(gè)功能, 過(guò)幾天, 客戶(hù)突然說(shuō)不要這個(gè)功能, 而又增加別的功能. 因此, 在項(xiàng)目開(kāi)發(fā)之前,一個(gè)清晰的需求是必須的. 這就需要開(kāi)發(fā)人員和客戶(hù)必須進(jìn)行持續(xù)不斷的,有效的溝通.
誤區(qū)2: 項(xiàng)目需求變更對(duì)軟件開(kāi)發(fā)是沒(méi)有多大影響的, 因?yàn)檐浖庆`活的, 可擴(kuò)展的.
現(xiàn)實(shí): 對(duì)于軟件開(kāi)發(fā),規(guī)避需求變更絕對(duì)是不可能的. 但是需求變更出現(xiàn)在何時(shí)對(duì)軟件開(kāi)發(fā)的影響是大不相同的. 當(dāng)需求變更出現(xiàn)在設(shè)計(jì)和開(kāi)發(fā)之前,影響是最小的. 隨著軟件開(kāi)發(fā)過(guò)程的深入,影響是越來(lái)越大, 成本也越來(lái)越大
***我們從開(kāi)發(fā)人員角度去分析
作為一個(gè)開(kāi)發(fā)人員,可能我們是除了代碼以外的東西,我們基本上不會(huì)過(guò)問(wèn). 曾經(jīng)何時(shí), 軟件開(kāi)發(fā)被作為一種藝術(shù)創(chuàng)作,然而隨著進(jìn)入的門(mén)檻越來(lái)越低, 開(kāi)發(fā)人員的規(guī)模就越來(lái)越大, 軟件就越來(lái)越遠(yuǎn)離藝術(shù)了,而問(wèn)題就越來(lái)越多了.
誤區(qū)1: 作為開(kāi)發(fā)人員, 當(dāng)我們做出來(lái)的東西能正常運(yùn)行了,我們的工作就結(jié)束了.
現(xiàn)實(shí): 記得有人說(shuō)過(guò) ”The sooner you begin writing code, the longer it’ll take you to get done”. 曾經(jīng)有統(tǒng)計(jì)數(shù)據(jù)顯示: 軟件開(kāi)發(fā)過(guò)程中60%-80%的努力都被花費(fèi)在***次遞交系統(tǒng)給客戶(hù)之后. 因此如何開(kāi)發(fā)出高質(zhì)量的穩(wěn)定的軟件才是我們開(kāi)發(fā)人員的目標(biāo).
誤區(qū)2: 除非系統(tǒng)能運(yùn)行了,否則我無(wú)法評(píng)估系統(tǒng)的質(zhì)量.
現(xiàn)實(shí): 我相信這也是我們開(kāi)發(fā)團(tuán)隊(duì)中常見(jiàn)的問(wèn)題, 其實(shí)在項(xiàng)目的開(kāi)始階段我們就可以通過(guò) ”formal technical review” 來(lái)確保系統(tǒng)的質(zhì)量. 因?yàn)檫@種檢查往往比測(cè)試檢查出來(lái)的具體的錯(cuò)誤更能有效的改進(jìn)系統(tǒng)的質(zhì)量和性能.
誤區(qū)3: 對(duì)于一個(gè)成功的項(xiàng)目,我們唯一能交付的就是一個(gè)運(yùn)行很好的系統(tǒng).
現(xiàn)實(shí): 一個(gè)可以正常工作的系統(tǒng)只是軟件配置的一個(gè)部分. 軟件配置包括更多的東西,比如: 文檔. 文檔往往是系統(tǒng)開(kāi)發(fā)成功的基礎(chǔ),也能為日后的系統(tǒng)維護(hù)提供參考.
誤區(qū)4: 現(xiàn)有的規(guī)范和流程,只是讓我們浪費(fèi)更多的時(shí)間去完成一些沒(méi)用的文檔.
現(xiàn)實(shí): 這是一個(gè)普遍的問(wèn)題,特別是像我們這樣初涉軟件領(lǐng)域的人. 我們往往認(rèn)為, 軟件開(kāi)發(fā)就是寫(xiě)代碼. 然而, 軟件開(kāi)發(fā)一個(gè)復(fù)雜的活動(dòng), 它包含了需求調(diào)研, 系統(tǒng)設(shè)計(jì), 開(kāi)發(fā), 部署, 維護(hù)等活動(dòng). 而且現(xiàn)有規(guī)范和流程目的并不是讓你去完成文檔, 而是通過(guò)這些文檔, 讓軟件的質(zhì)量更能得到保證.
軟件開(kāi)發(fā)過(guò)程是一個(gè)進(jìn)化的過(guò)程, 有問(wèn)題出現(xiàn)是好事. 有問(wèn)題可能改進(jìn), 有問(wèn)題才能通過(guò)解決這些問(wèn)題來(lái)完善現(xiàn)有的開(kāi)發(fā)標(biāo)準(zhǔn)和流程.
【編輯推薦】