ï»?!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
我们æ›ùN‡åˆ°è¿‡æœ€åŽæœŸé™å³ž®†åˆ°æ¥ã€æ—¶é—´éžå¸¸ç´§˜q«çš„æƒ…况。当æ—Óž¼Œæˆ‘们必须ž®½å¿«ä¿®å¤BugåQŒç„¶è€Œå…¶ä¸çš„一个Bug特别åšéŸ§åQŒä“Qæˆ‘ä»¬ç™¾èˆ¬åŠªåŠ›ä¹Ÿæ— å¯å¥ˆä½•ï¼éšåŽåQŒæˆ‘çš„æŸä¸ªåŒäº‹æŽ¥æ‰‹äº†è°ƒè¯•å·¥ä½œã€‚ä»–å¼ø™¡Œå†™å…¥äº†ä¸€äº›åº”该从数æ®åº“下‚€ç´¢æ¥èŽ·å–的值——它们在¾pÈ»Ÿ˜qè¥çš„æœ€åˆå‡ 个月里ä¸ä¼šå‘生å˜åŒ–——éšåŽâ€¦â€¦ç³»¾lŸç¥žå¥‡åœ°æ£å¸¸å·¥ä½œäº†ï¼
  对于˜q™ç±»â€œèŽ«å其妙的代ç â€ï¼Œæˆ‘çš„˜q™ä½åŒäº‹ä»¥éžå¸”R£Ž‘£çš„埃åŠä¿šè¯¿UîC¹‹ä¸ºâ€œHabya’aâ€ï¼Œæ„å³ä¸´æ—¶æ‹¼å‡‘的组件ã€?/p>
  我åŒäº‹å’Œä»–çš„åˆ›é€ æ€§ä¿šè¯ç›¸ä»¿ï¼ŒWard Cunninghamåœ?992òq´æŠŠ˜q™ç§¾pŸç³•的代ç ç§°ä¹‹äØ“â€œæŠ€æœ¯å€ºåŠ¡â€â€”—在Wiki癄¡§‘上对技术债务的定义是“在判定æŸé¡¹ä»ÕdŠ¡å®Œæˆä¹‹å‰åQŒéœ€è¦å…ˆå®Œæˆçš„工作â€ï¼Œè€ŒSteve McConnellž®†æŠ€æœ¯å€ºåŠ¡å®šä¹‰ä¸ºâ€œä¸€¿U设计或构å¾çš„æ–¹æ³•,它是一¿UçŸæœŸå†…çš„æƒå®œä¹‹è®¡â€”â€”å› ä¸ºå®ƒä¼šäñ”生这æ ïLš„一¿U技术环境:与现在动手完æˆç›¸æ¯”,½EåŽå®ŒæˆåŒæ ·çš„å·¥ä½œéœ€è¦æ›´é«˜çš„æŠ•入。â€?/p>
  如果从实用主义的角度æ¥çœ‹å¾…技术债务åQŒæˆ‘们会å‘现实际上它òq¶ä¸æ€ÀL˜¯ä»¶åäº‹ã€‚å½“æˆªæ¢æ—¥æœŸå·²è¿‡çš„æ—¶å€™ï¼ŒæŠ€æœ¯å€ºåŠ¡ž®Þq›¸å½“于ä¸ÞZº†äº¤ä»˜è€Œä»˜å‡ºçš„“高速公路的˜q‡èµ\è´¹â€ã€‚我的å¦ä¸€ä¸ªæœ‹å‹æ›¾¾lè¿™æ ·å¯¹æˆ‘è¯´â€œæŠ€æœ¯å€ºåŠ¡ž®±åƒåœ¨æ²¡æœ‰åœè½¦åŒºåŸŸçš„地方åœèžRåQšäØ•åœèžRæ˜¯é”™è¯¯çš„è¡ŒäØ“åQŒè€Œä¸”会导致我们僾|šå•åQŒä½†æœ‰æ—¶å€™æˆ‘ä»¬äØ“äº†èµ¶ä¸Šæ—边徽{‘里的一‹Æ¡é‡è¦çº¦ä¼šï¼Œž®×ƒ¸å¾—丘q™æ ·é“¤è€Œèµ°é™©ï¼â€?/p>
ã€€ã€€æ‰€ä»¥ï¼Œæœ‰æ—¶å€™æ•ˆç›Šæˆæœ¬æ¯”军_®šäº†ä¸€åˆ‡ï¼ç„¶è€ŒæŠ€æœ¯å€ºåŠ¡å¿…é¡»åŠæ—©è§£å†³åQŒå®ƒä¸Žåƒé‡‘èžä¸Šçš„å€ºåŠ¡ç›æ€¼¼çš„å¦ä¸€ä¸ªåœ°æ–¹ï¼Œæ£æ˜¯åœ¨äºŽå®ƒä»¬éƒ½ä¼šäº§ç”Ÿåˆ©æ¯ã€?/p>
  ˜q™é‡Œçš„åˆ©æ¯æ˜¯æŒ‡åœ¨æ¯æ¬¡¾l´æŠ¤¾pÈ»Ÿçš„过½E‹ä¸åQŒæˆ‘们é¢å¯¹ä»¥ä¸‹çŠ¶å†µéœ€è¦ä»˜å‡ºçš„努力åQšç”±äºŽç´§è€¦åˆã€è¿‡å¤§çš„¾c…R€æœª¾læµ‹è¯•çš„ä»£ç æˆ–ä“Q何其他åÅžå¼çš„æŠ€æœ¯å€ºåŠ¡åQŒè€Œå¯¼è‡´ä»£ç å’Œ/或设计的¾l´æŠ¤å˜å¾—æžå…¶å›°éš¾ã€?/p>
  从我的观察æ¥çœ‹ï¼ŒæŠ€æœ¯å€ºåŠ¡çš„æ€Õdˆ©æ¯åƈä¸å›ºå®šï¼Œè€Œæ˜¯ä¼šéšç€æ—‰™—´çš„æŽ¨¿U»è€Œå¢žé•Ñ€‚æˆ‘çš„æ„æ€æ˜¯åQŒåœ¨é¢å¯¹ä¸€ä¸ªå¸¦æœ‰æŠ€æœ¯å€ºåŠ¡çš„ç³»¾lŸæ—¶åQŒæ¯ä¸€ä¸ªSprint䏿ˆ‘们都需è¦åœ¨¾pÈ»Ÿ¾l´æŠ¤ä¸Šèбè´Òޝ”之剿›´å¤šçš„精力。这个现象æºè‡ªä»¥ä¸‹ä¸¤™å¹å› ç´ ï¼š
¾l´æŠ¤æ—¶å¾ˆæœ‰å¯èƒ½ä¼šå¼•å…¥é¢å¤–的债务åQŒè¿™æ˜¯å› 为当我们的系¾lŸä¸æ‹¥æœ‰ä¸€äº›æØœä¹Þqš„ä»£ç æ—Óž¼Œä»ÖM½•¾l´æŠ¤éƒ½ä¼šéµä»Žç›¸åŒçš„代ç å’Œ/或设计方法。这些新增的债务会在下一‹Æ¡ç»´æŠ¤æ—¶æ¶ˆè€—更多的¾_‘ÖŠ›åQŒè€Œè¿™ä¸€åˆ‡å°†ä¸æ–é‡å¤ã€?/p>
éšç€æ—‰™—´çš„æµé€ï¼Œç”׃ºŽæ²¡æœ‰éµä»Žè®¾è®¡æ¨¡å¼ä»¥åо~ÞZ¹æ–‡æ¡£åŒ–,更多的开å‘者会从å„è‡ªå¯¹ä»£ç æˆ–设计片ŒDµå¦‚何工作的å‡è®¾å‡ºå‘åQŒç»™¾pÈ»Ÿæ‰“上ä¸åŒçš„è¡¥ä¸ã€‚æ¯«æ— ç–‘é—®ï¼Œ˜q™å°†åœ¨ç³»¾lŸä¸å¼•入新的Bug。而修订这些新Bugåˆä¼šå¼•入更多的Bug…â€?/p>
  åŸÞZºŽä»¥ä¸ŠåŽŸå› åQŒæ¯ä»½åˆ©æ¯éƒ½ä¼šå¯¹æŠ€æœ¯å€ºåŠ¡çš„å¢žé•Žì€œåšå‡ø™µA献â€ï¼Œå› 椘q™é‡Œçš„利æ¯å®žé™…上是å¤åˆ©è®¡½Ž—æ–¹å¼ã€‚å¤åˆ©è®¡½Ž—ä‹É用以下指数公å¼ï¼š
  Yt = Y0(1+r)t
  在这里,Yt是在½W¬t个Sprint时的债务å€û|¼ŒY0是债务åˆå§‹å€û|¼Œr代表增长率,而t代表Sprintåºå·ã€‚åœ¨æ•æ·™å¹ç›®çŽ¯å¢ƒä¸ï¼Œâ€œtâ€æ˜¯ä¸€ä¸ªæ•´æ•ŽÍ¼Œå› æ¤åœ¨è¿™é‡Œæˆ‘们å¯ä»¥è¯´åQŒæŠ€æœ¯å€ºåŠ¡ž®†éšç€æ—‰™—´çš„æŽ¨¿UÀLŒ‰å‡ 何方å¼å¢žé•¿åQˆå› ä¸ºå‡ ä½•å‡½æ•°æ˜¯æŒ‡æ•°å‡½æ•°çš„ä¸€ä¸ªç‰¹å®šæƒ…å†µâ€”â€”å½“æŒ‡æ•°å‡½æ•°ä¸çš„“tâ€æ°¸˜qœå–整数值的时候)ã€?/p>
