<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          重構(gòu)項目的解題思路

          共 3355字,需瀏覽 7分鐘

           ·

          2021-05-15 02:54

          悟出道者自然成道。

          我舅舅

          前言

          做項目有三種方式,新項目、維護項目和重構(gòu)項目。


          如果程序員可以選擇,在新項目和重構(gòu)項目之間,大部分技術(shù)人員會選擇新項目這條路,因為沒有歷史包袱。


          新項目是從零到一,完完全全的新項目,沒有任何歷史包袱,技術(shù)人員可以“自由”地發(fā)揮,但對于老板或企業(yè)則是高成本、高風(fēng)險;維護項目是一個平穩(wěn)且長期的過程,這過程會循序漸進、不斷迭代,要求每一次版本的更新和發(fā)布都要平穩(wěn),既要上線新功能又不能影響現(xiàn)有主流程;最后,重構(gòu)項目是又一個歷史轉(zhuǎn)折點,意味著要在沉重的歷史包袱下,把之前的項目推倒重來。


          這一次,我們將一起來探討重構(gòu)項目,因為它是企業(yè)成長的必經(jīng)之路。項目重構(gòu)得好,企業(yè)會發(fā)展更順暢、更迅猛;項目重構(gòu)困難或失敗,不僅成本高昂,還會阻礙企業(yè)向前發(fā)展,甚至破壞已有的正常運營活動。


          更嚴峻的是,在實際中,重構(gòu)項目的情況會更為惡劣。


          下面結(jié)合真實案例,分析重構(gòu)項目有哪些經(jīng)典的特征,再來尋找更好的解決方案和處理方式。

          代碼重構(gòu)、系統(tǒng)重構(gòu)和項目重構(gòu)的區(qū)別

          首先,為避免混淆,我們先來區(qū)分下代碼重構(gòu)、系統(tǒng)重構(gòu)和項目重構(gòu)。


          代碼重構(gòu),是針對源代碼的重構(gòu),具體到一行代碼、某個函數(shù)、某個代碼文件、某個模塊,可以應(yīng)用由Martin Fowler編寫的《重構(gòu),改善既有代碼的設(shè)計》里面的技巧和做法。代碼重構(gòu)和具體的編程語言有關(guān),一般是由技術(shù)人員本人自發(fā),需要花費的時間非常短,幾十分鐘或幾個小時不等,并且由個人就能完成的事情。重構(gòu)后,不會改變現(xiàn)有的功能,目的是了讓代碼風(fēng)格更統(tǒng)一、更容易理解。


          系統(tǒng)重構(gòu),是發(fā)生在同一個系統(tǒng)內(nèi),屬于更大范圍的代碼重構(gòu),涉及單個系統(tǒng)內(nèi)的多個模塊或者核心流程改造。主要為了降低系統(tǒng)的維護成本、減少冗余重復(fù)代碼、提升開發(fā)效率和滿足自動化單元測試的條件。


          項目重構(gòu),是更高層次、更高維度的重構(gòu),通常由高層管理者、企業(yè)負責人發(fā)起而非一線的技術(shù)人員,涉及的層面、需要考量因素會更為復(fù)雜。


          如果說代碼重構(gòu)是一條線,系統(tǒng)重構(gòu)是一個面,那么項目重構(gòu)就是立方體的,還是不透明、不規(guī)則的龐大立方體。至于這個立方體能不能在指定的時間,按我們規(guī)劃的路線到達目的地,以及如何到達,就是本章要討論的重點。

          項目重構(gòu)案例

          我們先來看兩個項目重構(gòu)的案例。


          某美容企業(yè)的S2S2B2C重構(gòu)項目

          某家美容企業(yè),在過去十年一直經(jīng)營細分領(lǐng)域的皮膚美容業(yè)務(wù),利用自主發(fā)明的專利和權(quán)威專家的研究,結(jié)合貼心的服務(wù),其單店模式得到了客戶的認可和積累。出于企業(yè)發(fā)展的需要,該美容企業(yè)在戰(zhàn)略上,想從單店模式調(diào)整為多門店加盟的模式。很明顯,以往近十年研發(fā)的單店HIS系統(tǒng)是難以滿足新商業(yè)模式的需求,需要進行項目重構(gòu),打造全新的S2S2B2C新業(yè)態(tài)的系統(tǒng)架構(gòu)。

          所面臨的挑戰(zhàn)主要有三方面:首先,以往為了加快研發(fā)速度而采用了第三方低代碼開發(fā)平臺,但逐漸暴露了性能和用戶體驗問題,并且對于復(fù)雜的需求難以化繁為簡;其次,技術(shù)人力有限,只有3名技術(shù)人員1名運維1名測試,難以在開展重構(gòu)項目的同時維護現(xiàn)有的業(yè)務(wù),并且作為傳統(tǒng)行業(yè)過多技術(shù)人員將會極大增加企業(yè)的研發(fā)成本;最后,S2S2B2C新業(yè)態(tài)的系統(tǒng)架構(gòu)在技術(shù)架構(gòu)、項目管理和產(chǎn)品需求等多方面都提出了新的挑戰(zhàn)。


          當時,在該公司的大會議室,和該企業(yè)的產(chǎn)品總監(jiān)兼創(chuàng)始人、技術(shù)經(jīng)理和技術(shù)團隊一起,經(jīng)過當面溝通一天后,從上午到中午到下午?;貋砗?,用了幾天的時間,我給這家整理項目重構(gòu)的解決方案,在項目計劃甘特圖中初步評估是需要歷經(jīng)4個月的時間。

          并且根據(jù)該企業(yè)現(xiàn)有的團隊人員,和新采用的技術(shù)棧,初步評估需要共13人的研發(fā)團隊。


          項目重構(gòu)的典型特征

          項目重構(gòu),不僅有歷史包袱,還有新的挑戰(zhàn),同時面臨各種不確定的因素,處處有風(fēng)險。對于技術(shù)團隊而言,要在新系統(tǒng)研發(fā)和舊項目維護的雙線并行開展的壓力下來回切換;對于企業(yè)而言,如果需要用重構(gòu)后的項目去驗證新的商業(yè)模式,則要承擔極高的試錯成本。


          概括來講,項目重構(gòu)有以下典型特征:

          • 需要在保障現(xiàn)有業(yè)務(wù)的正常運營下進行系統(tǒng)的研發(fā),并且核心是舊系統(tǒng)的保障和維護,其次才是新系統(tǒng)的研發(fā),因為舊系統(tǒng)是企業(yè)現(xiàn)金流和收入的主要來源

          • 需要對原有的技術(shù)進行革新,采用更新的技術(shù)框架、更復(fù)雜的解決方案、更專業(yè)的工具

          • 需要對人員進行必要的調(diào)整和補充,甚至需要補充不同崗位的技術(shù)人才

          • 系統(tǒng)研發(fā)完成后,需要進行歷史數(shù)據(jù)的遷移,這是一件工作量非常龐大的工程,復(fù)雜、耗時、并且必須100%無差錯無遺漏無重復(fù)

          • 系統(tǒng)上線前,需要對現(xiàn)有的用戶進行培訓(xùn),特別包括內(nèi)部員工、合作伙伴、上下游供應(yīng)商、顧客

          • 需要準備周密的版本切換計劃,以及回滾計劃和預(yù)案

          項目重構(gòu)的挑戰(zhàn)與痛點

          對應(yīng)上述提到的典型特征,不難發(fā)現(xiàn)和總結(jié)項目重構(gòu)的挑戰(zhàn)與痛點。


          • 新系統(tǒng)與舊項目需要雙線并線開展,時間沖突、團隊壓力大,并且這個過程持續(xù)越久,越痛苦,后期切換越難

          • 補充人員可以解決和縮短當前短期內(nèi)的研發(fā)周期,但會導(dǎo)致長期的研發(fā)用人成本提升,可以培訓(xùn)已有人員轉(zhuǎn)型或采用外包駐場協(xié)同開發(fā)

          • 歷史數(shù)據(jù)遷移成本和時間都很高,往往會容易被上層領(lǐng)導(dǎo)低估

          明確重構(gòu)項目的商業(yè)價值

          一個商業(yè)模式的想法,在大腦中或者在溝通交流中,可以隨時變更、完善和調(diào)整;一份需求文檔,在未進入研發(fā)階段之前,修改和更新它的成本也相對很低;但如果經(jīng)過需求評審后,項目已經(jīng)通過項目排期、進入研發(fā)階段、開始集成測試、甚至準備交付上線切換時,這時再來變更底層的商業(yè)模式以及項目的定位和方向,其變更成本就會非常高昂,不是一般的高。


          項目,是由一個或多個系統(tǒng)構(gòu)成并支撐公司業(yè)務(wù)流程的正常運轉(zhuǎn)。在這些系統(tǒng)的背后,是成千上萬行經(jīng)過開發(fā)、調(diào)試、測試和集成的代碼、變量、函數(shù)、類,以及與之息息相關(guān)的數(shù)據(jù)庫表、字段、索引和數(shù)據(jù),還有界面、交互、環(huán)境、服務(wù)器、網(wǎng)絡(luò)等。試想一下,如果到后期再來變更企業(yè)的商業(yè)模式或盈利模式或業(yè)務(wù)模式,前面的很多工作都可能會前功盡棄。


          在決定開始項目重構(gòu)之前,作為企業(yè)決策高層,非常有必要對接下來的項目重構(gòu)的商業(yè)價值、意義、成本預(yù)算、風(fēng)險、決心進行評估和定奪。


          只有明確了企業(yè)想要達到的效果,以及可量化的目標和戰(zhàn)略規(guī)劃,才能給項目重構(gòu)提供定心丸,才能給整個漫長而艱巨的重構(gòu)過程提供有力的保障。

          善用工具

          在設(shè)計層面,根據(jù)領(lǐng)域驅(qū)動設(shè)計,整理新系統(tǒng)的核心層和關(guān)鍵數(shù)據(jù)流,如:

          如果有需要,可以用泳道圖或時序圖,刻畫出最為核心的業(yè)務(wù)主流程。例如:


          在實現(xiàn)層面,整理新系統(tǒng)的軟件系統(tǒng)架構(gòu),例如本案例的:


          在部署視圖方面,整理系統(tǒng)部署的架構(gòu)圖,例如:

          有了業(yè)務(wù)背景作為依托,結(jié)合過往系統(tǒng)迭代和演進的歷史,以及現(xiàn)有團隊人員、技能和經(jīng)驗情況,融入新系統(tǒng)、新商業(yè)模式和新技術(shù)架構(gòu),我們就不難有效做出項目重構(gòu)的規(guī)劃、評估和計劃,再結(jié)合前面的項目甘特圖、人員配置表等工具,就可以形成一套完整、有效、扼要的項目重構(gòu)解決方案。


          例如,我之前為該企業(yè)撰寫的重構(gòu)計劃:


          在YesDev項目協(xié)作工具中,有更多對項目重構(gòu)有幫助的工具,例如工作排期、需求排期、項目匯總、項目燃盡圖、項目匯報郵件等。非常實用強大。

          請相信你的技術(shù)團隊

          重構(gòu)項目,都有一個“誘惑”,就是請外包團隊,以外包形式進行重構(gòu)。


          但外包重構(gòu)項目,真的合適嗎?


          我個人是不建議采用外包方式進行項目重構(gòu)。原因很明顯:

          所重構(gòu)的項目通常都是企業(yè)最為核心的系統(tǒng)和業(yè)務(wù),需要頻繁的更新、快速響應(yīng)以及深厚的業(yè)務(wù)經(jīng)驗,采用外包,將會增加溝通和對接成本

          局部外包難度也很大,因為重構(gòu)項目的技術(shù)框架、需求原型、UI稿、數(shù)據(jù)庫、代碼都是企業(yè)內(nèi)部團隊設(shè)計和編寫的,那么外部企業(yè)團隊是非常難以接手和熟悉的

          后期維護成本也很高,如果完全由外包團隊開發(fā)好后再交付回來,企業(yè)內(nèi)部團隊是難以接手的,而且很可能技術(shù)棧、風(fēng)格都迵然不同

          外包團隊優(yōu)勢不明顯,因為對甲方的行業(yè)業(yè)務(wù)不熟悉或缺少經(jīng)驗,只有當項目是完成沒有歷史包袱并且在半成品的標準軟件時,外包開發(fā)的優(yōu)勢才更大


          請相信你的團隊,和你的團隊一起,探索和研究更好、更快的項目重構(gòu)方案,才是更合適的方式。有需要,可以外聘一名項目咨詢顧問進行輔助,最好是能現(xiàn)場當面溝通的。

          瀏覽 80
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  一区二区自拍偷拍0519 | 人人超碰97| 国产麻豆传媒在线 | 天天干夜夜一级黄色片 | 奇米影视狠狠色 |