重慶諾懷軟件有限公司 軟件開發(fā), app開發(fā), 微信開發(fā), 小程序開發(fā) - 經(jīng)驗(yàn) http://www.smt18.com/blogtag/%E7%BB%8F%E9%AA%8C zh-hans 軟件開發(fā)金科玉律之-不要重復(fù)發(fā)明輪子! http://www.smt18.com/blog/%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91%E9%87%91%E7%A7%91%E7%8E%89%E5%BE%8B%E4%B9%8B-%E4%B8%8D%E8%A6%81%E9%87%8D%E5%A4%8D%E5%8F%91%E6%98%8E%E8%BD%AE%E5%AD%90 <div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even" property="content:encoded"><p>?? ? 以前有個(gè)小朋友,特別有好奇心,也喜歡動(dòng)手搗騰。有一天,他做出來了一個(gè)圓圓的,會(huì)滾動(dòng)的東西,感到特別興奮,到處去向別人展示自己的"新發(fā)明"。結(jié)果他發(fā)現(xiàn)別人一點(diǎn)都不稀奇,原來這個(gè)東西叫做“輪子”,早在幾千年前就有了,現(xiàn)在已經(jīng)發(fā)展出了上百種的不同規(guī)格、材質(zhì)、樣式,自己的這個(gè)相比之下太不完善了,根本不能算是什么發(fā)明。這個(gè)小朋友,現(xiàn)在就藏在我們的心里,尤其是經(jīng)驗(yàn)不夠豐富的程序員身上。</p> <p><img alt="" src="/sites/default/files/%E8%BD%AE%E5%AD%90.jpg" style="height:523px; width:758px" /></p> <p>??? 幾年前我曾經(jīng)做過一個(gè)項(xiàng)目,經(jīng)過長時(shí)間的掙扎之后,項(xiàng)目依然失敗了。主要的原因之一,就是我們重復(fù)發(fā)明了太多的輪子。事情是這樣的,時(shí)任項(xiàng)目核心開發(fā)人員的 同事很有鉆研精神,也相當(dāng)自信,當(dāng)時(shí)客戶提出的一些基本功能,譬如用戶管理、輸入驗(yàn)證、內(nèi)容管理等,雖然市面上隨處可見現(xiàn)成的模塊和控件,可他總是覺得那 些做得不夠好,說不如自己重新做一個(gè)方便,而且重新做更能符合客戶的特殊需求。我當(dāng)時(shí)作為PM,雖然對(duì)此略有質(zhì)疑,但看他自信滿滿很有激情,而項(xiàng)目時(shí)間也很寬松,就同意了。后來僅僅輸入驗(yàn)證這個(gè)功能就推翻重來了三次,最終還是選用了一個(gè)現(xiàn)成的控件直接用,因?yàn)樗龀鰜淼奶痪邆渫ㄓ眯裕蛛y以維護(hù);同時(shí),用戶管理模塊也做得千瘡百孔,極不穩(wěn)定,出現(xiàn)了很多Bug和 考慮不周全的地方,最后也不得不去找現(xiàn)有的成熟的組件替換。結(jié)果,這些“重復(fù)發(fā)明輪子”的開發(fā)工作,不但耗費(fèi)了大量的時(shí)間、金錢和精力,而且也沒能發(fā)揮預(yù) 期的效用。事實(shí)證明,現(xiàn)成的控件“輪子”(開源的或收費(fèi)的),經(jīng)歷過時(shí)間的檢測和眾人的改進(jìn),總比自己重新?lián)v騰出來的要更成熟、更穩(wěn)定,同時(shí)也更加省事、 好用。我們?cè)谶@個(gè)項(xiàng)目中花費(fèi)了這么多時(shí)間、金錢、心血,終于證明了“不要重復(fù)發(fā)明輪子”這句話是很有道理的,這個(gè)慘痛的教訓(xùn)讓我迄今記憶猶新。</p> <p>?</p> <div><img alt="圖片" src="http://r.photo.store.qq.com/psb?/V10dIc8w03tMUY/SiOnwIrbHrdpirLa6ECkXxGSlz4j807m5iYbSK2xojc%21/o/dE7.tKWuAwAA&amp;bo=iQKAAgAE8gMBANs%21&amp;su=168990289&amp;rf=2-9" style="height:496px; width:504px" /></div> <p>?</p> <p>??? 雖 然此事已經(jīng)時(shí)過境遷,但近些年來我發(fā)現(xiàn)有很多人都在“重復(fù)發(fā)明輪子”,尤其是在我們軟件開發(fā)這個(gè)圈子里面,年輕的小伙伴們充滿了發(fā)明輪子的欲望和激情,就 好像那個(gè)可愛的小朋友一樣。因?yàn)樗麄冇X得這樣做會(huì)讓自己學(xué)到很多東西,如果做出來了也會(huì)很有成就感。確實(shí),成長和成就的確是他們所需要的東西??扇绻闶?客戶,你會(huì)愿意為此承擔(dān)更高的費(fèi)用和風(fēng)險(xiǎn)么?如果你是項(xiàng)目經(jīng)理呢,在成員練手跟項(xiàng)目成功交付之間,哪個(gè)更重要?</p> <p>??? 我覺得如 果出于練兵的目的,重新?lián)v騰一個(gè)輪子出來當(dāng)然是個(gè)好方法,就好像比賽開始前反復(fù)練習(xí)投籃一樣正常??扇绻阋呀?jīng)上戰(zhàn)場了,已經(jīng)開始比賽了,已經(jīng)去幫客戶做 項(xiàng)目了,這時(shí)候才來練習(xí)是非常不合適的。因?yàn)槟愫芸赡軙?huì)因此而輸?shù)舯荣?、丟掉客戶,而且因?yàn)槟銟O其不專業(yè)的表現(xiàn),會(huì)影響你的職業(yè)生涯。所以在公司里面,應(yīng) 該明確區(qū)分什么時(shí)候是練兵,什么時(shí)候是上陣,一定要杜絕上陣后才練兵的不專業(yè)表現(xiàn)。換句話說,工作中不要重復(fù)發(fā)明輪子,要練習(xí)投籃下場后自己慢慢練去,不 要輕易浪費(fèi)在賽場上的出手機(jī)會(huì),just beprofessional.</p> </div></div></div><div id="comment-wrapper-nid-574"></div><div class="field field-name-field-nuova-blogtag field-type-taxonomy-term-reference field-label-above"><div class="field-label">諾懷博客標(biāo)簽:&nbsp;</div><div class="field-items"><div class="field-item even"><a href="/blogtag/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">項(xiàng)目管理</a></div><div class="field-item odd"><a href="/blogtag/%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">軟件開發(fā)</a></div><div class="field-item even"><a href="/blogtag/%E7%BB%8F%E9%AA%8C" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">經(jīng)驗(yàn)</a></div><div class="field-item odd"><a href="/blogtag/%E8%BD%AF%E4%BB%B6%E8%B4%A8%E9%87%8F" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">軟件質(zhì)量</a></div><div class="field-item even"><a href="/blogtag/%E8%BD%AF%E4%BB%B6%E8%AE%BE%E8%AE%A1" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">軟件設(shè)計(jì)</a></div></div></div> Thu, 17 Apr 2014 08:29:05 +0000 Caven 574 at http://www.smt18.com http://www.smt18.com/blog/%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91%E9%87%91%E7%A7%91%E7%8E%89%E5%BE%8B%E4%B9%8B-%E4%B8%8D%E8%A6%81%E9%87%8D%E5%A4%8D%E5%8F%91%E6%98%8E%E8%BD%AE%E5%AD%90#comments 從某軟件開發(fā)項(xiàng)目一期工作中學(xué)到的經(jīng)驗(yàn) http://www.smt18.com/blog/%E4%BB%8E%E6%9F%90%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91%E9%A1%B9%E7%9B%AE%E4%B8%80%E6%9C%9F%E5%B7%A5%E4%BD%9C%E4%B8%AD%E5%AD%A6%E5%88%B0%E7%9A%84%E7%BB%8F%E9%AA%8C <div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even" property="content:encoded"><h2>1. 明確范圍</h2> <ol><li>如果說要把整個(gè)項(xiàng)目(假設(shè)持續(xù)2個(gè)月,分為4次迭代)的范圍,在一開始就明確下來,對(duì)我們、對(duì)客戶都很困難,因而這個(gè)期望不太現(xiàn)實(shí);更可行的辦法是把范圍的明確,也拆分成更小的單位,譬如按照每個(gè)迭代(每兩周)來明確;我們雙方只要保證,對(duì)這兩周要提交的內(nèi)容,有明確的共同認(rèn)識(shí)即可;然后不斷循環(huán);</li> <li>明確下來的范圍,要有個(gè)Task List或者Plan來作為以后判斷是否發(fā)生范圍改變的依據(jù);</li> </ol><h2>2. 范圍變更</h2> <ol><li>如上所述,如果每兩周一個(gè)迭代,每次迭代都有明確的Task List或Plan;那么在這個(gè)過程中,任何不在這個(gè)List和Plan中的任務(wù),都可以視為需求變更、范圍變化;</li> <li>這種變更,需要在客戶剛提出來時(shí),就進(jìn)行評(píng)估,明確告訴客戶這個(gè)改變所需要的額外時(shí)間,必要時(shí),要協(xié)商延后當(dāng)前版本的提交日期Timeline;</li> <li>同時(shí),在平時(shí)要注意把這類小變更記錄起來,免得以后說不清楚哪些是變更,哪些是初始的要求;</li> </ol><h2>3. 提交版本</h2> <ol><li>如果跟客戶約定在每個(gè)迭代結(jié)束時(shí)提交版本,那就相當(dāng)于每次提交都跟客戶商量了一個(gè)明確的提交日期;這樣就不會(huì)太被動(dòng);當(dāng)然如果客戶覺得這個(gè)頻率有問題,也可以改為每周提交一次或者每周兩次提交;無論是哪種情況,都可以事先商量好,做好對(duì)應(yīng)的計(jì)劃和時(shí)間安排;這樣就可以避免倉促提交的現(xiàn)象;</li> <li>提交版本之前,內(nèi)部一定要留些時(shí)間,譬如1天2天做為內(nèi)部測試和修改Bug的時(shí)間;必須內(nèi)部通過了才提交給客戶;這個(gè)是最基本的質(zhì)量保證流程;</li> </ol><h2>4. 質(zhì)量</h2> <ol><li>開發(fā)人員自測是最基礎(chǔ)的;如果測試人員得到的版本是不可測的,一看就有很多明顯的Bug;通常會(huì)要求測試人員直接打回給開發(fā)人員重測; 只有過了自己這一關(guān),下一個(gè)環(huán)節(jié)的工作才有意義;</li> <li>如果開發(fā)人員的自測實(shí)在不知道如何才能改進(jìn),那么可以讓測試人員跟其結(jié)對(duì),一起測試;這樣就能學(xué)到一些測試人員的測試方法和技術(shù);幫助開發(fā)人員提高自測水平,在后期也可以節(jié)省整個(gè)團(tuán)隊(duì)的時(shí)間;</li> <li>對(duì)于經(jīng)常出現(xiàn)的Bug,開發(fā)人員一定要進(jìn)行分析總結(jié),看看哪類Bug是自己最常犯的錯(cuò)誤,得到經(jīng)驗(yàn)以后采取措施避免;</li> </ol></div></div></div><div id="comment-wrapper-nid-554"></div><div class="field field-name-field-nuova-blogtag field-type-taxonomy-term-reference field-label-above"><div class="field-label">諾懷博客標(biāo)簽:&nbsp;</div><div class="field-items"><div class="field-item even"><a href="/blogtag/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">項(xiàng)目管理</a></div><div class="field-item odd"><a href="/blogtag/%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">軟件開發(fā)</a></div><div class="field-item even"><a href="/blogtag/%E7%BB%8F%E9%AA%8C" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">經(jīng)驗(yàn)</a></div><div class="field-item odd"><a href="/blogtag/%E8%8C%83%E5%9B%B4%E5%8F%98%E6%9B%B4" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">范圍變更</a></div><div class="field-item even"><a href="/blogtag/%E8%BD%AF%E4%BB%B6%E8%B4%A8%E9%87%8F" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">軟件質(zhì)量</a></div></div></div> Fri, 21 Mar 2014 03:45:58 +0000 Caven 554 at http://www.smt18.com http://www.smt18.com/blog/%E4%BB%8E%E6%9F%90%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91%E9%A1%B9%E7%9B%AE%E4%B8%80%E6%9C%9F%E5%B7%A5%E4%BD%9C%E4%B8%AD%E5%AD%A6%E5%88%B0%E7%9A%84%E7%BB%8F%E9%AA%8C#comments