中文字幕一区二区人妻电影,亚洲av无码一区二区乱子伦as ,亚洲精品无码永久在线观看,亚洲成aⅴ人片久青草影院按摩,亚洲黑人巨大videos

從頭開(kāi)始重寫(xiě)應(yīng)用程序的利弊|應(yīng)用程序所有者指南

發(fā)布于:2021-02-16 00:00:20

0

224

0

博客 商業(yè) 發(fā)展 基礎(chǔ)

你的產(chǎn)品是否有遺留的代碼,它是否遭受了隨之而來(lái)的所有缺點(diǎn)?看似簡(jiǎn)單的功能平均上市時(shí)間是否在飆升?找到愿意在應(yīng)用程序使用的過(guò)時(shí)技術(shù)堆棧中工作的開(kāi)發(fā)人員是否越來(lái)越難、越來(lái)越貴?您的產(chǎn)品是否受到錯(cuò)誤和/或性能問(wèn)題的轟炸?

當(dāng)這些和類(lèi)似的問(wèn)題開(kāi)始困擾產(chǎn)品所有者時(shí),他們可能會(huì)面臨一個(gè)兩難的境地,即決定是否從頭開(kāi)始完全重寫(xiě)應(yīng)用程序。那么,什么時(shí)候值得從頭開(kāi)始重寫(xiě)一個(gè)遺留應(yīng)用程序呢?在這篇文章中,我們將看一些能幫助你下定決心并最終做出正確決定的要點(diǎn)。在我們深入研究從頭開(kāi)始重寫(xiě)應(yīng)用程序的利弊之前,讓我們簡(jiǎn)要地解釋一下應(yīng)用程序重寫(xiě)的含義。

什么是應(yīng)用程序重寫(xiě)?

首先,讓我們定義項(xiàng)目重寫(xiě)的真正含義。這個(gè)定義是必要的,以確保我們?cè)谕豁?yè)。已經(jīng)有許多文章討論軟件項(xiàng)目重寫(xiě)。因此,人們認(rèn)為重寫(xiě)的內(nèi)容有多種定義。

有完全重寫(xiě)(又稱(chēng)從頭重寫(xiě)),還有部分應(yīng)用程序重寫(xiě)的功能定義,也稱(chēng)為修改、重寫(xiě)、調(diào)整或移植。如您所見(jiàn),軟件產(chǎn)品重寫(xiě)的概念很快就會(huì)變得混亂。

在這里,我們將重點(diǎn)討論從頭開(kāi)始重寫(xiě)應(yīng)用程序。與項(xiàng)目重構(gòu)相比,這種方法有幾個(gè)優(yōu)點(diǎn),也有一些缺點(diǎn)。

現(xiàn)在,請(qǐng)記住,我指的是應(yīng)用程序的完全重寫(xiě),它有時(shí)仍然允許重用某些代碼位。例如,算法的實(shí)現(xiàn)或各種(適當(dāng)隔離的)業(yè)務(wù)用例有時(shí)可以很容易地重用,只要業(yè)務(wù)需求沒(méi)有改變。

相反,項(xiàng)目重構(gòu)非常注重重用舊代碼,只從頭開(kāi)始重寫(xiě)某些部分。兩者之間的界限很細(xì),這取決于你假設(shè)的定義。

有關(guān)重構(gòu)過(guò)程的更精確的解釋?zhuān)约昂螘r(shí)選擇重構(gòu)而不是重寫(xiě)更好,請(qǐng)參閱我們的《重構(gòu)與重寫(xiě)移動(dòng)應(yīng)用程序-應(yīng)用程序所有者比較》一文。

從頭開(kāi)始重寫(xiě)應(yīng)用程序的優(yōu)點(diǎn)

更快的迭代

