之前我在工(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í)間(j>↓→iān)和(hé)熱(rè)情。不(bù)由的(d÷•€$e)在這(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)話(h♣×uà)的(de)意思,也(yě)不(bù)确定傳給我的(de)話(huà)是Ω ≈β(shì)否就(jiù)是(shì)紙(zhǐ)條上(shàng)的(de)那(↓'✔nà)句,造成的(de)結果是(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)的(d✘>βαe)流程,但(dàn)是(shì)否使用(yòng©α )的(de)太多(duō)了(le)?
如(rú)何才能(néng)提高(gāo)軟件(jiàn)研發效率,減少(shǎo)返工(gōn↓"g)?怎樣才能(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ì)是(shì)占很(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)省力,最後才是(s₽₹€hì)編碼,編碼時(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)員(y>ε$uá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) β數(shù);
步驟三:把研發計(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)bug,提高(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)研發的(d"♥γe)效率
根據以往的(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ín><g)簡便有(yǒu)效的(de)方法;
第二:teamleader需要(yào)确認研發人(rén)員(©™yuán)是(shì)否真懂(dǒng)得(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)根本保證。