比從0到1更難的,是把起家打天下的產品重構一次
編輯導語:對于產品經理來說,很多人都會經歷從0到1的過程,而比這個過程更難的,是把起家打天下的產品重構一次。本文作者分享了一個已經運轉了七年的系統的重構過程,一起來看一下吧。
對于產品經理而言,很多人會經歷從0到1的過程,尤其是在創業公司,如果是初創期,業務形態還很迷茫,需要從0到1;或者是新開啟一條業務線或產品線,同樣需要從0到1。
于我而言,從0到1的過程并不陌生,甚至積攢了一些經驗。但今天想和大家分享的,是在從0到1之后,甚至這個起家打天下的產品已經發展了七八年的基礎上,去重構,去給它賦予新的生命。
一、為什么要重構
要重構的這個產品表現出來的是PC客戶端的形式,當然與此配套的還有兩個不同角色的App端。同一個業務在不同的客戶端給用戶提供服務,這很常見,比如微信和微信電腦版,釘釘和釘釘電腦版。
不同于釘釘和微信在一推出就同時配備了不同端的服務,要重構的這個PC客戶端其實屬于公司里起家的一個產品,早年剛剛開始創業時,公司里的技術合伙人用C++的技術寫出了這套系統,也正是這套系統,讓它贏得了大量用戶,鞏固了發展的根基。
但是隨著業務的發展,當前的PC客戶端已經越來越不能滿足更新迭代的需要,就類似于我們所說的“現階段的主要矛盾是人民日益增長的物質文化需要同落后的社會生產之間的矛盾”。
雖然是起家的產品,但之前邏輯和技術寫成的系統已經遠遠落后于App端的更新迭代,再加上早期開發這個平臺的技術人員有的已經離開,仍還在的技術合伙人目前的精力更多在于對外聯絡,業務繁忙,很難抽出身來再改代碼。
那放棄PC端,主營App端行不行呢,也不行。目前PC端的主要用戶群體都是一些VIP級別的,占比很大。用App的可能是個人,用PC的更多是組織,日常辦公中使用PC的情況更多,而且從數據來看,PC端在某些方面的人均數據是App端的幾倍。
既不能舍棄,也無法繼續延展,同時又有不斷更新迭代的需求和緊迫感,那么唯一的方式就是重構。用新的技術框架重構現有的這套系統,讓其具有很強的延展性,不論從性能還是后期更新來說,都可以有很強的全新生命力。
二、漫長的重構路
產品從0到1去做其實不難,無非是前期的方向和探索路徑需要把控。而如今要重構一個7年的業務系統,就算照葫蘆畫瓢,也難以面面俱到。經過7年的發展,表面上看起來平平無奇的系統,其實里面包含著無數的業務邏輯和需求點。
聽說在我之前有好幾位產品人員接手這項工作,但重構都沒做起來,我不知道這條路是否能在我這走通,但當時覺得既然這是一項必須要做的事情,一直前進就好。不求有功但求無過,沒那么想贏,只是不想輸。
如今回想這個過程,我覺得下面這些階段共同構成了期間的坎坷和波折。好在一直堅持沒放棄,圓滿完成重構,并實現了舊版用戶升級新版的更新換代,解決了這個存在許久的難題,于我自己而言也很欣慰。因此將一路走來的感觸和思考分享給大家。
1. 業務龐大復雜,難以一次窮盡
前面也說過,已經運轉了7年的系統,里面的業務邏輯千絲萬縷。不論是剛入公司的我,還是已經加入有一些年頭的其他同事,從技術到產品再到運營,都不了解其中的業務全貌。
剛接手時,領導跟我說是之前的頁面樣式搞得不太滿意,需要重做一套,其他內容都是完備的。于是我用2天的時間比對現有舊版系統,把全部的頁面原型都畫了出來,至于其中的邏輯和需求點,有一位業務同事和我配合,我們一起完善。
2. 歷史遺留填坑,逐條復核完善
頁面有了之后,我們開始填補業務規則,找到了之前產品人員遺留下來的文檔內容,最開始以為可以直接用,但仔細看過后,覺得里面的內容能用的很少。一方面是很多地方缺乏對應規則,另一方面有內容的地方也描述不暢,難以理解。
我和搭配的業務同事開玩笑說,我倆是填坑爬坡小姐妹。因為歷史遺留下來的坑太大了,之前有內容但不適用的地方我們還可以調整優化,但前提是真正明白其中的邏輯,你懂了才能清晰的闡述出來,然后給研發和測試同學講解。
還有一些是之前內容缺失,我們非常茫然。很多時候只能用App端一個個去試去看,然后反推當前的邏輯。App有兩個角色版本,PC則涵蓋兩者角色更為綜合。而且這些年App端一直在更新迭代,PC已經停滯很久,如今想一步趕上,難度可想而知。
3. 雛形查漏補缺,注釋規則糾結
經過了令人頭禿的逐條復核及填坑,我們認為一個雛形已經出來了,因此想和研發測試同學講解一下,這個過程也是查漏補缺的一環。因為有的研發測試進入公司時間比較久,對于其中的一些內容邏輯可能了解多一點。
這個過程中,每個人的性格就凸顯出來了。負責此事的技術負責人一直以來態度都還比較好,在我剛接手這個事情的時候,他還跟我說之前的產品人員弄得亂七八糟而且講不清楚,導致重構進行不下去。同時也說深知此事復雜,不要太擔心,慢慢來。
在第一次的講解開會中,登錄頁面兩個框就被一位測試同學糾結了兩小時。我以為這是最簡單的模塊,因為一般登錄注冊這種已經很成熟的功能基本都不會有太多問題,但在這里是完完全全的從0到1。
當天晚上我的領導喊我一起下班,路上還安慰我很多,同時表示不必對此太在意。其實于我而言還好,因為我知道這件事情不會因為個別人的原因就中斷,遇山開路,遇水搭橋,總之就是要把事情做成。
4. 確定進入研發,漫長跟進答疑
按照流程,需求講完之后大家都沒有問題,那就可以進入UI頁面的設計了,當UI同學設計完全套頁面后,排期進入研發。原以為進入研發后可以松一口氣,但我們還是高興得太早了。
一方面是業務規則內容太多,講解的時候大家理解不透徹,在做的時候才發現疑問。另一方面可能當時確實存在一些地方的疏漏或者跟App不一致的地方,于是在研發和測試的過程中,疑問此起彼伏,進入漫長跟進答疑期。
其實這也是好事,相當于又查漏補缺了一遍,使其更全面更嚴謹。畢竟參與其中的每個人之前都沒經歷過,也不知道原來是怎樣,所以有疑問一起溝通。遇見問題解決問題,事情才能繼續推進。
5. 問題層出不窮,細節點滴更新
之前就是因為做的時候沒有任何文檔資料留存,導致我們在重構時兩眼一抹黑,于是這次非常重視資料留存,每一個小變動確定后都會同步更新在原型需求文檔中。由于測試同學可能早就寫好了測試用例,因此在需求的開頭也要有明確的變更記錄,日期及內容等。
那個階段我感覺自己就像一臺答疑的機器,坐在工位上,每天都有研發測試同學過來問,有時候還會排隊,我拿不準的就要釘釘業務同學,也就是當時的一起填坑小姐妹,我們共同給研發答疑解惑,然后把最新的內容記錄留存,wiki有時候一天更新好多遍。
在最后測試階段,大家每天都一起開會過不確定的問題,測試日日發問題,細節點滴有時長達幾十個,我們第二天商議后給出答案,滾動式前進,一位產品經理,一位業務同學和二十多個研發測試,團隊的力量是無窮的。
6. 新版初次試水,收集試用反饋
當新版開發完成,經歷了測試驗收之后,我們覺得終于可以讓用戶試用的時候,小范圍線下找了一些用戶進行試用,以便收集使用反饋。
和老版本相比,新版本優化了一些樣式,很多用戶反饋白色太刺眼,字號小看不清等。是我們低估了習慣的力量,老版本再陳舊,用戶已經用好幾年了,早已習慣了其中的風格樣式,雖然我們在重構中也一直遵循原來的基調,只是稍微優化了一些樣式而已。
7. 繼續優化調整,慘遭更新滑坡
當時重構完的版本號是5000,由于試用的用戶反饋比較普遍,以防開啟升級后引發更多用戶反饋,因此我們進行了優化后,讓這些用戶試用5001版本,之后暫無反饋。
原以為解決了上述試用反饋后,已經可以了,但事實證明,我們還是想得太過簡單了,當5001的升級灰度開啟后,客服那里收到了大量用戶電話,因此不得不關閉升級。此次反饋的問題集中在兩方面:顯示問題和系統問題。顯示問題相對好解決一些,但系統問題有可能和用戶自己的電腦有關。
8. 派出研發親臨,現場解決問題
由于PC端的用戶都是一些VIP級別,因此這次情況出現后,大家商議遠程解決不了的,可以讓研發同學去到用戶那里進行現場支持一下,幫他們順利升級,同時也可以親臨了解一下用戶的使用情況,收集一些使用問題,放在后續版本優化更新。
9. 新版功能迭代,版本逐漸累積
與此同時新的業務疊加,雖然App和PC分屬于不同的端,但一些影響較大的方面還是要保持一致。自從重構完成之后,每次新的需求,PC 和App終于可以同步了,我們相繼做了后續的版本。
但是由于首次升級問題一直沒解決,所以版本出現了累積疊加。雖然用戶沒有使用感知到,但另一條線的更新迭代一直沒停,從最開始的5000走到了5010、5020。
10. 技術聚焦修復,測試沒有資源
技術同學用全新的技術重構,外加繁雜的業務邏輯,有時會引起卡頓,用戶反饋比較普遍,因此也一直在全力解決問題。當技術優化好之前的問題,我們以為讓測試簡單看下就可以繼續升級了,但事情遠遠沒有結束。
新的問題就像打地鼠一樣層出不窮,無意中發現了軟件崩潰,讓這個系統不得不再進行一遍深度的測試,而與此同時,測試人員又因為其他緊急事項的穿插分配不出資源。最快的抽出時間也得2-3周以后,因此這段時間只能等待,技術也有了一點空檔期繼續鉆研。
11. 漫長等待過后,新版終于下水
當測試人員終于抽出身來并且驗證沒問題后,新版終于可以再次下水了。在此之前我們做了很多準備,結果都遭受打擊,因此這一次也依舊保持謹慎,并不可預知結果,也對最壞的結果做好了準備。
12. 疑難雜癥迸發,技術加班專攻
這次的升級由于有了前車之鑒,因此十分謹慎。本來想再找一些用戶試用,但由于之前的不良體驗,不好找到試點用戶,所以只是小小地灰度開啟一下升級。開啟之后出現了一個比較突出的問題,所以及時關閉了。
技術同學對這個問題集中攻破,當時詢問進展時,我問今天能搞好嗎,他說看情況吧,也許就在一瞬間,也許明天加個大班,說實話技術同學確實辛苦,幸虧一直都在頂住。第二天下午,收到了技術反饋的已解決,同時更新替換了新包。
13. 新版更新穩定,計劃老版升新
功夫不負有心人,這一次新版用戶升級新版本沒有太多反饋,在新版升級完成并運行穩定一周多之后,我們計劃開啟老版本升級。
其實很早之前大家就一起確定過整體升級計劃,一致的意見都是新版運行無問題后再開啟對老版本升級新版本的操作。此外,舊版本的升級需要根據配置情況有節奏的逐步放量。
14. 連續八次放量,次次如履薄冰
老版本系統由于使用年頭已久,用戶對于電腦也沒有太多要求,基本能正常使用即可。而此次新版本產品能否在配置低的電腦上順利運行,技術人員心里也摸不準,因此計劃先取個中間點,放入50人定向升級,沒問題后再對中間點以上逐步升級。
這個過程我們自身的感受就是在危險的邊緣瘋狂(驚心)試探,每一次都如履薄冰,不知道這一批放量的用戶中是否會出現那個不可能的點。除了早已明確的XP系統不能運行新版本外,win7,win8,win10以及對應的4G、2G、1.5G內存都成為了反復斟酌的界限。
15. 每日統計數據,時刻觀察進展
這個過程中基本的節奏就是先試探性放入一批用戶進行定向升級,然后過幾小時、半天、一天等看這一批里已經升上去的人數,如果人數過半并且無大規模反饋,那懸著的心基本可以稍稍放下。
我們的應對措施是如果出現大規模用戶反饋,那就要停止升級,然后針對性解決問題。舊升新的這個過程從頭到尾進行了8個批次,人數從30、50、100、200不等,如果中間點的用戶已經全部升級沒問題,那么中間點之上的基本可以稍微大膽一點多放些人數。
16. 客服前線堅守,技術遠程支持
研發同學根據條件刪選出用戶放入定向升級后,如果用戶有使用問題,就會給客服打電話。我們既定的流程是,客服接到用戶反饋時除了提供錄屏,還要留存其QQ號,然后技術同學遠程進行支持。
這其中有80%的問題通過遠程都得到了解決,很多用戶對于自己使用的電腦不了解,安裝很多莫名其妙的軟件,然后在新版本安裝后遇到各種問題。15%的問題確實存在優化空間,技術同學針對性優化后,反饋日益減少。
還有剩下的5%,大概十余個用戶比較頑固,就喜歡用老版本,即便客服告知老版本以后不會再繼續更新,新版本的使用問題可以反饋出來,但用戶依然堅持用回老版本,無奈之下只能將其從定向升級名單中刪除,好在和總人數相比,這一部分人數微乎其微。
17. 最后一波放完,此事終于完滿
經過之前發生過的用戶集中反饋問題,后面每次放完之后,如果沒有動靜,內心都會有點忐忑,最開始是負責開發及遠程支持的同學詢問看看數據升上去多少了。我開玩笑說“看不到反饋心發慌啊,拿捏一下暴風雨是這波沒有,還是正在來的路上”,他說“啥也逃不過你的火眼金睛”。
到后面,我們每次商議完這一批選的人數,都像接力棒一樣大家各自站好位置。因為人數很多,每次不能太多也不能太少,如果觸及到了一個新的臨界點,那么通常會很小心翼翼。當還剩最后幾十人的時候,感覺終于能看見曙光了。
當最后一波放完之后,對于升級的操作已全部完成了,接下來如果再有用戶反饋,那就技術遠程支持,好在接下來的幾天,也沒有太多用戶反饋,只有零星的出現。這里面還有另一條線就是負責開發和遠程支持的這位同學再過幾天就要離職,這屬于最后一班崗。
雖然即便他離開之后也會有其他同學接手此項工作,但從最開始的重構開始,他一直是主力人員,他開玩笑地說我們要榨干他最后的價值,我們說把PC扶上馬之后你也就圓滿離開而無憾了。
三、新生命新思路
當重構這件事完成之后,原有的PC系統終于具備了全新的生命力,作為起家打天下的產品,終于不用再落后于App端,而是可以延展出無限可能。前期重構的忙碌也在無形中拼湊出它原有的業務全貌,這個過程也讓我逐步加深了對它的了解以及對業務的思考。
其實做產品到一定階段后,就會知道表層具象的產品只是軀殼,內在的業務邏輯和商業模式才是一款產品得以發展和延續的根本和源泉,甚至是一家公司得以立足于市場并持續發展的根基。如何能在更深的層面撬動甚至聯動,要持續進行觀察分析和思考。
四、經歷后的感悟
如今回顧這個過程,不算是太艱難的爬坡,可能是已經走過,所以并非堅不可破。于我而言是一次全新的體驗,這其中有邊界的延展,有了解的加深,有焦頭爛額的繁忙,亦有對此事報以必成的勇氣和決心。不論從事還是從人的角度,都讓我有一些新的體會和感悟。
1. 事
任何事情,規劃起來可以很宏大很抽象,可以夸夸其談賦予很多表層的東西,但真正要實現,需要的是腳踏實地勤勤懇懇的付出。如果沒有親身體驗躬身向前,永遠不會知道其中的千絲萬縷,這也是干活的執行者和不干活的領導者之間經常會有的代溝。
就像我們常說世界上沒有什么感同身受,你不是當事人不是掌舵者不是駕駛位置上的人,說什么都會很輕松,可唯有經歷過才會懂。真要想把事情做成,唯有堅忍耐煩。當兩個角色集于一身的時候,就是我常說的,需要你既能跳出來,又能扎進去。
事情在進行的過程中或者稍有困境,最不缺的就是悲觀失望甚至看衰的聲音出現,放棄容易,堅持才難。在這個過程中有時候可能你自己都不知道前景如何,但只要踏實認真努力前進,遇山開路遇水搭橋,必能柳暗花明又一村。堅持到最后,一覽眾山小。
2. 人
不得不說,人是做事成敗的很重要一個因素。我們往往說天時地利人和,不論大事還是小事,其實都需要這三個因素。當大家都迷茫時,你能拎清主線規劃一條路,當遇到困難時,各個角色的人首當其沖,有時候是你給他們信心,有時是他們給你信心。
那位升級后遠程支持的同學,一直也是研發過程中的主力人員。他很早就計劃年中離開北京回家鄉了,但是升級開啟后為了能及時支持,臨走前連續兩個周末都來公司加班。最后那次他說:還是不放心,過來看著點吧,這可能是我為公司加的最后一次班了。
團隊的力量不可忽視,另外就是很多人沒有絕對的性格,前面我說的那位測試同學最開始講解時常常讓會議進行不下去,當時大家心里都會有些想法。后面接觸多一些可能覺得也釋然了,很多時候他也有好的一面。事無絕對,人也是,始終相信人性本善。
3. 己
反思這個過程中的自己,其實成長也很多。從最開始的迷茫,到投入,到堅定,到堅守,再到最后的回望。這可能是我經歷最長的一次產品周期,也是之前從未遇到的情況??吹街貥嫼蟮漠a品能夠開花結果走上正軌,我內心很欣慰。
從最開始只是單純接到這項工作,并不知道里面的坑有多大,內容多復雜,那時候我的領導也不知道??梢坏┙邮肿銎饋砭褪潜е堰@件事做成的態度和決心,不論中間千難萬險,都想辦法去應對,遇到問題解決問題,也就這樣走下來了。
在重構的產品開發過程中,常有人問我,如果新版做出來用戶不用怎么辦?其實那時候我也不知道怎么辦,但唯一可以肯定的是,新版必定要取代老版,否則無法前進和迭代。這一預言在放量升級的過程中也出現了苗頭。
剛開始有一部分用戶反饋很大,強烈要求退回老版本,這也是前面所說的習慣的力量。雖然我們升級的原則是只要電腦配置支持新版本運行,就不建議退回老版,但依然有十余個用戶是升級釘子戶,不好溝通,那就只能退回老版。
這個現象我覺得像極了《跨越鴻溝》一書中所闡述的新技術采納生命周期,當一項新技術出現時,有創新者,早期使用者,早期大眾,晚期大眾,同樣也會有落后者。如今來看,我們的路徑和這個曲線是如此吻合。
當監測舊升新的人數已經超過80%時,我就知道此事已經基本平穩,剩下的只是收尾。用戶在逐漸接受采納,我們跨越了鴻溝斷層。最難的時刻過去了。
成事帶來的滿足和欣慰是精神之旅的紀念品,并不是非得需要外界有形的肯定和贊賞,那是你內心深處和自己的一個交代,事了拂衣去,深藏身與名,就是這種感覺。
未來的一切還要繼續,希望自己可以更加淡定從容,面對未知的一切。
一起加油,共勉!
#專欄作家#
慕斯姑娘,微信號:musiguniang,公眾號:產品那些年,人人都是產品經理專欄作家,《產品經理成長進階指南》作者。從消費互聯網入行,現在產業互聯網領域從事產品工作,擅長產品規劃和落地。
本文原創發布于人人都是產品經理,未經許可,禁止轉載。
題圖來自Unsplash,基于 CC0 協議。
上線到能真正用起來,沒有半年,搞不定的
打錯字了,不知道怎么撤回
如果只是單純重構底層的技術框架,在產品側千萬不要動到結構層,就算是框架層也要慎之又慎。
因為這種用了很久的系統,業務人員操作的慣性是非常強的,你動了就影響他們的業務效率了。
有時候領導為了讓你趕進度,會把N多的需求給你塞到一個版本里,說:既然重構了,那么把漏下的功能都給補上吧。
我只想說,too naive。幸虧你們開發人員還比較靠譜,不然真的,上線到能真正用起來,也個半年,搞不定的
所以前人留下的文檔真的很重要,就這一個準備工作就能耗費一半以上的時間
所以前人留下的文檔真的很重要,就這一個準備工作就能耗費一般以上的時間
寫的真好,學習了。
重構真的是比0到1更加難,這半年深有體會??
“比從0到1更難的,是把起家打天下的產品重構一次”確實如此,人們已經習慣原有的了,重構后人們能不能接受也是另說
很詳細也具有參考性的產品重構經歷,贊同這個觀點“真正要實現,需要的是腳踏實地勤勤懇懇的付出”