應(yīng)用程序重寫(xiě)通常還包括應(yīng)用程序架構(gòu)的重新設(shè)計(jì)。新的體系結(jié)構(gòu)應(yīng)該確保代碼在將來(lái)易于更改和改進(jìn)。這將導(dǎo)致更快的迭代向前推進(jìn),以及更短的反饋循環(huán)。

無(wú)限快速發(fā)展

開(kāi)發(fā)人員不會(huì)以任何方式受到現(xiàn)有代碼的限制,從而更容易使用最新的技術(shù)。這將幫助您確保應(yīng)用程序是使用最先進(jìn)的技術(shù)開(kāi)發(fā)的。這不是一個(gè)空洞、浮華的時(shí)髦詞。新技術(shù)是最流行的技術(shù)。軟件工程師喜歡與他們保持同步。這意味著如果您決定擴(kuò)展您的開(kāi)發(fā)團(tuán)隊(duì),市場(chǎng)上將有更多的開(kāi)發(fā)人員可供選擇。

每一個(gè)遺留應(yīng)用程序的產(chǎn)品所有者都知道為一個(gè)舊的語(yǔ)言或框架尋找開(kāi)發(fā)人員是多么困難。除此之外,技術(shù)越受歡迎,它周?chē)纳鐓^(qū)就越好,規(guī)模也就越大。這意味著有更多關(guān)于如何處理開(kāi)發(fā)人員偶然發(fā)現(xiàn)的bug和問(wèn)題的知識(shí)。反過(guò)來(lái),這意味著應(yīng)用程序開(kāi)發(fā)過(guò)程更快。

避免過(guò)去的錯(cuò)誤

如果您已經(jīng)組建了一個(gè)具有進(jìn)行大型重寫(xiě)經(jīng)驗(yàn)的開(kāi)發(fā)人員團(tuán)隊(duì),那么新的開(kāi)發(fā)團(tuán)隊(duì)將有可能避免犯以前的開(kāi)發(fā)人員所犯的錯(cuò)誤。為此,您還需要完全控制業(yè)務(wù)領(lǐng)域知識(shí)。

刷新應(yīng)用程序設(shè)計(jì)

應(yīng)用程序重寫(xiě)允許您重新考慮整個(gè)應(yīng)用程序設(shè)計(jì)和模塊,以及其優(yōu)化。您有一個(gè)很好的機(jī)會(huì)來(lái)修改您的用戶(hù)旅程地圖,并確保沿途的每一步對(duì)最終用戶(hù)都是不言自明的。請(qǐng)記住,設(shè)計(jì)良好的用戶(hù)體驗(yàn)是不需要解釋的。

重新思考應(yīng)用程序功能

您有機(jī)會(huì)驗(yàn)證您的產(chǎn)品是否以最有效的方式解決了用戶(hù)的問(wèn)題,并決定它真正應(yīng)該具有哪些功能。重寫(xiě)是一個(gè)很好的機(jī)會(huì),因?yàn)槟赡軙?huì)重新訪(fǎng)問(wèn)用戶(hù)旅程圖或類(lèi)似的文檔。

從頭重寫(xiě)應(yīng)用程序的風(fēng)險(xiǎn)

使您的競(jìng)爭(zhēng)對(duì)手受益

決定完全重寫(xiě)而不同時(shí)維護(hù)舊的應(yīng)用程序就像給你的競(jìng)爭(zhēng)對(duì)手一年或兩年的自由時(shí)間(例如,在構(gòu)建新功能方面)。從商業(yè)角度看,這是一個(gè)很長(zhǎng)的時(shí)間。由于如此糟糕的戰(zhàn)略規(guī)劃,整個(gè)公司都倒閉了。

耗時(shí)

時(shí)間是重寫(xiě)過(guò)程中消耗的關(guān)鍵資源。如果不能達(dá)到目的并解決關(guān)鍵問(wèn)題,其中的一部分將被浪費(fèi)掉。在重寫(xiě)過(guò)程中,可能會(huì)出現(xiàn)一些最初隱藏的業(yè)務(wù)需求,并且可能會(huì)發(fā)生額外的延遲。