ã€€ã€€å› æ¤åQŒéšç€æ··äؕ的代ç åº“ä¸æ–¿U¯ç¯åQŒç³»¾lŸå°†å˜å¾—æ›´åŠ è„†å¼±ä¸”éš¾ä»¥ç»´æŠ¤ã€‚æŠ€æœ¯å€ºåŠ¡åˆ©æ¯å¢žé•¿çš„å¦ä¸€ä¸ªå‰¯ä½œç”¨åˆ™æ˜¯åQŒç”±äºŽç”¨åœ¨ç»´æŠ¤ä¸Šçš„æ—¶é—´è¶Šæ¥è¶Šå¤šï¼Œå¯ÆD‡´å›¢é˜Ÿç”Ÿäñ”力éåˆîCº†æŠ‘制ã€?/p>
  在æŸä¸ªé¡¹ç›®ä¸åQŒæˆ‘们在很长旉™—´å†…都在å¿å—è¿™æ ïLš„¾pŸç³•代ç 实践åQŒå½“我们最¾lˆè¿›å…¥æ£å¼æŠ•å…¥ä‹É用å‰çš„阶ŒD‰|—¶åQŒç³»¾lŸçªç„¶ä¹‹é—´å°±å´©æºƒäº†ï¼æˆ‘们ä¸å¯èƒ½è¿›è¡Œé‡æž„çš„åŒæ—¶åQŒåˆèƒ½å¤Ÿé¿å…在系¾lŸä¸è¯¸å¤šéƒ¨åˆ†å¸¦æ¥é‡å¤§å½±å“åQŒå› æ¤æˆ‘ä»¬å†³å®šä¸€åˆ‡æŽ¨å€’é‡æ¥ï¼
