作為研發(fā)人員,我們的產(chǎn)出就是企業(yè)的彈藥,我們的組織效率,是企業(yè)在市場上競爭的底氣。為了提升效率,我已經(jīng)在技術(shù)層面做了一部分工作,整理有關(guān)于軟件研發(fā)生產(chǎn)效率的幾點心得,在這里,我嘗試著思考的是,如何從組織流程層面,去進(jìn)一步提升效率。
在市場上,我們是以企業(yè)為單位去提供價值的,但是在企業(yè)內(nèi)部,我們是有專業(yè)分工的組織和團(tuán)隊的,分工協(xié)作一方面有利于從專業(yè)層面提升價值,另一方面會帶來溝通成本,分工協(xié)作的組織或個人都有自己的訴求,如果組織流程不暢,弊端叢生,就會削弱我們的生產(chǎn)能力,影響企業(yè)在市場上的發(fā)揮。
組織流程對生產(chǎn)效率的影響,主要在于利益相關(guān)者的關(guān)注點是否都得到了滿足,在此基礎(chǔ)上,我們采用科學(xué)的優(yōu)化原則,從流程/工具/組織結(jié)構(gòu)等方面著手,尋找適合自身的改進(jìn)方向。
人是利益驅(qū)動的,要梳理一個組織流程,我們首先要發(fā)現(xiàn)利益相關(guān)者,檢查一下是否所有人都在桌子上。
在研發(fā)生產(chǎn)活動中,一般流程是從市場部門提出需求,交給研發(fā)部門研發(fā),研發(fā)部門完成研發(fā)后,把產(chǎn)品移交給運營部門,最后一起維持產(chǎn)品運轉(zhuǎn),這是企業(yè)層面的基本流程。
具體到相關(guān)角色,有產(chǎn)品經(jīng)理、項目經(jīng)理、設(shè)計、研發(fā)、測試、運營等,產(chǎn)品經(jīng)理負(fù)責(zé)市場分析、用戶研究和迭代設(shè)計,項目經(jīng)理負(fù)責(zé)協(xié)調(diào)資源、控制成本、推動進(jìn)度,設(shè)計負(fù)責(zé)保障產(chǎn)品的視覺呈現(xiàn)和交互體驗,研發(fā)負(fù)責(zé)技術(shù)實現(xiàn),運營負(fù)責(zé)把產(chǎn)品推向市場,并分析用戶行為,推動產(chǎn)品持續(xù)迭代優(yōu)化。
產(chǎn)品經(jīng)理:深入理解市場/用戶需求,理解人性與生活,梳理邏輯、優(yōu)化體驗。有理解用戶的同理心;有深化產(chǎn)品的專業(yè)性;有追求體驗的審美與敏感,有良好的溝通和足夠的抗壓能力。
產(chǎn)品經(jīng)理的關(guān)注的是:功能能不能滿足業(yè)務(wù)需要、體驗?zāi)懿荒軡M足用戶、版本迭代的節(jié)奏能不能滿足市場要求,相對競品能不能建立和保持優(yōu)勢。
項目經(jīng)理:在有限的時間和成本下,協(xié)調(diào)內(nèi)外部資源,合理安排工期、推動項目進(jìn)度、管控質(zhì)量風(fēng)險。
項目經(jīng)理關(guān)注的是:項目四要素(范圍、時間、質(zhì)量、成本)是不是得到了合理的平衡,資源是不是夠用、排期能否優(yōu)化、成本(人月)有沒有超支、質(zhì)量是否合格、有沒有潛在的風(fēng)險,是否需要設(shè)立多個里程碑來分?jǐn)傦L(fēng)險。
設(shè)計:利用外觀、交互等手段,體現(xiàn)、創(chuàng)造和提升企業(yè)/產(chǎn)品/服務(wù)的品牌價值,設(shè)計出優(yōu)雅而切合企業(yè)定位的美感,清晰的業(yè)務(wù)流程、舒適可信賴的交互感受,良好的有引導(dǎo)性的產(chǎn)品印象等。
設(shè)計關(guān)注的是:配色、布局等效果是不是美觀、能不能起到突出重點、引導(dǎo)用戶的作用、能不能建立品牌形象,用設(shè)計打動人心。
研發(fā):開發(fā)業(yè)務(wù)功能、解決軟件bug、提升質(zhì)量、優(yōu)化性能等。
研發(fā)關(guān)注的是:明確的需求說明、設(shè)計在技術(shù)實現(xiàn)上的可行性、盡早或盡量少地修改需求、充裕的開發(fā)時間、合理安排的工作優(yōu)先級、盡早反饋bug。
測試:檢查軟件功能、發(fā)現(xiàn)邏輯缺陷、發(fā)現(xiàn)軟件bug、確保每個版本質(zhì)量可靠
測試關(guān)注的是:明確的測試用例,充裕的測試時間,合理安排的測試節(jié)奏。
運營:通過內(nèi)容/社區(qū)/商務(wù)等手段,尋找用戶、吸引用戶、留存用戶
運營關(guān)注的是:產(chǎn)品怎樣吸引用戶,吸引到多少用戶,留下多少用戶,怎樣持續(xù)增加用戶。
上文發(fā)掘了這么多角色,盡管都有共同的目標(biāo)(創(chuàng)造企業(yè)價值),但是每個角色都有自己的關(guān)注點,需要有一個清晰的分工設(shè)計和流程劃分,內(nèi)部溝通盡量內(nèi)部完成,實現(xiàn)高內(nèi)聚,外部溝通劃分好業(yè)務(wù)邊界,減少溝通成本,具體要考慮的因素如下:
1.人與人的溝通
組織流程的重點在于溝通,盡一切手段提高溝通效率。
要達(dá)成這個目標(biāo),一方面要標(biāo)準(zhǔn)化,確定好每個角色的職責(zé),這樣每個人每個系統(tǒng)有明確的分工,除了問題知道馬上找誰,避免踢皮球。另一方面要簡化,流程的每個環(huán)節(jié)只涉及必要的角色,不干擾其他人,避免出現(xiàn)文山會海。
2.小團(tuán)隊
人的腦容量有限,能維系的關(guān)系也有限,所以大團(tuán)隊的溝通成本會呈指數(shù)級增長,亞馬遜有個兩個披薩原則,說的是團(tuán)隊規(guī)模不能過大,最好兩個披薩就能喂飽整個團(tuán)隊。
從效率的角度,盡量根據(jù)業(yè)務(wù)需要,維持一個與業(yè)務(wù)對齊(內(nèi)聚)的小而美的團(tuán)隊,事實上,大的團(tuán)隊組織一般都會因為溝通/成本/管理的問題,被拆分為一個個的小團(tuán)隊。
3.高內(nèi)聚低耦合
如果要分小團(tuán)隊,團(tuán)隊內(nèi)部的溝通成本就比團(tuán)隊間的溝通成本低許多,所以我們要盡量在團(tuán)隊內(nèi)部解決問題,實現(xiàn)團(tuán)隊內(nèi)部高內(nèi)聚,團(tuán)隊之間低耦合。
一個高內(nèi)聚的團(tuán)隊?wèi)?yīng)該是自治的,最好按業(yè)務(wù)來劃分,把溝通成本維持在系統(tǒng)內(nèi)部,團(tuán)隊實現(xiàn)內(nèi)聚,這樣,每個團(tuán)隊就能對自己模塊的整個生命周期負(fù)責(zé)。
低耦合的團(tuán)隊之間,會有明確業(yè)務(wù)邊界,明確哪些問題確實需要與外部溝通,這其實就減少了和外部的溝通成本。
4.持續(xù)優(yōu)化
一口吃不成胖子,給再多的時間,也沒有完美的方案,我們要先解決能解決的問題,然后在時間的維度里不斷迭代,持續(xù)優(yōu)化。
有效的迭代優(yōu)化,就需要引入戴明環(huán)模型,Plan(計劃)-Do(執(zhí)行)-Check(檢查)-Action(糾正),其實就是在計劃和實施之后,要有一個回顧和評價,找到缺陷,優(yōu)化下一個計劃,這樣周而復(fù)始的迭代下去,我們就能不斷地提高效率,更好地創(chuàng)造價值。
實際上,持續(xù)優(yōu)化就是擁抱變化,不光是我們的國家要改革,企業(yè)自己也要持續(xù)改革才能生存。
要改進(jìn)組織流程,首先要尋找改進(jìn)的方向,個人認(rèn)為,改進(jìn)的目標(biāo)在于提升效率并減少失誤,工具的效率比人要高,自動化軟件的可靠性比人要好,簡潔明確的手冊的傳播性比人要好,如果一定要用人,抽象的角色比具體的個人要可靠(人會怠工跳槽,角色不會),所以,應(yīng)該是自動化工具>工具 文檔>文檔>角色>個人,也就是說自動化工具效能最高,具體的個人處理效能最低。
以上下班打卡為例,全自動化的打卡系統(tǒng)基本是最可靠也最方便的,單一的打卡機(jī)就有信息難以備份和查詢的問題,用簽到本每人簽字就不只是效率低下的問題,還需要有個專門的角色來進(jìn)行監(jiān)管了,如果這個監(jiān)管角色是個明確的個人,有操作空間,那么整個打卡工作就算是千瘡百孔了。
那么具體到上文提到的角色,我們主要從他們的輸入輸出來尋找改進(jìn)方向。
產(chǎn)品經(jīng)理:輸入的有市場需求、競品分析、公司戰(zhàn)略等;輸出的有產(chǎn)品設(shè)計、版本迭代計劃等。
輸入的市場需求等盡量有專門的角色來扮演客戶,從市場部門/運營部門(高效的運營也需要產(chǎn)品的功能支持)向產(chǎn)品反饋需求,不一定必須由某人統(tǒng)一反饋需求,而是鼓勵以更加流暢、更加規(guī)范、也更加重視的形式進(jìn)行反饋。
輸出的需求設(shè)計盡量文檔化,最好工具化,可以操作的原型>文檔>語言描述。
輸出的版本迭代計劃等盡量公開到固定區(qū)域,方便利益相關(guān)者提前準(zhǔn)備好節(jié)奏,也有利于盡早發(fā)現(xiàn)問題。
項目經(jīng)理:輸入的有各項目的資源要求、時間節(jié)點、當(dāng)前進(jìn)度和面臨問題等;輸出有工期安排、風(fēng)險處理、里程碑設(shè)計等。
輸入盡量以直觀的方式展示,例如用Scrum看板和燃盡圖等形式,直觀展示當(dāng)前工作任務(wù)和項目進(jìn)度,有利于統(tǒng)一團(tuán)隊目標(biāo),在盡量短的周期內(nèi)發(fā)現(xiàn)和解決問題。
輸出也盡量采用直觀的方式,把待完成任務(wù)、已排出任務(wù)、已完成任務(wù)等直觀展示出來,把距離下個里程碑的剩余時間和面臨的問題展示給整個團(tuán)隊,推動項目前進(jìn)。
設(shè)計:輸入有業(yè)務(wù)需求和視覺效果要求等;輸出有產(chǎn)品效果圖和UI切圖、UI交互方式等。
輸入里包括產(chǎn)品經(jīng)理輸出的需求設(shè)計,也包括其他角色乃至公司管理層給的意見建議,如前所述,這些盡量文檔化,即便是簡單的文字記錄也有利于梳理產(chǎn)品定位。
輸出的UI切圖是供給研發(fā)使用,應(yīng)盡量貼合產(chǎn)品的需要,如標(biāo)注布局尺寸、切成9patch格式、png格式、縮小體積等,這些盡量用工具(如APP設(shè)計神器Sketch)自動實現(xiàn)。
研發(fā):輸入的有需求設(shè)計、美工設(shè)計、待解決缺陷等;輸出有軟件產(chǎn)品和代碼文檔等。
輸入里包括產(chǎn)品經(jīng)理輸出的需求設(shè)計、也包括設(shè)計輸出的配色、布局、交互和圖標(biāo)等文件。
輸出的軟件產(chǎn)品要按照產(chǎn)品經(jīng)理規(guī)劃的迭代計劃提供相對應(yīng)的功能,研發(fā)在一定程度上要像產(chǎn)品經(jīng)理一樣深刻地理解最小可用產(chǎn)品、非過度設(shè)計等概念,所以在輸出上鼓勵有懂業(yè)務(wù)的角色(產(chǎn)品經(jīng)理)和懂代碼的角色(研發(fā)同事)對產(chǎn)品和代碼做檢查和評價。
研發(fā)應(yīng)當(dāng)盡量輸出規(guī)范的代碼,并編寫對應(yīng)的代碼文檔。輸出規(guī)范的代碼及代碼文檔是有很多好處的,一般認(rèn)為規(guī)范的代碼能降低至少20%的缺陷率,而且也有利于團(tuán)隊合作開發(fā)時其他同事對代碼的理解和復(fù)用;而代碼文檔特別是對代碼邏輯的描述,能在一段時間以后極大地幫助研發(fā)回憶和梳理代碼邏輯(沒有人能記住自己一個月前寫的代碼)。
另外,研發(fā)還可以輸出一些通用的代碼庫,通過復(fù)用來提升效率。
測試:輸入的有產(chǎn)品原型、軟件產(chǎn)品等;輸出有缺陷描述及測試報告等。
向測試輸入產(chǎn)品原型,是因為在產(chǎn)品研發(fā)上,越早發(fā)現(xiàn)缺陷越節(jié)省修復(fù)成本,所以應(yīng)盡早進(jìn)行測試,對產(chǎn)品原型也可以測試。
向測試輸入的軟件產(chǎn)品,最好與產(chǎn)品迭代的節(jié)奏保持一致,盡量留出足夠的時間完成測試,測試人員也應(yīng)該盡量依靠自動化工具去覆蓋大部分測試項目。
輸出缺陷描述其實是個溝通效率的問題,一般做法是直接通過自動化軟件(如Jira)向研發(fā)反饋,雙方直接溝通細(xì)節(jié)就能很好地提高效率,從組織上和業(yè)務(wù)上還可以進(jìn)一步明確業(yè)務(wù)邊界,明確哪些缺陷屬于哪些責(zé)任人,這就能進(jìn)一步提高溝通效率。
運營:輸入的是軟件產(chǎn)品和運營工具;輸出的有運營數(shù)據(jù)和意見建議。
輸入的軟件產(chǎn)品一般是定期迭代的,所以相應(yīng)的角色應(yīng)該是產(chǎn)品經(jīng)理,最好由產(chǎn)品經(jīng)理提供產(chǎn)品,再用某種自動化工具去實施和監(jiān)控對產(chǎn)品的推廣。
輸入的運營工具一般會逐漸豐富,應(yīng)當(dāng)有個統(tǒng)一的自動化平臺,根據(jù)運營遇到的提供工具;至少應(yīng)該有個持續(xù)更新的文檔,作為運營QA庫,指導(dǎo)運營如何選擇工具;運營每次遇到問題都直接找到研發(fā)尋求幫助是比較低效的做法。
運營輸出的意見建議是非常有利于提升產(chǎn)品價值的,即使是對運營工具的意見建議也有利于發(fā)揮產(chǎn)品價值,所以對應(yīng)的角色也應(yīng)當(dāng)是最了解產(chǎn)品的產(chǎn)品經(jīng)理,產(chǎn)品經(jīng)理也應(yīng)該有監(jiān)控運維意識,并在產(chǎn)品設(shè)計規(guī)劃上有所體現(xiàn)。
企業(yè)的目標(biāo)在于獲取長期利潤,而不是完美的管理。
著名的敏捷宣言是這么說的:
1.個體和互動高于流程和工具。
2.工作的軟件高于詳盡的文檔。
3.客戶合作高于合作談判。
4.響應(yīng)變化高于遵循計劃。
所以,優(yōu)化組織流程的目的,不在于找一個完美的管理模式,而在于解決實際問題,如果一個流程能解決問題,就采用這個流程;如果不能解決問題,完全可以打破所謂流程,保持適度的混亂,以高效解決問題為目標(biāo)。
我們并非要求嚴(yán)格按照流程和文檔做事,我們只是把流程和文檔作為工具,使工作更加高效和舒適的工具,如果流程和文檔有利于工作,就采用;如果不利于工作,我們鼓勵直接的溝通。
我們優(yōu)化組織流程的目標(biāo),在于更好的為企業(yè)提供價值,所有的分工協(xié)作和環(huán)節(jié)步驟,都不能忘記統(tǒng)一團(tuán)隊成員的認(rèn)識,建立共同的目標(biāo),明確努力的方向,并讓所有人(包括企業(yè))從中受益。
我們的目標(biāo)也不是建立一個完美的組織流程,世上不存在完美的組織,最好的做法是馬上從能做的事情開始做起,通過不斷迭代優(yōu)化,在時間維度上持續(xù)調(diào)整為更高效的組織流程。
每個架構(gòu)師都應(yīng)該研究下康威定律
微服務(wù)架構(gòu)的理論基礎(chǔ) - 康威定律
Scrum敏捷開發(fā)實踐
質(zhì)量管理經(jīng)典理論|PACD戴明環(huán)
本文轉(zhuǎn)自:簡書
聯(lián)系客服