也重寫(xiě)工作特性

重寫(xiě)將丟棄應(yīng)用程序中按要求工作的部分。重寫(xiě)要求開(kāi)發(fā)人員重新實(shí)現(xiàn)所有特性。當(dāng)應(yīng)用程序用另一種語(yǔ)言或框架重寫(xiě)時(shí),這是不可避免的,當(dāng)產(chǎn)品繼續(xù)使用相同的技術(shù)堆棧時(shí),這是反對(duì)重寫(xiě)的一個(gè)優(yōu)點(diǎn)。

因此,當(dāng)我們談?wù)撌褂猛耆嗤募夹g(shù)重寫(xiě)應(yīng)用程序時(shí),即使是一段非常好的代碼也常常需要重寫(xiě)。為什么?因?yàn)樗赡懿贿m合新的架構(gòu)。如果我們要留下這樣一段舊代碼,我們就必須立即使用一些適配器,以便新的體系結(jié)構(gòu)可以使用這個(gè)舊部分。這是一個(gè)危險(xiǎn)信號(hào),因?yàn)檫z留代碼不應(yīng)該控制新的體系結(jié)構(gòu)。

當(dāng)然也有一些例外,例如,你可以復(fù)制一些數(shù)學(xué)算法,但這種情況很少見(jiàn)。

浪費(fèi)以前的錯(cuò)誤修復(fù)

以前為修復(fù)bug所做的努力都白費(fèi)了。項(xiàng)目的前一個(gè)版本可能有很多專(zhuān)門(mén)知識(shí)和開(kāi)發(fā)時(shí)間用于修復(fù)bug。開(kāi)發(fā)人員可能被迫解決僅從所使用的技術(shù)和框架衍生出來(lái)的問(wèn)題。應(yīng)用程序中的一些bug總是與使用過(guò)的庫(kù)和架構(gòu)相連接,否則就不會(huì)出現(xiàn)。進(jìn)行一次徹底的重寫(xiě)就好像所有的努力都是徒勞的。

提高利益相關(guān)者的期望

你必須滿(mǎn)足組織的期望。當(dāng)應(yīng)用程序被重寫(xiě)時(shí),來(lái)自整個(gè)公司的利益相關(guān)者肯定會(huì)期望投資回報(bào)。例如,它可以是更好的用戶(hù)體驗(yàn)/用戶(hù)界面設(shè)計(jì)、開(kāi)發(fā)速度的提高、整體產(chǎn)品性能的提高、用戶(hù)對(duì)應(yīng)用程序的評(píng)價(jià)提高、用戶(hù)保留率的提高,或者是更多的新用戶(hù)。產(chǎn)品所有者必須管理這些期望。你將是那個(gè)讓利益相關(guān)者相信蛋糕值蠟燭的人。

什么時(shí)候重寫(xiě)遺留應(yīng)用程序會(huì)是一個(gè)錯(cuò)誤?

當(dāng)一個(gè)新團(tuán)隊(duì)看到一個(gè)繼承的項(xiàng)目代碼時(shí),說(shuō)服客戶(hù)并重新開(kāi)始似乎是明智之舉。碰巧,對(duì)于應(yīng)用程序擁有者來(lái)說(shuō),這并不總是最好的選擇。

此外,用與原始版本相同的開(kāi)發(fā)團(tuán)隊(duì)重寫(xiě)應(yīng)用程序很少是個(gè)好主意。假設(shè)開(kāi)發(fā)人員由于各種原因(緊迫的截止日期、低技能的開(kāi)發(fā)人員)積累了太多的技術(shù)債務(wù)。如果這是唯一的原因,公司絕對(duì)不應(yīng)該進(jìn)行完全重寫(xiě)。

