摘要:JIRA在項(xiàng)目執(zhí)行管理、敏捷開發(fā)管理、體系流程管理、Bug跟蹤、客戶服務(wù)等方面是最擅長(zhǎng)的。本文重點(diǎn)介紹項(xiàng)目高效能協(xié)作過(guò)程中,如何通過(guò)JIRA來(lái)承載人與人之間的“協(xié)同”,人與系統(tǒng)之間的“實(shí)施”。
高效能團(tuán)隊(duì)是企業(yè)生存和發(fā)展的基石。任何企業(yè)面對(duì)當(dāng)下的激烈競(jìng)爭(zhēng),要想脫穎而出,一定離不開量身打造的高效能團(tuán)隊(duì),因?yàn)橹挥懈咝軋F(tuán)隊(duì)才能發(fā)揮出最高的效能,讓企業(yè)又好又快地發(fā)展。
企業(yè)效率的高低,取決于團(tuán)隊(duì)效能的高低。隨著互聯(lián)網(wǎng)行業(yè)的發(fā)展,單打獨(dú)斗的“軟件作坊”時(shí)代已經(jīng)過(guò)去,要實(shí)現(xiàn)企業(yè)又好又快的發(fā)展,必須得依靠一個(gè)高效能團(tuán)隊(duì)的支撐。
高效能協(xié)作要關(guān)注協(xié)同、實(shí)施和集成
互聯(lián)網(wǎng)項(xiàng)目短、平、快的特點(diǎn),決定了互聯(lián)網(wǎng)公司要特別講究效率和執(zhí)行力。項(xiàng)目執(zhí)行中的高效能協(xié)作,一定離不開人與人之間、人與系統(tǒng)之間,系統(tǒng)與系統(tǒng)之間的關(guān)聯(lián)和交集。這里的“人”是指項(xiàng)目干系人、團(tuán)隊(duì)成員,這里的“系統(tǒng)”是指和項(xiàng)目管理相關(guān)的信息系統(tǒng),如JIRA或Confluence等。
要做好“協(xié)同”,就需要更好地推進(jìn)人與人之間的聯(lián)系和交集;
要做好“實(shí)施”,就需要更好地推進(jìn)人與系統(tǒng)之間的聯(lián)系和交集;
要做好“集成”,就需要更好地推進(jìn)系統(tǒng)與系統(tǒng)之間的聯(lián)系和交集。
協(xié)同、實(shí)施和集成,與高效能協(xié)作之間的關(guān)系,如圖1所示。
圖1 協(xié)同、實(shí)施、集成和高效能協(xié)作之間的關(guān)系
JIRA是澳大利亞Atlassian公司出品的一款I(lǐng)ssue跟蹤及項(xiàng)目管理軟件。JIRA在項(xiàng)目執(zhí)行管理、敏捷開發(fā)管理、體系流程管理、Bug跟蹤、客戶服務(wù)等方面是最擅長(zhǎng)的。JIRA沒(méi)有派系和立場(chǎng)之分,非IT/互聯(lián)網(wǎng)行業(yè)的非技術(shù)項(xiàng)目,也一樣易用。
本文重點(diǎn)介紹項(xiàng)目高效能協(xié)作過(guò)程中,如何通過(guò)JIRA來(lái)承載人與人之間的“協(xié)同”,人與系統(tǒng)之間的“實(shí)施”。
案例1:個(gè)性首頁(yè)收錄展示關(guān)注的內(nèi)容
應(yīng)用需求場(chǎng)景
A公司是一家知名互聯(lián)網(wǎng)企業(yè),在用JIRA來(lái)輔助項(xiàng)目管理時(shí),發(fā)現(xiàn)并不是團(tuán)隊(duì)的每個(gè)成員都能熟練地用JIRA來(lái)快速準(zhǔn)確地找到他們各自想要的東西。
尤其是在多個(gè)并行項(xiàng)目中,大家手頭的事情多而雜,想讓大家每天上班后只要登錄JIRA,就能清晰地知道當(dāng)前有哪些待辦的事,同時(shí)也能記錄已完成事項(xiàng),以此作為團(tuán)隊(duì)成員工作的備忘錄和工作過(guò)程的記錄。
JIRA解決方案
給項(xiàng)目團(tuán)隊(duì)做一個(gè)共享的個(gè)性首頁(yè)。這里的“個(gè)性”是強(qiáng)調(diào)每個(gè)人登錄JIRA后,內(nèi)容呈現(xiàn)因人而異,且都是和自己密切相關(guān)的內(nèi)容。
互聯(lián)網(wǎng)產(chǎn)品技術(shù)類項(xiàng)目常規(guī)事項(xiàng)的分類主要包括Bug處理、新功能開發(fā)、優(yōu)化已有功能體驗(yàn)、底層技術(shù)類改造等。這些分類,在JIRA里可以映射劃分成不同的提案類型,如表1所示。
表1 JIRA提案類型名稱及其描述
把個(gè)性首頁(yè)做成兩個(gè)列欄,左邊一列收錄展示需要我處理的提案,如:需要我處理的Bug、Story、新增功能等,右邊一列收錄展示我已經(jīng)處理完成的提案,如:需要我回歸驗(yàn)證的Bug、我處理完成的全部Story、新增功能等。兩列的內(nèi)容都覆蓋全部的提案類型。具體實(shí)現(xiàn)效果如圖2所示。
圖2 個(gè)性首頁(yè)的實(shí)現(xiàn)效果
關(guān)鍵實(shí)現(xiàn)步驟
本文中全部應(yīng)用舉例的JIRA版本,都是V6.2.2。
用JIRA過(guò)濾器篩選出數(shù)據(jù)內(nèi)容后,再通過(guò)“面板”→“管理面板”→“添加小工具”→“顯示保存的過(guò)濾器”來(lái)實(shí)現(xiàn)。本文介紹的是Story提案類型在個(gè)性首頁(yè)的實(shí)現(xiàn),其他提案類型的實(shí)現(xiàn)方法都類似。
需要我處理的Story,過(guò)濾器的實(shí)現(xiàn)規(guī)則如下。
①Project項(xiàng)目庫(kù):選擇你指定要篩選的項(xiàng)目庫(kù)名稱;
②IssueType提案類型:Story;
③Assignee經(jīng)辦人:當(dāng)前用戶(不同JIRA用戶登錄后顯示不同內(nèi)容);
④Resolution解決結(jié)果:未解決。
我處理完成的全部Story,過(guò)濾器的實(shí)現(xiàn)規(guī)則如下。
某人曾經(jīng)處理完成的全部Story的數(shù)據(jù)篩選,屬于較為復(fù)雜的查詢條件,在JIRA過(guò)濾器的Basic簡(jiǎn)單模式下無(wú)法解析。需要用JIRA提供的查詢語(yǔ)言JQL來(lái)實(shí)現(xiàn),下面介紹兩種方法。
方法1:把項(xiàng)目各角色人員賬號(hào)的數(shù)據(jù)值,與“當(dāng)前用戶”進(jìn)行匹配。用JQL查詢語(yǔ)言實(shí)現(xiàn)的代碼如圖3所示。
圖3 方法一代碼示意圖
方法2:不依據(jù)前文中提到的各個(gè)角色人員賬號(hào)的數(shù)據(jù)值,采用JQL查詢語(yǔ)言語(yǔ)法的運(yùn)算符was,實(shí)現(xiàn)的代碼如圖4所示。
圖4 方法二代碼示意圖
最后,把個(gè)性首頁(yè)生成的鏈接,發(fā)給團(tuán)隊(duì)成員提供給他們訂閱。也可以讓他們?cè)贘IRA“面板”→“管理面板”→“熱門”→“熱門面板”中查找你分享的個(gè)性首頁(yè),點(diǎn)擊里面的五角星符號(hào)即可收藏。
需要注意的點(diǎn):
1、過(guò)濾器的瀏覽權(quán)限
首次創(chuàng)建完后,默認(rèn)的權(quán)限都是自己可見。如果想把過(guò)濾器的結(jié)果呈現(xiàn)在個(gè)性首頁(yè)上,就必須把過(guò)濾器的瀏覽權(quán)限開放給你要共享的人。
可以在“Issue”→“管理過(guò)濾器”選定你要共享的過(guò)濾器,進(jìn)入“編輯當(dāng)前過(guò)濾器”對(duì)話框進(jìn)行操作。共享范圍可以是所有人、指定的用戶組或特定的項(xiàng)目。
2、過(guò)濾器涉及項(xiàng)目的瀏覽權(quán)限
共享過(guò)濾器時(shí),一定要確保這些被分享到的人或指定用戶組,具備過(guò)濾器篩選條件中所涉及的項(xiàng)目瀏覽權(quán)限。否則即便是他收藏了你分享的個(gè)性首頁(yè),頁(yè)面上也無(wú)法顯示和他相關(guān)的內(nèi)容,并會(huì)提示一堆“選擇的過(guò)濾器filter-10005有錯(cuò)誤:ID 為‘10202’的值在字段‘project’中不存在”的報(bào)錯(cuò),報(bào)錯(cuò)提示中的filter和ID后面的數(shù)字,會(huì)隨著你過(guò)濾器的不同而變化。
案例2:個(gè)性工作流讓潛規(guī)則浮上臺(tái)面
應(yīng)用需求場(chǎng)景
A公司不同業(yè)務(wù)分類下的項(xiàng)目,存在不同的執(zhí)行流程。同一個(gè)業(yè)務(wù)分類下的不同項(xiàng)目中的不同類型事情,也會(huì)有不同的執(zhí)行流程。
雖然項(xiàng)目干系人都知道執(zhí)行流程,也能在項(xiàng)目執(zhí)行中及時(shí)發(fā)現(xiàn)流程上的問(wèn)題并積極改進(jìn),最后落實(shí)到文檔層面。但這些流程在執(zhí)行過(guò)程中,總覺得缺少一種承載物,導(dǎo)致在執(zhí)行中或多或少地都帶有“人情”因素,會(huì)執(zhí)行不力。
想通過(guò)把制度流程與工具相結(jié)合,讓不同項(xiàng)目中的不同類型事務(wù),都能按照既定的流程執(zhí)行并跟蹤,把潛在臺(tái)面下的流程規(guī)則浮上臺(tái)面。通過(guò)把項(xiàng)目狀態(tài)和流程的具體事務(wù)操作相結(jié)合,實(shí)現(xiàn)一些狀態(tài)數(shù)據(jù)的統(tǒng)計(jì)分析、共享、流程權(quán)限控制等,促進(jìn)項(xiàng)目執(zhí)行自動(dòng)化水平。
JIRA解決方案
總結(jié)項(xiàng)目執(zhí)行中的關(guān)鍵狀態(tài)和節(jié)點(diǎn),在JIRA中定義其狀態(tài),通過(guò)JIRA工作流把這些狀態(tài)與具體事務(wù)操作聯(lián)系起來(lái)。
A公司互聯(lián)網(wǎng)產(chǎn)品技術(shù)類項(xiàng)目執(zhí)行過(guò)程的關(guān)鍵狀態(tài)節(jié)點(diǎn)可以劃分為:方案設(shè)計(jì)中、UE設(shè)計(jì)中、UI設(shè)計(jì)中、頁(yè)面制作中、開發(fā)中、測(cè)試中、待上線、已上線等狀態(tài)。落實(shí)到JIRA工作流中,可增加一個(gè)初態(tài)Open(開啟)和終態(tài)Closed(關(guān)閉)。
以Story類型提案為例,具體的狀態(tài)操作跳轉(zhuǎn)流程如圖5所示。
圖5 Story、新增功能或改進(jìn)優(yōu)化類型提案的狀態(tài)操作跳轉(zhuǎn)流程
圖5中,當(dāng)創(chuàng)建Story類型的項(xiàng)目提案后,默認(rèn)的初始狀態(tài)是開啟,然后進(jìn)行產(chǎn)品方案設(shè)計(jì),進(jìn)入方案設(shè)計(jì)階段。
如果該項(xiàng)目提案依賴于頁(yè)面展示,那么就會(huì)依次經(jīng)歷UE設(shè)計(jì)、UI設(shè)計(jì)和頁(yè)面制作等階段,然后進(jìn)入開發(fā)、測(cè)試和上線等階段。
如果該項(xiàng)目提案不依賴于頁(yè)面展示,那么就不再需要經(jīng)歷UE設(shè)計(jì)、UI設(shè)計(jì)和頁(yè)面制作等階段,直接進(jìn)入開發(fā)、測(cè)試和上線階段。
無(wú)論Story類型的項(xiàng)目提案是否依賴于頁(yè)面,最后終結(jié)的狀態(tài)都是關(guān)閉。
從終態(tài)關(guān)閉,也可通過(guò)“恢復(fù)開啟提案”的事務(wù)操作回到初態(tài)開啟。
關(guān)鍵實(shí)現(xiàn)步驟
JIRA提供了兩種工作流的設(shè)計(jì)方法:Text文本方法和Diagram圖形方法。個(gè)人感覺采用Text文本方法相對(duì)易用些,而采用Diagram圖形方法時(shí)容易出亂走樣。
以下簡(jiǎn)要介紹采用Text文本方法進(jìn)行工作流的設(shè)計(jì)與實(shí)現(xiàn)。在jira-administrators管理員權(quán)限下,以Story類型工作流的實(shí)現(xiàn)為例。
①“Issue”→“狀態(tài)”→“添加新狀態(tài)”,將圖5中提到的狀態(tài),都添加完成。里面除了開啟和關(guān)閉是系統(tǒng)提供的狀態(tài)外,其他都是自定義的。
②“Issue”→“工作流”,復(fù)制JIRA默認(rèn)的工作流,重新命名,如:Weibo Story Issue Type Workflow。
③梳理圖5中涉及狀態(tài)和事務(wù)操作的對(duì)應(yīng)關(guān)系,可以思考以下問(wèn)題。
從項(xiàng)目上游的A狀態(tài)到下游的B狀態(tài),要進(jìn)行什么樣的事務(wù)操作?
從下游的B狀態(tài)退回到上游的A狀態(tài),要進(jìn)行什么樣的事務(wù)操作?
從A狀態(tài)進(jìn)行什么樣的事務(wù)操作可以不經(jīng)過(guò)B狀態(tài)直接到達(dá)C狀態(tài)?
每種狀態(tài)操作有哪些權(quán)限控制?什么權(quán)限的角色可以操作?什么權(quán)限的角色不可以操作?
這些可以梳理成表2的形式。
表2中,項(xiàng)目管理人員在每個(gè)狀態(tài)都具有操作權(quán)限,這里為了強(qiáng)調(diào)讓團(tuán)隊(duì)的每個(gè)成員都參與進(jìn)來(lái)使流程運(yùn)轉(zhuǎn),所以在“適合操作角色”的內(nèi)容上,將各個(gè)狀態(tài)對(duì)應(yīng)了各角色的成員。
表2 Story類型項(xiàng)目提案狀態(tài)和事務(wù)操作的對(duì)應(yīng)關(guān)系
④“Issue”→“工作流”,選定你要設(shè)計(jì)的工作流,如Weibo Story Issue Type Workflow,在“添加新步驟”中完成“步驟名稱”和“鏈接的狀態(tài)”的添加。
⑤在Text文本工作流的設(shè)計(jì)頁(yè)面中,選定需要操作的狀態(tài),點(diǎn)擊“添加工作流動(dòng)作”鏈接進(jìn)入“添加工作流動(dòng)作”頁(yè)面,填寫工作流名稱、描述、鏈接目標(biāo)狀態(tài)和工作流動(dòng)作頁(yè)面。
其中工作流動(dòng)作頁(yè)面不是必須要有的,可根據(jù)你的業(yè)務(wù)需要來(lái)取舍,如果業(yè)務(wù)層面需要有工作流動(dòng)作頁(yè)面作為跳轉(zhuǎn)頁(yè)面,那么該頁(yè)面就會(huì)在執(zhí)行這個(gè)工作流動(dòng)作時(shí)出現(xiàn)。
⑥在步驟⑤中提到的工作流動(dòng)作頁(yè)面,可以在“Issue”→“界面”和“界面方案”中,完成你所需要過(guò)渡頁(yè)面的制作,并在“添加工作流動(dòng)作”的頁(yè)面中與鏈接目標(biāo)狀態(tài)進(jìn)行關(guān)聯(lián)。
⑦“Issue”→“工作流方案”頁(yè)面中,創(chuàng)建工作流方案并命名,如XXX Workflow Schemes,并給XXX工作流方案的不同提案類型指派不同的工作流模型。
譬如:給Bug類型的提案,指派JIRA默認(rèn)的工作流;給Story類型的提案,指派前文中提到的Weibo Story Issue Type Workflow工作流等。
⑧最后,把工作流方案XXX Workflow Schemes與具體的Project項(xiàng)目庫(kù)關(guān)聯(lián),生效后方可使用。
工作流的設(shè)計(jì)完成后,項(xiàng)目提案中的狀態(tài)與事務(wù)操作對(duì)應(yīng)關(guān)系,工作流的JIRA效果展示,如圖6所示。
圖6 Story類型提案的狀態(tài)與事務(wù)操作對(duì)應(yīng)關(guān)系,工作流的JIRA效果展示
圖6中是把Story類型項(xiàng)目提案的每個(gè)狀態(tài)下所對(duì)應(yīng)的具體事務(wù)操作,先局部截圖后,再以拼圖的形式做效果展示。每個(gè)局部截圖中的數(shù)字標(biāo)號(hào)表示效果展示的順序。紅色分割線表示每種狀態(tài)與事務(wù)操作對(duì)應(yīng)關(guān)系區(qū)分。
需要注意的點(diǎn)
①設(shè)計(jì)工作流時(shí),建議首先復(fù)制JIRA默認(rèn)的工作流,在JIRA默認(rèn)工作流的基礎(chǔ)上再重命名,設(shè)計(jì)符合你需求的工作流。不要?jiǎng)偵蟻?lái)就直接定義新工作流來(lái)設(shè)計(jì),否則你會(huì)發(fā)現(xiàn)很多時(shí)候工作流的狀態(tài)和事務(wù)操作在執(zhí)行時(shí),都沒(méi)法按你的規(guī)則去實(shí)現(xiàn)。
②如果需要對(duì)某個(gè)事務(wù)操作(如“關(guān)閉提案”)在工作流中進(jìn)行權(quán)限控制,可以在該事務(wù)操作的權(quán)限控制頁(yè)面中,通過(guò)“觸發(fā)條件”下的Add condition進(jìn)行權(quán)限操作。
案例3:項(xiàng)目報(bào)表讓各項(xiàng)目情況一目了然
應(yīng)用需求場(chǎng)景
A公司的產(chǎn)品設(shè)計(jì)開發(fā)節(jié)奏快、周期短,平時(shí)并行的項(xiàng)目較多,除了個(gè)別非常重要緊急的項(xiàng)目以外,很少能做到專人專項(xiàng)。UED、開發(fā)、測(cè)試等職能部門的人力資源多數(shù)都是當(dāng)項(xiàng)目立項(xiàng)后,再被臨時(shí)指派到各個(gè)項(xiàng)目上。項(xiàng)目執(zhí)行中的狀態(tài)、時(shí)間點(diǎn)等信息也比較散落。
想讓每個(gè)項(xiàng)目的上線時(shí)間、資源分配(占用)情況、各環(huán)節(jié)的交付時(shí)間點(diǎn)、以及項(xiàng)目執(zhí)行中遇到的問(wèn)題風(fēng)險(xiǎn)等,能一目了然地呈現(xiàn);能在一個(gè)動(dòng)態(tài)的項(xiàng)目報(bào)表中看出整個(gè)業(yè)務(wù)分類下的現(xiàn)行項(xiàng)目情況。
JIRA解決方案
把A公司互聯(lián)網(wǎng)產(chǎn)品技術(shù)類項(xiàng)目的人員角色劃分,包括產(chǎn)品經(jīng)理、UE設(shè)計(jì)師、UI設(shè)計(jì)師、頁(yè)面制作、前端工程師、后端工程師、測(cè)試工程師、運(yùn)維工程師、項(xiàng)目管理等,在jira-administrators權(quán)限下的“字段”→“自定義字段”里,定義成“選擇用戶”(多選)的字段。
把項(xiàng)目執(zhí)行中涉及的各環(huán)節(jié)時(shí)間點(diǎn),包括起始時(shí)間、方案交付時(shí)間、UE交付時(shí)間、UI交付時(shí)間、頁(yè)面交付時(shí)間、前端交付時(shí)間、后端交付時(shí)間、測(cè)試交付時(shí)間、上線時(shí)間等,在jira-administrators管理權(quán)限下的“字段”→“自定義字段”里,定義成“日期選擇器”類型的字段。
涉及的自定義人員和時(shí)間字段,都可以在某些類型提案里做成多標(biāo)簽頁(yè)面的形式。以Story類型為例,在jira-administrators權(quán)限下的“界面”→“配置界面”→“字段標(biāo)簽頁(yè)”→“增加字段”中,可以實(shí)現(xiàn)項(xiàng)目時(shí)間計(jì)劃、參與人員、上線發(fā)布等主題的多標(biāo)簽頁(yè)面。
再用JIRA過(guò)濾器篩選出指定業(yè)務(wù)分類下的項(xiàng)目,同時(shí),把事前定義好的各角色參與人員、各環(huán)節(jié)時(shí)間點(diǎn)和問(wèn)題風(fēng)險(xiǎn)等字段,通過(guò)JIRA過(guò)濾器Columns自定義列元素的方式,做成一個(gè)項(xiàng)目報(bào)表。
最后將其通過(guò)“導(dǎo)出”→“打印預(yù)覽”的形式,得到一個(gè)絕對(duì)的鏈接地址,作為常用鏈接放到JIRA導(dǎo)航欄上,實(shí)現(xiàn)效果如圖7所示。
圖7 項(xiàng)目報(bào)表實(shí)現(xiàn)效果示意圖
由于項(xiàng)目報(bào)表的橫向?qū)挾容^寬,所以分兩張圖分開展示。
圖7的示例中,前半部分列分出了項(xiàng)目提案名稱、優(yōu)先級(jí)、狀態(tài)、上線時(shí)間、典型問(wèn)題風(fēng)險(xiǎn)及后續(xù)計(jì)劃等項(xiàng)目關(guān)鍵要素,后半部分列出了項(xiàng)目資源分配(占用)情況,以及各環(huán)節(jié)的交付時(shí)間點(diǎn),各職能部門負(fù)責(zé)人可以由此粗略估算出某個(gè)已被占用資源,下次被釋放的大致時(shí)間。
小結(jié)
本文通過(guò)三個(gè)較為典型的JIRA實(shí)踐案例,簡(jiǎn)要介紹了A公司在互聯(lián)網(wǎng)項(xiàng)目執(zhí)行的高效能協(xié)作過(guò)程中,JIRA所起到的重要承載作用,以及針對(duì)不同應(yīng)用需求場(chǎng)景提供的解決方案、關(guān)鍵實(shí)現(xiàn)方法等。當(dāng)然在其他具體實(shí)踐方面,JIRA能處理的應(yīng)用需求場(chǎng)景遠(yuǎn)遠(yuǎn)不止于此。
希望這三個(gè)JIRA實(shí)踐案例中涉及的解決方案、關(guān)鍵實(shí)現(xiàn)方法等,能拋磚引玉,為你在平時(shí)工作遇到的類似應(yīng)用場(chǎng)景,帶來(lái)高效解決方案層面的一些啟迪和思考。
說(shuō)明:本文內(nèi)容轉(zhuǎn)載自《程序員》雜志2014年7月刊“打造高效團(tuán)隊(duì)”封面報(bào)道。