人類社會能進步,就是因為它學會了既要叛逆也要服從,發現了在漫長歲月裡平衡兩種品性的社會機制 --斯莫林, 物理學的困惑
模式名稱
意圖
- 通過從整個團隊都同意的一組原則和實踐開始,避免"強加給團隊既有方案"帶來的負面問題, 包括片面的理解機械的遵守帶來的爭執等.
動機
開發過程中經常有一些關於實踐紀律的爭論, 比如修複失敗的構建是否是優先順序最高的事情, 比如是否嚴格遵守WIP Limits等. 一邊是諸如XP, Kanban各類實踐的紀律性, 一邊是基於”團隊應該選擇自己的流程”,“項目結束時的流程不應該和項目開始時一樣”之類理念對實踐的各種修正.
另外一些容易引起爭論的是團隊日常的開發習慣, 比如使用專門的工作站結對時是否可以把自己的個人電腦放在旁邊, 換Pair的頻率等等.
這些爭論對團隊計程車氣和效率都有影響. 團隊成員無法在一個感到舒適的環境和規則下工作. 每個人都覺得其他人的某些做法降低了團隊效率. 爭論還是相對好的結果, 至少問題暴露, 得到修複的機會. 更多的是隱忍, 對個人和整體都是一種長期的傷害.
這裡的問題在於, 團隊裡的每個人對每個實踐都有自己不同的理解. 每種實踐都自己的前提約束, 適用範圍和後續影響. 不同的團隊既有相通的問題, 又有自己獨特的問題. 而很多最佳實務, 往往被預設配置, 沒有經過團隊的討論, 實際上是團隊基於傳統, 基於圈子文化, 被動的無意識的接受了這些規則. 於是它順理成章的也會被無意識的違反.
方案
爭論不可避免, 我們要做的是把它提前, 理性化和公開化. 團隊應該基於自己的實際問題, 挑選合適的規則和實踐. 只要團隊同時擁有反饋機制, 隨著時間的進展問題的變化, 實踐自然也會跟著調整.
而最初的挑選, 應該在項目初期, 所有成員都參與的情況下來進行. 而最終需要達成某種共識, 作為基準, 包含團隊同意的各種規則. 爭論應該在此過程中發生. 一旦決定做出, 在下次討論這個主題進行調整之前, 團隊成員都應該遵守這條基準. 最終的決策過程未必是少數服從多數, 可以是任何團隊同意的決策過程, 只要確保團隊成員能充分的表達自己的意見, 每個人都瞭解彼此的想法.
已知應用
- Guangtao同學在Tiger Team成立初期跟團隊一起制定了日常工作規範的Agreement.
相關模式
- 問題驅動模式. 該模式強調的是最初的規則和實踐應該從何而來
Pattern Series:
- Framework Pattern, Consulting Pattern Series
- Meta Pattern, Consulting Pattern Series
- CoC: Context over Code, Coaching Pattern Series
- SoS: Story over Solution, Coaching Pattern Series