如果開(kāi)發(fā)人員要求重寫(xiě)決策僅僅是希望擺脫他們負(fù)責(zé)的混亂局面(除其他外),這表明您缺乏可靠的流程。每一個(gè)應(yīng)用程序擁有者都應(yīng)該知道,給團(tuán)隊(duì)一張白紙而不花時(shí)間去發(fā)現(xiàn)為什么這些問(wèn)題會(huì)首先出現(xiàn),并且可能會(huì)改進(jìn)組織流程,這很可能會(huì)導(dǎo)致同樣的情況——技術(shù)債務(wù)不斷增加。

即使你確信你有一個(gè)優(yōu)秀的開(kāi)發(fā)團(tuán)隊(duì),這在很大程度上取決于行業(yè)的活動(dòng)周期。如果你的競(jìng)爭(zhēng)對(duì)手給了你很大的壓力,你不應(yīng)該以重寫(xiě)為目標(biāo)。決定完全重寫(xiě)意味著發(fā)布新特性將在很長(zhǎng)一段時(shí)間內(nèi)停滯不前。

當(dāng)然,除非您有時(shí)間和資源進(jìn)行重寫(xiě)并并行維護(hù)當(dāng)前產(chǎn)品版本。如果您的業(yè)務(wù)集中在市場(chǎng)的特定利基,您的上市時(shí)間指標(biāo)將是最重要的。在這種情況下,你應(yīng)該利用你所有的資源,以確保你將能夠獲得所需的部分市場(chǎng)蛋糕。

為你的應(yīng)用程序重寫(xiě)做一個(gè)潛在開(kāi)發(fā)團(tuán)隊(duì)的背景調(diào)查

正如我已經(jīng)提到的,從頭開(kāi)始重寫(xiě)應(yīng)用程序的關(guān)鍵是確保指定的團(tuán)隊(duì)能夠達(dá)到預(yù)期。理想情況下,您希望了解開(kāi)發(fā)人員是誰(shuí),他們的背景是什么,以及他們的總體經(jīng)驗(yàn)。您可以在專(zhuān)業(yè)社交媒體(如LinkedIn)或開(kāi)發(fā)人員的私人Github存儲(chǔ)庫(kù)中查找此類(lèi)詳細(xì)信息。

如果你決定與一家軟件開(kāi)發(fā)公司合作,這將變得更加容易。一家重視客戶(hù)透明度的公司會(huì)愿意與您分享其中的一些細(xì)節(jié)。例如,您可以獲得有關(guān)特定開(kāi)發(fā)人員參與的項(xiàng)目的詳細(xì)信息或有關(guān)客戶(hù)滿(mǎn)意度的一些指標(biāo)。

請(qǐng)記住,您可能無(wú)法獲得確切的產(chǎn)品名稱(chēng),因?yàn)樵S多項(xiàng)目是在嚴(yán)格的保密協(xié)議下開(kāi)發(fā)的。在這里,您可以閱讀一篇關(guān)于如何檢查應(yīng)用程序開(kāi)發(fā)的潛在合作伙伴的深入文章。

要重寫(xiě)的項(xiàng)目有許多形狀和大小。如果你有一個(gè)大的,復(fù)雜的產(chǎn)品,你最好雇用一個(gè)非常適合的軟件工程師團(tuán)隊(duì)。

從長(zhǎng)遠(yuǎn)來(lái)看,對(duì)于以前從事過(guò)復(fù)雜領(lǐng)域和大型代碼庫(kù)項(xiàng)目的經(jīng)驗(yàn)豐富的開(kāi)發(fā)人員來(lái)說(shuō),支付額外的費(fèi)用是值得的。這些經(jīng)驗(yàn)豐富的開(kāi)發(fā)人員可以引導(dǎo)您完成收集業(yè)務(wù)需求的過(guò)程,向您提出明智的問(wèn)題,從而能夠快速掌握業(yè)務(wù)領(lǐng)域的細(xì)節(jié)。

確保團(tuán)隊(duì)了解您未來(lái)的計(jì)劃和其他功能

