歡迎光臨
每天分享高質量文章

如何定義開發完成?(Definition of Done)

最近在拜讀曄的10x程式員工作法,收益良多,文中提出一個概念叫DoD(Definition of Done)給我的感觸頗深。這讓我聯想到實際工作過程中,經常遇到的扯皮、爭吵等各種場景,其實就和這個DoD分不開。

一、場景描述

  鄭曄在文中描述了這樣一種現象,相信有開發經歷的人多少有同感:

老張:這有一個任務需要完成,你看一下。

小李:這個不難,兩天就能做完,兩天以後就能上線。

  兩天以後,老張又來到小李的身邊驗收工作:

老張:怎麼樣,做完了嗎?今天能上線嗎?

小李:我的代碼寫完了。

老張:測試人員測過了嗎?

小李:還沒有。

老張:那今天能測完嗎?

小李:那我就不知道了。

老張:什麼?我可是答應了業務的人,今天一定要上線的!

  兩天以後,老張又來檢查工作。

老張:這個功能開發完了嗎?

小李:寫完了,你看我給你演示一下。

  小李熟練地演示了這個新寫好的功能,這次老張很滿意:

老張:做得不錯。單元測試都寫了吧?

小李:啊?還要寫單元測試嗎?

老張:要不為啥給你兩天的時間?

  很明顯,老張有些憤怒,貌似總在挑刺,而小李也沒有偷懶、有些委屈。於是,老張、小李和測試人員一起度過了一個不眠之夜。

二、理解的代溝

  根據上面的場景,我畫了兩幅小李和老張的思考圖,看下兩者的代溝在哪兒,如下圖所示。

  很顯然兩者對完成的定義各不相同。對開發人員小李來說,完成容易理解為編碼完成;而不去考慮代碼測試和線上測試;對技術主管老張來說,完成的理解可能會更多一些,包括編碼,測試,代碼規範,審查,上線等等,有些老張腦子裡的東西更多,比如下圖所示:

  為什麼會有上面的差異?從立場來看,小李彙報的物件只有老張,而老張要協作的物件可能有產品經理、老闆、總監、小李們。小李是從個人層面,關註的是一個點,老張是從團隊層面,關註的是一個面。

  各自定義差可能反應了一個信號,就是團隊成員整體上缺乏職業素養,那麼這個團隊就危險了。從小李的角度無論怎麼努力,都不可能滿足老張的需求,從老張的角度總覺得小李偷懶,導致團隊之間老是摩擦、挑刺,最後小李乾的不爽了,老張也覺得小李孺子不可教,最後事沒有做好,人跑了。

  接下來就要回到作者提出的DoD概念(完成的定義),從這個概念的名字便不難看出,它就是為瞭解決軟體開發中常見的“完成”問題而生的。

三、完成的定義

  這裡的DoD在鄭曄看來包含三個層次的含義:

  • DoD 是一個清單,清單是由一個個的檢查項組成的。
  • DoD 的檢查項應該是實際可檢查的。
  • DoD 是團隊成員間彼此彙報的一種機制。

  借助這三個含義,我模擬登錄功能列了表格:

 

  以上是站在測試用例的角度來寫,一個簡單的登錄就可以包含18個開發功能點,做好登錄並沒有那麼簡單,這也就難怪小李和老張總是意見不一致。如果攤開這份清單用來驗收登錄功能的完整性,我相信小李和老張彼此都不會有什麼意見。

  但是這裡有一個問題,就是老張根本不會去做這份清單!小李也沒有這種意識,那誰來擬定?也許你會說引入中間層,就是測試人員來擬定,假設你們團隊沒有測試人員呢?

  事情總是沒有錶面看起來的那麼簡單。這裡再設計一份簡化的驗收清單

 

  如此簡化的功能也能多少避免小李和老張的鴻溝了吧?那麼又回到前面的問題,誰來製作這份清單?

  我個人的意見是小李來做,因為小李的勢能沒有老張高,那就多增加自己的動能了,顯示自己做事的能力,同時也做一個同事眼中的好伙伴,領導眼中的好同事。等小李變成老李了,遇到小張也是小張來做這事。

四、DoD是一種思維方式

  鄭曄在最後又補充道:

至此,我們只是從軟體開發團隊內部協作的角度來談 DoD。但實際上,它不僅局限在團隊內部協作上,如果你可以放開思路,會發現 DoD 的思維在工作中用途非常廣泛。比如,當我們需要和其他團隊合作開發一個接口時,我們都知道第一步就是要把接口定義下來。

  這裡的DoD看起來很完美,定義了驗收清單,羅列了一系列驗收專案,並固化成文件。但是,過程中有幾個焦油坑需要去思考:

  • 如何才能符合“可驗收”?
  • 彼此都無法想到的風險如何管理?

  也許這需要團隊的磨合了,從老張角度如果這事不會死人,其實沒有必要去咄咄逼人,大不了後續進行迭代改進,否則逼得緊其實只會引起反彈,養成小李習慣性的逃避責任,形成團隊推卸責任的文化就得不償失了。

  當我們有了DoD的思維方式,後面的事情也許會變得簡單很多,鄭曄舉了個小例子讓人折服:

1.經常會有人過來,讓我幫忙做些事。運用 DoD 的思維,我首先會問他我具體要做哪些事,確認好細節(相當於定義好“檢查項”),然後我就知道,這個忙我能幫到什麼程度。

2.我請別人幫忙的時候,也會很清楚告訴他,哪些事是需要他做的,儘量減少不必要的誤解。

五、總結

  人與人的協作,總會存在理解上的偏差,如何去解決信息不同步的問題呢?DoD是一種最佳實踐,它是包含了檢查項的驗收清單,而如何做到“可檢查”需要雙方重點溝通。DoD從大了看是一種思維樣式,是一種盡可能消除不確定性,達成共識的方式。

借用鄭曄的一句話:“如果今天的內容你只能記住一件事,那請記住:在做任何事之前,先定義完成的標準。”

原文地址:https://www.cnblogs.com/jackyfei/p/10244806.html

赞(0)

分享創造快樂