下一节将½Ž€è¦ä»‹¾l一套用æ¥ç®¡ç†æŠ€æœ¯å€ºåŠ¡çš„æŽ¨èæµ½E‹ã€‚在åˆå§‹å‡è®¾ä¸ï¼Œæˆ‘ä»¬è®¤äØ“æŠ€æœ¯å€ºåŠ¡æ˜¯ä¸€¿U风险。这™å¹å‡è®‘ÖŸºäºŽå¯¹é£Žé™©çš„定义:“å¯èƒ½ä¼šå½±å“臛_°‘一™åšw¡¹ç›®ç›®æ ‡â€”—范围ã€è®¡åˆ’ã€æˆæœ¬æˆ–è´¨é‡â€”—的一件丼‹®å®šäº‹äšgã€‚â€æŠ€æœ¯å€ºåŠ¡éžå¸¸½W¦åˆ˜q™æ¡å®šä¹‰åQŒå› 为它寚w¡¹ç›®æ¥è¯´æ˜¯ä¸€™åÒŽ½œåœ¨å¨èƒï¼Œå¦‚æžœä¸èƒ½åŠæ—¶è§£å†³çš„è¯åQŒå¯èƒ½ä¼šå¯šw¡¹ç›®é€ æˆè´Ÿé¢å½±å“ã€?/p>
ã€€ã€€ä½œäØ“æ•æ·çˆ±å¥½è€…,我将把这个浽E‹æ”¾åœ¨Scrum™å¹ç›®ä¸ï¼Œæ¥è¿›è¡Œåˆ†æžã€‚实际上我å‘玎ͼŒéžå¸¸æœ‰å¿…è¦ç®¡ç†æ•æ·é¡¹ç›®çš„æŠ€æœ¯å€ºåŠ¡ã€‚å› ä¸ÞZ¸Žå…¶ä»–æ–ÒŽ³•相比åQŒæ•æäh–¹æ³•ä¸çš„å¿«é€Ÿäº¤ä»˜èŠ‚å¥æ›´åŠ é¼“åŠ±å¿«é€Ÿä¸”ä¸å¹²å‡€çš„代ç é£Žæ ¹{€‚è€Œä¸”åœ¨æ•æ·é¡¹ç›®ä¸åQŒæˆ‘们媘q›è¡Œæ°åˆ°å¥½å¤„的设计和架构åQŒåÆˆé€šè¿‡é‡æž„æ¥è·Ÿä¸Šä“Q何需求的调整åQ›è¿™æ ïLš„åŽæžœæ˜¯ï¼Œåœ¨æŸ¿U程度上我们æ€ÖM¼šæ‹¥æœ‰æŠ€æœ¯å€ºåŠ¡åQŒå› 为我们æ€ÀL˜¯ä¸å¾—ä¸åœ¨å±•开设计的过½E‹ä¸ä¼˜åŒ–我们的代ç ã€?/p>
  技术债务½Ž¡ç†‹¹ç¨‹å¦‚下åQ?/p>
è®‘Ö®šæŠ€æœ¯ä¿¡ç”¨é™é¢ï¼ˆTCLåQ‰â€”—TCL是我们愿æ„å€Ÿå‡ºçš„ç†æƒ›_·¥ä½œå°æ—¶æ•°æˆ–用æˆäh•…事点的最大总é¢ã€‚å¯ä»¥ç”¨æ€»é¡¹ç›®å¤§ž®çš„癑ֈ†æ¯”åÅžå¼æ¥è®¡ç®—该é™é¢ï¼Œä¾‹å¦‚10%ã€?/p>
è¯†åˆ«æŠ€æœ¯å€ºåŠ¡å› ç´ â€”â€”æŠ€æœ¯å€ºåŠ¡å› ç´ æ˜¯æŒ‡˜q™æ ·çš„æƒ…况:æŸä½å›¢é˜Ÿæˆå‘˜å¸Œæœ›¾l•过一些良好的代ç ã€è®¾è®¡æˆ–‹¹‹è¯•实践åQŒä»¥ä¾¿å®žçŽ°å¿«é€Ÿäº¤ä»˜ã€‚æˆ‘ä»¬åº”è¯¥åœ¨æ¯å¤©Scrum会议通过ž®ç»„讨论æ¥è¯†åˆ«è¿™äº›å› ç´ ã€?/p>
记录技术债务ä»ÕdŠ¡â€”â€”å¯¹äºŽæ¯™åÒŽŠ€æœ¯å€ºåŠ¡å› ç´ åQŒéœ€è¦åœ¨æŠ€æœ¯å€ºåŠ¡è®°å½•é‡Œæ·»åŠ ä¸¤™å¹ä“Q务,òq¶ä‹É用立™å¹å·¥ä½œå°æ—¶æˆ–ç”¨æˆ·æ•…äº‹ç‚¹çš„æ–¹å¼æ¥ä¼°½Ž—其大å°ã€‚这两项ä»ÕdŠ¡æ˜¯ï¼š
开拓型ä»ÕdŠ¡åQšæŒ‡æˆ‘ä»¬å†›_®šåˆ©ç”¨æŠ€æœ¯å€ºåŠ¡å› ç´ æ—Óž¼Œéœ€è¦åšä»€ä¹ˆã€‚这是技术债务的ç¯åŠ ã€?/p>
å¿è¿˜åž‹ä“QåŠ¡ï¼šå½“å†³å®šé‡æž„ä»£ç æˆ–设计的时候,我们需è¦åšä»€ä¹ˆã€‚这一ä»ÕdŠ¡çš„å¤§ž®ï¼Œä»£è¡¨äº†æˆ‘们从TCL䏿‹¿å‡ºå¤šž®‘æ¥å¿è¿˜å‘生的债务ã€?/p>
选择ä»ÕdŠ¡â€”â€”åœ¨Sprint规划会议ä¸ï¼Œé€‰æ‹©å¸Œæœ›å¼€æ‹“çš„æŠ€æœ¯å€ºåŠ¡å› ç´ ã€‚æŠ€æœ¯å€ºåŠ¡å› ç´ çš„é€‰æ‹©åº”è¯¥åŸÞZºŽäº§å“所有者确定的优先¾U§ã€?/p>
从TCLä¸å‡åŽÕd¿˜q˜åž‹ä»ÕdŠ¡æ‰€å…Œ™”的技术债务的大ž®ï¼ˆé™é¢æ‰£å‡åQ‰ã€?/p>
在Sprint待办事项列表ä¸å¢žåŠ ä¸Žå¼€æ‹“åž‹ä»ÕdŠ¡ç›¸å…³çš„æŠ€æœ¯å€ºåŠ¡åQŒåƈž®†å…¶å¤§å°ç´¯åŠ åˆ°é¡¹ç›®æ€Õd¤§ž®ä¸Šã€?/p>
  如果我们å‘现TCLå·²ç»å¿«è¦ç”¨å…‰äº†ï¼Œé‚£ä¹ˆæŽ¥ä¸‹æ¥æˆ‘们需è¦ï¼š
在Sprintå¾…åŠžäº‹é¡¹åˆ—è¡¨ä¸æ·»åР䏀™å¹å¿˜q˜åž‹ä»ÕdŠ¡ã€?/p>
在完æˆè¯¥å¿è¿˜åž‹ä“Q务åŽåQŒå¯¹TCLå¢žåŠ ½{‰é‡é¢åº¦ã€?/p>
  ˜q™æ ·åQŒæˆ‘们将TCLä½œäØ“ç›‘è§†¾pÈ»ŸåQŒä»¥ä¾¿åœ¨æŠ€æœ¯å€ºåŠ¡å¼€å§‹ç§¯èšçš„æ—¶å€™è¦å‘Šè‡ªå·±ï¼Œä»¥ä¾¿æˆ‘们努力使其æ¢å¤åˆ°å¥åºäh°´òqŸë€?/p>
 ¾l“è¯
  ž®†æŠ€æœ¯å€ºåŠ¡ä½œäØ“é£Žé™©æ¥è¿›è¡Œç®¡ç†ï¼Œòq¶ä‹É用技术信用é™é¢ï¼Œèƒ½å¤Ÿæœ‰æ•ˆåœ°å‡ž®‘技术债务的负é¢åª„å“ï¼ŒåŒæ—¶ä»¤æ”¶ç›Šæœ€å¤§åŒ–â€”â€”ç‰¹åˆ«æ˜¯åœ¨æ•æäh–¹æ³•ä¸åQŒæˆ‘们很å®ÒŽ˜“滥用技术债务åQŒå°†å…¶ä½œä¸ÞZ¸€¿UåŠ é€Ÿäº¤ä»˜çš„æ‰‹æ®µåQŒå› æ¤ä¹Ÿž®±éœ€è¦æ›´åŠ å…³æ³¨æŠ€æœ¯å€ºåŠ¡ã€?/p>