之前我在工(gōng)作(zuò)負責的(de)四個(gè)模塊的(de)軟件(jiàn)開(kāi)發任務,在經過軟件(jiàn)設計(jì)實現$(xiàn)和(hé)編碼之後提交使用(yòng)測試,發現(xiàn)軟件(jiàn)的(de)實現(xiàn)與實際要(∞yào)求差距比較大(dà),需要(yào)返回重新修改,提交使用(yòng)發現(xiàn)問(wèn)題再修改……如(rú±)此反複多(duō)次,直到(dào)最後發現(xiàn)幾個(gè)功能(néng)模塊是(shì)暫時(shí)沒有(yǒu)問®(wèn)題,消耗了(le)大(dà)量的(de)時(shí)間(jiān)和(hé)熱(rè)情。不(bù)由的(de)在這(zhè)÷個(gè)開(kāi)發測試過程中會(huì)産生(shēng)如(rú)下(xià)疑問(wèn):
為(wèi)什(shén)麽會(huì)造成如(rú)此多(duō)次的(de)反複?最初的(de)需求和(hé)最終的(de)×功能(néng)實現(xiàn)之間(jiān)為(wèi)什(shén)麽會(huì)産生(shēng)如(rú)此大(dà)的€(de)差距?産品設計(jì)人(rén)員(yuán)的(de)想法是(shì)否準确的(de)傳遞給了(le)研φ發人(rén)員(yuán)?設計(jì)人(rén)員(yuán)在研發人(rén)員(yuán)開(kāi)始≈動手寫代碼之前如(rú)何确認他(tā)已經明(míng)确自(zì)己要(yào)幹什(shén)麽了(le)?
從(cóng)軟件(jiàn)開(kāi)發工(gōng)程角度講,一(yī)個(gè)軟件(jiàn)産品從(cóng)構思到(dào)實現(xiàn)需要(yào)經<過以下(xià)系列嚴格的(de)流程,1:産品設計(jì) 2:軟件(jiàn)設計(jì)3:軟件(jiàn)實現(xiàn)↑4:測試并發布;通(tōng)常這(zhè)幾個(gè)步驟都(dōu)是(shì)不(bù)同的(de)團隊完成的(de),所以重點就(jiù)是(shì)确保設計(jì)思δ想一(yī)步步落實!
産品設計(jì)思想通(tōng)常是(shì)市(shì)場(chǎng)人(rén)員(yuán)π提出的(de),軟件(jiàn)設計(jì)人(rén)員(yuán)在産品設計(jì)思想基礎上(shàng)進行(xíng)設計(jì)↕,編碼人(rén)員(yuán)在軟件(jiàn)的(de)設計(jì)基礎上(shàng)開(kāi)發,測試人(rén)員(yuán)在軟件(jiàn)上δ(shàng)進行(xíng)測試,
如(rú)果把研發比做(zuò)傳話(huà)遊戲的(de)話(huà),從(cóng)編碼人(rén)員(yuán)的(de)角度,我遇到(dào)的(de)問↔(wèn)題是(shì):我并不(bù)理(lǐ)解傳給我的(de)話(huà)的(de)意思,也(yě)不(bù)确定傳給我的(de)話(huà)$是(shì)否就(jiù)是(shì)紙(zhǐ)條上(shàng)的(de)那(nà)句,造成的(dλe)結果是(shì),我并不(bù)熟悉自(zì)己設計(jì)并完成的(de)模塊,完成了(le)軟件(jiàn)心裡(lǐ)面也(yě)不(bù)踏實,因為(wèi)當編碼完成發布→之後,使用(yòng)的(de)人(rén)員(yuán)很(hěn)容易發現(xiàn)“顯而易見(jiàn)”的(de)錯(cuò)誤,而我自(zì)己卻不(bù)知(zhī)道(dào)修改'的(de)方向,使用(yòng)人(rén)員(yuán)見(jiàn)到(dào)産品才發現(xià§n)問(wèn)題,返工(gōng),再測試,再發現(xiàn)問(wèn)題,再返工(gōng),再測試……這(zhè)的(de$)确是(shì)正規軟件(jiàn)的(de)流程,但(dàn)是(shì)否使用(yòng)的(de)太多(duō)了(le)?
如(rú)何才能(néng)提高(gāo)軟件(jiàn)研發效率,減少(shǎo)返工(gōng)?怎樣才能(néng)讓軟件(jiàn)使用(yòng)者在的(de)一(yī)眼看(kàn)到α(dào)研發的(de)作(zuò)品之後說(shuō):好(hǎo),這(zhè)就(jiù)是(shì)我想要(yào)的(de)東(dōng)西(xī)。
解決方案,兩種典型的(de)研發方法
方法一(yī):重視(shì)編碼
傳統的(de)研發方法是(shì)輕視(shì)設計(jì),重視(shì)編碼,大(dà)量的(de)時(shí)間(jiān)用(yòng)于編碼,÷代碼任務很(hěn)快(kuài)完成,但(dàn)是(shì)從(cóng)産品整體(tǐ)角度講,研發團隊如(rú)果沒有(yǒu)真正理(lǐ)解産品設計(jì)思想,很(hěn)容易造成軟件→(jiàn)設計(jì)和(hé)開(kāi)發的(de)偏差,造成很(hěn)多(duō)問(wèn)題在産品完成時(shí)才發現(xiàn),它們應該在沒有(yǒu)動筆(≤bǐ)寫代碼之前就(jiù)被避免,從(cóng)而陷入無限制(zhì)的(de)發布,修改bug,再發布……的(de)恐怖循環。
方法二:重視(shì)設計(jì)
正确的(de)合理(lǐ)的(de)設計(jì)和(hé)研發計(jì)劃中,設計(jì)和(hé)理(lǐ)解設計(jì)是(s♣hì)占很(hěn)大(dà)的(de)一(yī)部分(fēn)時(shí)間(jiān)的(de),大(dà)概應該是(shì)完成産品總時(shí)間(jiān)的(de)30%~40%,之後是(shì)研發人(rén)員(yuán)的(de)理(lǐ)解和(hé)完成測試文(wén)檔,我喜歡測試優先的(de)想法,因為(£wèi)實際效果很(hěn)省力,最後才是(shì)編碼,編碼時(shí)間(jiān)占30%~40%,從(cóng)産品整體(tǐ)角度講,這(zhè)是(shì)↔被證明(míng)的(de),有(yǒu)效率有(yǒu)效果的(de)方法。
重視(shì)設計(jì)成功經驗
步驟一(yī):市(shì)場(chǎng)的(de)産品設計(jì),團隊中核心人(rén)員(yuán)參與人(rén)員(yuán)討(tǎo)論,确定産品方向;
步驟二:研發團隊核心人(rén)員(yuán),討(tǎo)論确定研發的(de)計(jì)劃和(hé)預見(jià n)技(jì)術(shù)難點,确定研發計(jì)劃,討(tǎo)論技(jì)術(shù)難點的(de)解決步驟,做(zuò)到(dào)心中有(yǒu)數(s→hù);
步驟三:把研發計(jì)劃告知(zhī)給研發工(gōng)程師(shī),并要(yào)求研發工(gōng)程師(shī)花(φhuā)時(shí)間(jiān)理(lǐ)解需求和(hé)設計(jì),遇到(dào)難點溝通(tōng)反饋,總工(gōng)程師(shī)開(kāi)會(huì)♠統一(yī)解決研發疑問(wèn),沒有(yǒu)疑問(wèn)之後,研發開(kāi)始寫測試文(wén)檔。
步驟四:研發工(gōng)程師(shī)講述自(zì)己的(de)測試文(wén)檔,研發核心團隊評審,提出不(bù)足與改進意見(jiàn),把研發過程種造成¶的(de)偏差扼殺在寫代碼之前。
步驟五:研發工(gōng)程師(shī)在動手開(kāi)發之前,頭腦(nǎo)裡(lǐ)面已經很(hěn)清楚自(zì)己要(yào)做(zuò)的(de)≤任務,之後的(de)工(gōng)作(zuò)就(jiù)是(shì)按照(zhào)測試文(wén)檔實現(xiàn)功能(néng)點就(jiù)可(kě)以了(le)。
按照(zhào)以上(shàng)研發軟件(jiàn)的(de)步驟,結果是(shì)減少(shǎo)了(le)研發人(rén)員(yuán)的(de)bu$g,提高(gāo)了(le)軟件(jiàn)研發的(de)效率,減少(shǎo)了(le)測試回合;s這(zhè)樣的(de)開(kāi)發方式要(yào)求研發團隊的(de)核心人(rén)員(yuán),腦(nǎo)中有(yǒu)清楚的(de)産品模樣,有(yǒu)清楚→的(de)開(kāi)發思路(lù),并且把實現(xiàn)要(yào)求貫徹給研發人(rén)員(yuán),并确認研發人(rén)員(yuán)真正理(lǐ)解了(le)自(zì)己想做(↑zuò)的(de)事(shì)情而不(bù)會(huì)産生(shēng)偏差。
怎樣提高(gāo)軟件(jiàn)研發的(de)效率
根據以往的(de)工(gōng)作(zuò)經驗,從(cóng)研發角度看(kàn),流行(xíng)的(de)有(y←ǒu)效的(de)解決辦法 我認為(wèi)是(shì):
第一(yī):一(yī)份研發人(rén)員(yuán)自(zì)己寫的(de)測試文(wén)檔(也(yě)就(jiù)是(shì)常說(shuō)的(de)極限編程₽,研發自(zì)己的(de)測試方案在寫代碼之前完成);或者别的(de)有(yǒu)被實踐證明(míng)簡便有(yǒu)效的(de)方法;δ
第二:teamleader需要(yào)确認研發人(rén)員(yuán)是(shì)否真懂(dǒn¶g)得(de)了(le)自(zì)己要(yào)做(zuò)的(de)東(dōng)西(xī);至于如(r→ú)何确認,我的(de)經驗是(shì)研發人(rén)員(yuán)在認為(wèi)自(zì)己理(lǐ÷)解了(le)設計(jì)文(wén)檔之後,自(zì)己給設計(jì)和(hé)産品詳細講一(yī)下(xià)到(dào)φ底要(yào)做(zuò)什(shén)麽東(dōng)西(xī),做(zuò)出來(lái)是(shì)什(shén)麽樣子(zǐ);或者别的(∞de)被實踐證明(míng)簡便有(yǒu)效果的(de)方法。
經驗總結
軟件(jiàn)研發的(de)本質是(shì)軟件(jiàn)工(gōng)程師(shī)用(yòng)程序語言表達出産品的(de)設計(jì)思想,軟件(jiàn)産品的(de)好(hǎo)壞在σ于創造産品的(de)工(gōng)程師(shī)們對(duì)于産品設計(jì)思想的(de)理(lǐ)解程度。優秀的(de)軟件(jiàn)研發團隊中,有(yǒu)著(zhe)一(yī)個(gè)→很(hěn)重要(yào)的(de)特點:在沒有(yǒu)軟件(jiàn)研發之前,我們工(gōng)程師(shī)的(de)思想中已經有(yǒu)了(le)産品清楚的(de)模∞樣,并提早預見(jiàn)各種各樣的(de)困難,有(yǒu)足夠的(de)方案解決困難;對(duì)于研發工(gōng)程師(shī),很(hěn)重要(yào)的(de)一("yī)點就(jiù)是(shì)在沒有(yǒu)開(kāi)始動手寫代碼之前,腦(nǎo)子(zǐ)裡(lǐ)面應該有(yǒu)清楚的(de)軟件(jiàn)實現(xiàn)後的(de)模樣。無Ω論公司、研發團隊還(hái)是(shì)研發工(gōng)程師(shī),無論做(zuò)何種職業(≤yè),清晰的(de)思路(lù)都(dōu)是(shì)很(hěn)重要(yào)的(de)事(shì)情,我認為(wèi)這(zhè)也(yě)是(shì)'提升效率的(de)根本保證。