如何避免項(xiàng)目失控?
前言
作為一名技術(shù)開發(fā)人員,每次面對產(chǎn)品又改需求時(shí),曾經(jīng)我也會像別人一樣很煩躁,心里不免抱怨產(chǎn)品的反復(fù)無常。但我立即明白這樣想是不對的,不應(yīng)抱怨,而是要想辦法解決這個(gè)問題。于是我轉(zhuǎn)念想,為什么技術(shù)這么害怕產(chǎn)品改需求?是不是因?yàn)槲覀儗懙拇a還不夠靈活?還不夠強(qiáng)大?如果代碼也可以像衣服那樣任意搭配,是不是就能更好滿足客戶的需求。
另一方面,在更高的維度,從創(chuàng)業(yè)團(tuán)隊(duì)到發(fā)展中公司再到上市企業(yè),都會面臨同樣的問題。不管團(tuán)隊(duì)人數(shù)有多少,不管業(yè)務(wù)復(fù)雜或簡單,項(xiàng)目推進(jìn)起來,總覺得進(jìn)度都沒有想象中的那么好,那么順利,那么準(zhǔn)時(shí)。
為什么呢?原因到底是什么?
我們應(yīng)該怎樣才能做得更好,不讓項(xiàng)目失控?同時(shí),讓技術(shù)團(tuán)隊(duì)做起來不那么痛苦,壓力更小,讓企業(yè)和老板能更好控制成本和得到預(yù)期的效果,最終迎來企業(yè)性感的GMV增長曲線。
何為項(xiàng)目?項(xiàng)目=需求+任務(wù)+問題
首先,我們再來理解下對項(xiàng)目的定義。
我總結(jié)了下來,項(xiàng)目,是指在一定時(shí)間周期內(nèi),由技術(shù)人員完成的有限需求以及由此而產(chǎn)生的問題的一個(gè)集合。
從抽象層面概括,項(xiàng)目是一個(gè)集合,它是多元化的,因?yàn)樵谶@個(gè)集合里面,它既包含了產(chǎn)品的需求,開發(fā)的任務(wù),測試發(fā)現(xiàn)的Bug,同時(shí)蘊(yùn)含了時(shí)間、項(xiàng)目干系人,以及在這過程中產(chǎn)生的設(shè)計(jì)稿、文檔、PRD、測試用例、項(xiàng)目計(jì)劃、制品、和最終的軟件產(chǎn)品。只是為了方便管理,我們給這些元素界定了一個(gè)邊界,由此產(chǎn)生了項(xiàng)目。
從具體層面講,項(xiàng)目可以是一個(gè)全新的產(chǎn)品項(xiàng)目,也可以是一次軟件外包項(xiàng)目;可以是一次版本迭代,也可以是某一周要做的事情;可以是技術(shù)優(yōu)化專項(xiàng),也可以是重構(gòu)項(xiàng)目。
抽象層面的概括好比一個(gè)模板,刻出了具體的層面的項(xiàng)目樣子。
為了簡化對項(xiàng)目的理解,我提煉了這個(gè)公式:
項(xiàng)目 = 產(chǎn)品需求 + 開發(fā)任務(wù) + 測試問題
進(jìn)一步延展,補(bǔ)充每部分背后的核心關(guān)注點(diǎn),則有:
項(xiàng)目 = 產(chǎn)品需求(目標(biāo)) + 開發(fā)任務(wù)(效率) + 測試問題(質(zhì)量)
這個(gè)公式,能讓我們更加聚焦項(xiàng)目的主要成分,以及需要重點(diǎn)關(guān)注的要素。
這樣梳理過后,我們就會發(fā)現(xiàn),項(xiàng)目為什么難做?不外乎是:產(chǎn)品需求復(fù)雜多變、開發(fā)效率不高、項(xiàng)目質(zhì)量不穩(wěn)定。
需求不確定或前期梳理討論不充分,就會在后面的研發(fā)過程中處處碰壁踩坑,頻頻出現(xiàn)“此路不通”的現(xiàn)象。換一個(gè)新想法成本不高,產(chǎn)品需求文檔的調(diào)整成本也不算高,但如果項(xiàng)目開發(fā)已經(jīng)進(jìn)行到一半,這時(shí)說要換個(gè)商業(yè)模式或改需求,就要把已經(jīng)打好的架構(gòu)根基、做好的系統(tǒng)模塊以及調(diào)試好的每一行代碼都推倒重來,這時(shí)成本就會非常高。
開發(fā)效率低,就會導(dǎo)致項(xiàng)目的進(jìn)度和里程碑一延再延,但可怕的不是延期,而不是知道還要延期多久,更致命的是,我們有時(shí)居然對此束手無措。這可能是團(tuán)隊(duì)執(zhí)行力問題,也可能是項(xiàng)目安排統(tǒng)籌不當(dāng),抑或是核心技術(shù)人員被其他事務(wù)占用了寶貴的時(shí)間。
項(xiàng)目質(zhì)量不穩(wěn)定,就會引發(fā)產(chǎn)品的不滿,投訴需求為什么老是達(dá)不到驗(yàn)收的標(biāo)準(zhǔn)。真相只有一個(gè),做好的系統(tǒng)就像城市的道路,一旦上線使用,就會迎來用戶的使用和流量,用得人越多,經(jīng)過的流量越大,隱藏在系統(tǒng)中的每一個(gè)不合理、每一處缺陷,都會被人發(fā)現(xiàn)。這時(shí),就有了故障。小故障磨人,大故障傷身。特別在ToB企業(yè)服務(wù)中,客戶看到的不是你做好的99個(gè)強(qiáng)大功能,而是關(guān)心你還有哪個(gè)點(diǎn)沒做好或有問題的,很可能就因?yàn)檫@個(gè)問題最終沒買單。在ToC的業(yè)務(wù)中,故障的危害就更明顯了,客戶投訴、收入損失、企業(yè)形象受損。
項(xiàng)目的關(guān)鍵特性
著有《建筑的永恒之道》的亞歷山大,為了找到構(gòu)建建筑的本質(zhì),走訪了世界各地的村落和城市,嘗試整理出那些永恒建筑的特質(zhì),從而總結(jié)并書寫了膾炙人口的建筑模式。他說,“無心之心,道之永恒。”應(yīng)該怎么設(shè)計(jì)這座歌劇院才能滿足人們在這個(gè)場景下的需求,不是我為了某些私心或利益而故意這樣設(shè)計(jì),也不是為了突顯我個(gè)人的風(fēng)格而那樣設(shè)計(jì),而是因?yàn)?span style="letter-spacing: 0.544px;background-color: rgb(255, 255, 255);">歌劇院本來就應(yīng)該這些設(shè)計(jì),就是歌劇院的本質(zhì),只是上帝讓它通過我的大腦和我的雙手來把它表達(dá)描繪出來而已。如是,則找到了建筑的永恒之道。
同樣,在我們找到更好的管理項(xiàng)目的模式或方法之前,我們也需要嘗試找到項(xiàng)目的關(guān)鍵特性。
項(xiàng)目的關(guān)鍵特性有:約束、具體化、不確定性。
很重要的一點(diǎn),項(xiàng)目是約束的。項(xiàng)目有經(jīng)費(fèi)預(yù)算、有時(shí)間要求、有資源限制、有目標(biāo)限制。就目標(biāo)限制而言,也是項(xiàng)目存在的價(jià)值和緣由。例如企業(yè)的項(xiàng)目,最終是要實(shí)現(xiàn)商業(yè)化,贏得利益,這就要求項(xiàng)目能支撐公司的業(yè)務(wù)發(fā)展,滿足用戶的需求,促成訂單,把企業(yè)的商業(yè)模式落地執(zhí)行,盡快收回成本并實(shí)現(xiàn)盈利。又如學(xué)校的項(xiàng)目,要能滿足對某事項(xiàng)的管理工作,雖然對ROI要求甚微,但要能達(dá)到各部門、各單位、老師和學(xué)生的使用需求。又如公益項(xiàng)目,是希望能把活動的效果發(fā)揮得更有影響力。其次,項(xiàng)目在經(jīng)費(fèi)和時(shí)間方便的約束,也是顯而易見的。做任何一個(gè)項(xiàng)目,最終都是有其目標(biāo)的,不管是為了實(shí)現(xiàn)盈利還是為了達(dá)到某種效果,理解這個(gè)目標(biāo)和約束,對整體的項(xiàng)目把控對最高優(yōu)先級的編排有很大參考意義。
項(xiàng)目具體化。項(xiàng)目的一個(gè)很大挑戰(zhàn)在于要把無形變成有形,把抽象變?yōu)榫唧w化,把不確定的變成確定的。最開始是一個(gè)想法概念,最終呈現(xiàn)和交付的是整套生態(tài)系統(tǒng),包括軟件產(chǎn)品、使用終端、數(shù)據(jù)庫,甚至還有硬件的集成。
把無形變成有形,意味著我們要借助文檔、圖形和表格把在我們每個(gè)人腦中理解的概念、邏輯和流程實(shí)物化,讓它可以能被看見、被傳播和查閱。例如,產(chǎn)品經(jīng)理要把抽象的需求做成詳細(xì)的產(chǎn)品需求原型文檔;技術(shù)人員要把對系統(tǒng)的設(shè)計(jì)和業(yè)務(wù)的規(guī)則用一行一行代碼編譯起來;測試人員要把對系統(tǒng)的功能驗(yàn)證方式用測試用例一個(gè)個(gè)整理出來,并把發(fā)現(xiàn)的每個(gè)Bug記錄下來。雖然在當(dāng)面溝通或開會的那一短暫的時(shí)間內(nèi),在場的人員是能理解這些規(guī)則、系統(tǒng)設(shè)計(jì)或問題,那沒有好的文檔記錄,一段時(shí)間會就忘卻,一旦忘卻就容易迷茫。
把抽象變成具體化,前面也有提及到,在軟件開發(fā)領(lǐng)域里,結(jié)合需求文檔、設(shè)計(jì)稿、測試用例、服務(wù)器以及時(shí)間、人力和資源的投入后,產(chǎn)生的將是具體化的產(chǎn)品,例如是一個(gè)App、一套系統(tǒng)、一個(gè)網(wǎng)站或者一堆API接口,這些產(chǎn)品最終使用的人群是客戶或其他第三方系統(tǒng)。軟件開發(fā)是跨學(xué)科性的工程,其本身是理性的,任何一行代碼都要精確出現(xiàn)在它應(yīng)該出現(xiàn)的地方,除了代碼語法本身要正確外,還要能滿足業(yè)務(wù)需求對它的期望。試想一下,在一部30萬字的小說里,如果人物角色的名稱老是錯(cuò)亂會是怎樣的后果,修改起來又是怎樣的工作量,更何況一個(gè)項(xiàng)目下來就會產(chǎn)生少則幾千多則幾十萬行的代碼,而這些代碼每一行都必須要毫無差錯(cuò),可想要求之高。
項(xiàng)目的不確定性。做軟件開發(fā)一個(gè)很有意思的特征是,我們都是在開發(fā)別人從來沒做過的產(chǎn)品。外包天天有,但甲方的需求各有各的不同,項(xiàng)目千奇百態(tài)。雖然某個(gè)領(lǐng)域的產(chǎn)品前面已經(jīng)有較成熟或現(xiàn)成的代碼,但根據(jù)企業(yè)自身的商業(yè)模式,又會有新的創(chuàng)新或不尋常之處。就商城而言,有B2C、B2B、S2B2C、O2O,還分平臺型、分銷裂變型、加盟或連鎖,還要分是銷售商城軟件的,還是做SaaS商城的,還是研發(fā)商城給自己業(yè)務(wù)使用的。使用的人群不同,處理的數(shù)據(jù)不同,所在的行業(yè)領(lǐng)域不同,發(fā)起項(xiàng)目的企業(yè)不同,處在的時(shí)代不同,對項(xiàng)目產(chǎn)生了很多不確定性。研發(fā)的周期越長,不確定性就越大。
做項(xiàng)目的幾種境界
一代國學(xué)大師王國維在《人間詞話》總結(jié)了人生的三大境界。分別是:“昨夜西風(fēng)凋碧樹。獨(dú)上高樓,望盡天涯路。” “衣帶漸寬終不悔,為伊消得人憔悴。” “眾里尋他千百度,驀然回首,那人卻在,燈火闌珊處。”
青原行思大禪師也曾說人生的三大境界,分別是:“看山是山,看水是水。” “看山不是山,看水不是水。” “看山還是山,看水還是水。”
那么,做項(xiàng)目,又有幾種境界呢?
我覺得,可以分為四種:項(xiàng)目失敗、項(xiàng)目延期、項(xiàng)目按計(jì)劃交付上線、項(xiàng)目出色超預(yù)期完成。
最惡劣和最不想發(fā)生的情況是項(xiàng)目失敗。項(xiàng)目失敗的原因可能是項(xiàng)目本身中止或放棄,可能是項(xiàng)目沒能實(shí)現(xiàn)預(yù)期的目標(biāo),可能是項(xiàng)目最終消耗的時(shí)間和成本已遠(yuǎn)遠(yuǎn)超出了制定的預(yù)算,可能是項(xiàng)目遇到了目前無法解決或者解決代價(jià)非常高的限制,例如政策。
其次是項(xiàng)目延期,雖然項(xiàng)目沒有失敗,但背后需要付出的努力和等待的過程是非常艱辛和漫長的。這不是一個(gè)好的開頭,縱使項(xiàng)目勉強(qiáng)交付和上線了,但這將會迎來新的一波問題和挑戰(zhàn)。伴隨著前面的趕工期,埋下了技術(shù)債務(wù)和設(shè)計(jì)不合理,在業(yè)務(wù)初期不會突顯,但當(dāng)業(yè)務(wù)發(fā)展到一定程度時(shí),這些隱患就會越發(fā)明顯。例如小問題時(shí)有發(fā)生,系統(tǒng)不穩(wěn)定,新需求難以擴(kuò)展,用戶量達(dá)到一定規(guī)模后就會出現(xiàn)系統(tǒng)宕機(jī),維護(hù)成本高,缺乏文檔記錄,整個(gè)系統(tǒng)看起來就像一個(gè)黑洞,不斷吞噬我們的時(shí)間、精力、成本和激情,還阻礙了向前發(fā)展的大好趨勢。那時(shí),可能你會恨不得立即馬上現(xiàn)在就把它重構(gòu)。值得慶幸的是,項(xiàng)目延期只是一個(gè)信號,只是一個(gè)開頭,在接下來的時(shí)間里,我們還是可以在這個(gè)長跑過程中逐步優(yōu)化和調(diào)整,把系統(tǒng)做成我們想要的最美樣子。
項(xiàng)目按計(jì)劃交付上線。沒有仔細(xì)統(tǒng)計(jì),但在我過往近十年的研發(fā)項(xiàng)目里,能做到按計(jì)劃交付上線的項(xiàng)目,占比真的不多,估計(jì)在5%。能做到按計(jì)劃將付上線,已經(jīng)是很不容易了。這意味著,除了需求功能開發(fā)完成,測試驗(yàn)收完畢,系統(tǒng)完成服務(wù)器搭建、部署和上線,用戶培訓(xùn)結(jié)束,通過試用,跑出來的數(shù)據(jù)和結(jié)果與現(xiàn)實(shí)情況匹配無誤。思前顧后,百密無一疏。除此之外,項(xiàng)目團(tuán)隊(duì)還對之前已發(fā)現(xiàn)的問題預(yù)留了應(yīng)對方案、PlanB和監(jiān)控手段。這是一個(gè)好的開始,也是一個(gè)很難得的階段性成果。
項(xiàng)目出色超預(yù)期完成。最后,如果項(xiàng)目是出色超預(yù)期完成,那么真的是鳳手麟角了。這是真正的極客精神,工匠精神。這對創(chuàng)始人、團(tuán)隊(duì)成員要求非常高,每個(gè)人都是不可或缺的一員,并且各自有其擅長之處,團(tuán)隊(duì)之間完美無縫合作。項(xiàng)目也是處于風(fēng)口浪尖之上,順勢而為。這就好比如,在茫茫大海之上,突然間有一個(gè)明顯的浪潮,浪潮之巔有一艘船,船上有不懼風(fēng)雨和獨(dú)具慧眼的船長以及他的水手們。他們抓住了這個(gè)稍縱即逝的寶貴機(jī)會,沖鋒在最前面,齊心協(xié)力,排除萬難,一路飛奔向上!而這艘船,就類比我們這討論的項(xiàng)目。項(xiàng)目做好了還不行,還要盡快投產(chǎn)使用,讓它發(fā)揮最大的價(jià)值,實(shí)現(xiàn)我們對目標(biāo)的追求。如果我們花3萬塊錢造一艘船,并且能很快用它來挖掘和創(chuàng)造價(jià)值3千萬的財(cái)富,想想這是多么激動人心。這時(shí)項(xiàng)目如果能超預(yù)期完成,其價(jià)值和重要性可想而知。
銀彈何在
軟件行業(yè)一直說,“沒有銀彈”。不存在放之四海而皆準(zhǔn)的解決方案。但我們可以“退而求其次”,找到一種能幫助我們更好完成項(xiàng)目的方式。
項(xiàng)目是一個(gè)集合,也是一個(gè)過程。項(xiàng)目就有點(diǎn)像拍一部電影,參與的人員和角色會很多,故事情節(jié)一環(huán)扣一環(huán),還要有場景、道具、群演,但電影不是雜亂無章的,而是精心編排的,在合適的地點(diǎn),在指定的時(shí)間,出現(xiàn)相關(guān)人物,讓畫面呈現(xiàn)。
這意味著,做一個(gè)項(xiàng)目,不僅在于一開始就做得很好,而是要從一開始到結(jié)束到未來,都要一直做到最好,在合適的時(shí)間節(jié)點(diǎn),讓對應(yīng)負(fù)責(zé)的成員正確完成計(jì)劃完成的事項(xiàng)。
總結(jié)下來,以下三個(gè)策略對做好項(xiàng)目有非常重要的指導(dǎo)意義。
向上策略:項(xiàng)目管理
跨部門策略:信息互通
一線策略:團(tuán)隊(duì)協(xié)作
向上策略:項(xiàng)目管理
老板最關(guān)心的是結(jié)果,是ROI,是成本,是時(shí)間周期,以及項(xiàng)目做成后的成功概率和預(yù)估的收益和回報(bào)率。因此,老板在承擔(dān)風(fēng)險(xiǎn)和壓力的同時(shí),要做的是定戰(zhàn)略,做決策。項(xiàng)目管理和老板之間,要形成雙向回路。
一方面,對內(nèi)而言,項(xiàng)目要向老板匯報(bào)提供項(xiàng)目排期、項(xiàng)目風(fēng)險(xiǎn)、項(xiàng)目里程碑、項(xiàng)目具體進(jìn)度、項(xiàng)目上線計(jì)劃和項(xiàng)目發(fā)布后的效果復(fù)盤。有些信息,老板不一定會問,但他應(yīng)該具有知悉權(quán),以便在進(jìn)行決策時(shí)有依據(jù),有重要的精準(zhǔn)信息作為參考。
另一方面,老板會根據(jù)對市場的了解,對競品的分析,對趨勢的揣摸,對現(xiàn)有資源的梳理,以及當(dāng)前項(xiàng)目的狀況,及時(shí)做出更合理的高層調(diào)整。這時(shí)就需要項(xiàng)目負(fù)責(zé)人,能根據(jù)接收到背景信息,老板的期望,再拆解并傳達(dá)給團(tuán)隊(duì)成員和項(xiàng)目干系人,最終形成新的項(xiàng)目作戰(zhàn)方案。
當(dāng)項(xiàng)目和老板之間的雙向回路形成后,對項(xiàng)目的成功將會有很大的促進(jìn)作用。因?yàn)樽稣_的事情,會比把事情做正確更重要。
跨部門策略:信息互通
在企業(yè)里,會有多個(gè)部門。進(jìn)行一個(gè)項(xiàng)目,通常會涉及多個(gè)部門,不乏產(chǎn)品部、設(shè)計(jì)部、研發(fā)部、市場部、商務(wù)部、客服部、質(zhì)量管控部、運(yùn)維部等。幾乎每個(gè)專業(yè)線都會有相應(yīng)的團(tuán)隊(duì)或部門,或以水平橫向的方式形成組織內(nèi)的多個(gè)事業(yè)部。由此產(chǎn)生了跨部門的溝通與合作。
與村莊的生活方式不同,在城市,需要有一套明確的規(guī)章制度和約定,才能讓來自五湖四海的人都共同遵循規(guī)則辦事。例如,如果你想在廣州開車,那么你首先要考取駕照,符合資格后才能上本地車牌。開車出門,要注意不能闖紅燈,不能壓線,要記得加油,要買保險(xiǎn),要按規(guī)定停車并繳費(fèi)(不然可能會被鎖車貼紙或罰款),要定期做保養(yǎng)年審。在企業(yè)內(nèi),也需要制定或約定一套符合自己團(tuán)隊(duì)的工作流程,從需求收集到最終上線,以及故障反饋處理機(jī)制等。這樣,不同部門的人才能各司其職,通力配合。信息要互通、合作而非對立,這樣內(nèi)耗低、響應(yīng)更快。
一線策略:團(tuán)隊(duì)協(xié)作
對于一線團(tuán)隊(duì),關(guān)注的是執(zhí)行力,是效率和質(zhì)量。對此,我們需要更多的方法論、專業(yè)技能和工具。
例如,在研發(fā)團(tuán)隊(duì),可以用DDD領(lǐng)域驅(qū)動設(shè)計(jì)把復(fù)雜的領(lǐng)域問題簡單化,可以用TDD測試驅(qū)動開發(fā)做到意圖導(dǎo)向編程,可以用自動化集成環(huán)境進(jìn)行CD持續(xù)交付。當(dāng)然,項(xiàng)目本身就是一個(gè)協(xié)作過程,因此還需要一款團(tuán)隊(duì)協(xié)作的項(xiàng)目管理工具。
例如,我們團(tuán)隊(duì)針對敏捷開發(fā)專門設(shè)計(jì)的YesDev項(xiàng)目管理工具,可以用于團(tuán)隊(duì)協(xié)作開發(fā)。在項(xiàng)目管理,可以看到當(dāng)前的項(xiàng)目和歷史項(xiàng)目,每個(gè)項(xiàng)目,聚合了項(xiàng)目的概況信息,如進(jìn)度、負(fù)責(zé)人、時(shí)間節(jié)點(diǎn)。還有一個(gè)很重要的特色,就是根據(jù)前面所說的公式,匯總了項(xiàng)目需求、開發(fā)任務(wù)和問題。此外,還可以根據(jù)不同的工作組劃分項(xiàng)目,讓每個(gè)人只需要關(guān)注和自己有關(guān)的項(xiàng)目。

我們不能對我們不知道的東西進(jìn)行預(yù)測、分析和改進(jìn)。只有理解項(xiàng)目的本質(zhì),需要用到的工具,當(dāng)前團(tuán)隊(duì)的情況,我們才能更好的規(guī)劃和執(zhí)行。這過程,需要每個(gè)人的努力與配合,也需求溝通和協(xié)作,還需要流程和工具來輔助。
讓優(yōu)秀成為一種習(xí)慣。