大家一致認(rèn)為這并不總是可行的?;蛘咧辽俨皇峭耆?。也就是說(shuō),我并不是想說(shuō)服任何人重新使用瀑布模型(這對(duì)于IT項(xiàng)目來(lái)說(shuō)是一個(gè)完全的錯(cuò)誤)。

問(wèn)題是,如果你:

  • 從業(yè)務(wù)的角度了解您的領(lǐng)域,

  • 甚至有一個(gè)模糊的產(chǎn)品路線(xiàn)圖,

  • 能夠掌握并規(guī)劃一套幾乎完整的功能,

  • 可能還有某種用戶(hù)旅程圖……

它將使開(kāi)發(fā)人員和負(fù)責(zé)選擇正確的體系結(jié)構(gòu)模式的人員的工作變得更加容易。您對(duì)預(yù)先計(jì)劃的產(chǎn)品功能了解得越多,未來(lái)的代碼就越不復(fù)雜。同樣,我們討論的不是瀑布過(guò)程,而是一個(gè)良好的產(chǎn)品設(shè)計(jì)研討會(huì)/產(chǎn)品發(fā)現(xiàn)的結(jié)果。

通常,軟件開(kāi)發(fā)機(jī)構(gòu)也會(huì)提供產(chǎn)品設(shè)計(jì)研討會(huì)服務(wù)。這是一個(gè)向開(kāi)發(fā)團(tuán)隊(duì)傳達(dá)應(yīng)用程序遠(yuǎn)景和需求的理想機(jī)會(huì)。這些研討會(huì)的幾天將為團(tuán)隊(duì)提供未來(lái)幾個(gè)月的足夠知識(shí)。與軟件工程師一起,您可以嘗試將這些特性調(diào)整為對(duì)啟動(dòng)應(yīng)用程序至關(guān)重要的少數(shù)特性(最小可行產(chǎn)品)。

同時(shí),呈現(xiàn)給開(kāi)發(fā)人員的更廣闊的視野將使他們能夠規(guī)劃體系結(jié)構(gòu)。他們將能夠以一種使添加新特性幾乎不費(fèi)吹灰之力的方式來(lái)構(gòu)建它,極大地限制了遺留代碼在未來(lái)的影響。什么是遺留代碼,為什么要擔(dān)心它?在我們的文章中,您可以閱讀更多關(guān)于重構(gòu)和重寫(xiě)應(yīng)用程序的比較。

從頭開(kāi)始重寫(xiě)應(yīng)用程序的利弊——結(jié)論

對(duì)于開(kāi)發(fā)者和產(chǎn)品擁有者來(lái)說(shuō),重新編寫(xiě)一個(gè)應(yīng)用程序似乎很有誘惑力,但從商業(yè)角度來(lái)看,這并不總是最好的選擇。作為產(chǎn)品所有者,您必須考慮許多因素,以確保這是您的組織蓬勃發(fā)展所需要的。獲取免費(fèi)電子書(shū)-產(chǎn)品所有者指南。

如果您根據(jù)本指南決定重寫(xiě)是一條路要走,請(qǐng)記住前面還有很多需要考慮的注意事項(xiàng)。首先也是最重要的是,你必須確保你依賴(lài)的是一個(gè)經(jīng)驗(yàn)豐富的開(kāi)發(fā)團(tuán)隊(duì),對(duì)他們來(lái)說(shuō),這不是他們的第一次牛仔競(jìng)技。

在復(fù)雜的應(yīng)用程序重寫(xiě)中成功的幾率與開(kāi)發(fā)人員的經(jīng)驗(yàn)以及他們創(chuàng)建的團(tuán)隊(duì)的優(yōu)秀程度成正比。除此之外,確保盡一切努力向他們傳達(dá)你對(duì)應(yīng)用程序的看法。團(tuán)隊(duì)對(duì)業(yè)務(wù)領(lǐng)域的理解越深入,他們的工作就越有效率。