æ•æ·å¼€å‘简å²
åœ¨è½¯ä»¶å·¥ä¸šç•Œï¼Œæ•æ·å¼€å‘å·²æˆä¸ºä¼—多高效开å‘团队的制胜之é“。它ä¸ä»…被许多ä¸å°å…¬å¸é’ç,在全çƒä¸€ç™¾å¼ºçš„ä¼ä¸šä¸ï¼Œæ•æ·å¼€å‘也已大行其é“,å—到许多资深项目管ç†è€…和开å‘人员的推崇。到2008年,欧美软件ä¼ä¸šä¸ï¼Œæœ‰è¿‘åŠä¼ä¸šå·²é‡‡ç”¨æ•æ·æ–¹æ³•进行开å‘ã€‚å¤§å¤šæ•°å°šæœªåº”ç”¨æ•æ·çš„ä¼ä¸šï¼Œä¹Ÿéƒ½å¯¹å…¶æœ‰æ‰€äº†è§£ï¼Œè€Œä¸”很多在计划实施。ä¸å›½çš„外ä¼ï¼Œå¤–包公å¸å’Œè®¸å¤šçŸ¥åä¼ä¸šä¹Ÿéƒ½å¼€å§‹é‡‡ç”¨äº†æ•æ·æ–¹æ³•ã€‚ä¾‹å¦‚ï¼Œè…¾è®¯å†…éƒ¨å‡ ä¹Žæ‰€æœ‰çš„å¼€å‘å›¢é˜Ÿéƒ½åœ¨å®žæ–½æ•æ·ã€‚
æ•æ·æ–¹æ³•给这些ä¼ä¸šä¹Ÿå·²å¸¦æ¥äº†å·¨å¤§çš„æ”¶ç›Šã€‚æ®ä¸šå†…èµ„æ·±äººå£«å’Œé•¿æœŸä»Žäº‹æ•æ·å’¨è¯¢çš„æœåŠ¡å…¬å¸é€éœ²ï¼Œé‡‡ç”¨æ•æ·å¼€å‘的团队一般会æé«˜3-10å€çš„æ•ˆçŽ‡ï¼Œè½¯ä»¶çš„è´¨é‡ä¹Ÿæœ‰äº†æ›´åŠ å¯é çš„ä¿è¯ã€‚åŒæ—¶ï¼Œæ•æ·å¼€å‘的应用也给团队内的æ¯ä¸ªæˆå‘˜æä¾›äº†è‰¯å¥½çš„å‘展机会。他们的技术和åˆä½œæ°´å¹³éƒ½èƒ½å¾—到å“应的æé«˜ã€‚æ•æ·çš„æˆåŠŸæ¥æºäºŽå…¶æ–¹æ³•本身的适用性和团队对它的深入ç†è§£å’Œåˆç†è¿ç”¨ã€‚䏋颿ˆ‘ä»¬å°±å¯¹æ•æ·å¼€å‘åšä¸€ä¸ªç®€å•的介ç»å’Œè®¨è®ºã€‚
æ•æ·ä¸æ˜¯æŒ‡æŸä¸€ç§å…·ä½“的方法论ã€è¿‡ç¨‹æˆ–æ¡†æž¶ï¼Œè€Œæ˜¯ä¸€ç»„ä»·å€¼è§‚å’ŒåŽŸåˆ™ã€‚ç¬¦åˆæ•æ·ä»·å€¼è§‚å’ŒåŽŸåˆ™çš„å¼€å‘æ–¹æ³•包括:æžé™ç¼–程(XP),Scrum,精益软件开å‘(Lean Software Development),动æ€ç³»ç»Ÿå¼€å‘方法(DSDM),特å¾é©±åЍ开å‘(Feature Driver Development),水晶开å‘(Crystal Clear)ç‰ç‰ã€‚所有这些方法都具有以下共åŒç‰¹å¾ï¼š
1. è¿ä»£å¼å¼€å‘ã€‚å³æ•´ä¸ªå¼€å‘è¿‡ç¨‹è¢«åˆ†ä¸ºå‡ ä¸ªè¿ä»£å‘¨æœŸï¼Œæ¯ä¸ªè¿ä»£å‘¨æœŸæ˜¯ä¸€ä¸ªå®šé•¿æˆ–ä¸å®šé•¿çš„æ—¶é—´å—æ¯ä¸ªè¿ä»£å‘¨æœŸæŒç»çš„æ—¶é—´ä¸€èˆ¬è¾ƒçŸï¼Œé€šå¸¸ä¸ºä¸€åˆ°å…周。
2. 增é‡äº¤ä»˜ã€‚äº§å“æ˜¯åœ¨æ¯ä¸ªè¿ä»£å‘¨æœŸç»“æŸæ—¶è¢«é€æ¥äº¤ä»˜ä½¿ç”¨ï¼Œè€Œä¸æ˜¯åœ¨æ•´ä¸ªå¼€å‘过程结æŸçš„æ—¶å€™ä¸€æ¬¡æ€§äº¤ä»˜ä½¿ç”¨ã€‚æ¯æ¬¡äº¤ä»˜çš„都是å¯ä»¥è¢«éƒ¨ç½²åˆ°ç”¨æˆ·åº”用环境ä¸è¢«ç”¨æˆ·ä½¿ç”¨çš„ã€èƒ½ç»™ç”¨æˆ·å¸¦æ¥å³æ—¶æ•ˆç›Šå’Œä»·å€¼çš„产å“。
3. å¼€å‘团队和用户å馈推动产å“å¼€å‘ã€‚æ•æ·å¼€å‘æ–¹æ³•ä¸»å¼ ç”¨æˆ·èƒ½å¤Ÿå…¨ç¨‹å‚与到整个开å‘过程ä¸ã€‚这使需求å˜åŒ–和用户å馈能被动æ€ç®¡ç†å¹¶åŠæ—¶é›†æˆåˆ°äº§å“ä¸ã€‚åŒæ—¶ï¼Œå›¢é˜Ÿå¯¹äºŽç”¨æˆ·çš„éœ€æ±‚ä¹Ÿèƒ½åŠæ—¶æä¾›å馈æ„è§ã€‚
4. æŒç»é›†æˆã€‚新的功能或需求å˜åŒ–总是尽å¯èƒ½é¢‘ç¹åœ°è¢«æ•´åˆåˆ°äº§å“ä¸ã€‚一些项目是在æ¯ä¸ªè¿ä»£å‘¨æœŸç»“æŸçš„æ—¶å€™é›†æˆï¼Œ 有些项目则æ¯å¤©éƒ½åœ¨è¿™ä¹ˆåšã€‚
5. å¼€å‘团队自我管ç†ã€‚拥有一个积æžçš„ã€è‡ªæˆ‘管ç†çš„ã€å…·å¤‡è‡ªç”±äº¤æµé£Žæ ¼çš„å¼€å‘团队,是æ¯ä¸ªæ•æ·é¡¹ç›®å¿…ä¸å¯å°‘çš„æ¡ä»¶ã€‚äººæ˜¯æ•æ·å¼€å‘çš„æ ¸å¿ƒã€‚æ•æ·å¼€å‘总是以人为ä¸å¿ƒå»ºç«‹å¼€å‘çš„è¿‡ç¨‹å’Œæœºåˆ¶ï¼Œè€ŒéžæŠŠè¿‡ç¨‹å’Œæœºåˆ¶å¼ºåŠ ç»™äººã€‚
è®¸å¤šäººè®¤ä¸ºï¼Œç›¸æ¯”äºŽâ€œä¼ ç»Ÿâ€çš„ç€‘å¸ƒå¼€å‘æ¨¡å¼ï¼Œæ•æ·å¼€å‘是一ç§â€œçް代â€çš„开呿¨¡å¼ã€‚ä½†æ˜¯ï¼Œå®žé™…ä¸Šæ•æ·æ–¹æ³•,特别是è¿ä»£å’Œå¢žé‡å¼€å‘方法(IID)起æºäºŽ20世纪30年代的一些éžè½¯ä»¶é¡¹ç›®ã€‚è€Œæœ€æ—©å¼•å…¥ä¸€äº›æ•æ·æ–¹æ³•的项目之一就是20世纪60年代åˆçš„美国航天局水星计划。在这个项目ä¸ï¼Œä¸€äº›æžé™ç¼–程方法如测试先行ç‰ä¹Ÿè¢«ä½¿ç”¨ã€‚æ¤åŽï¼Œè¿ä»£å’Œå¢žé‡å¼€å‘被IBMè”邦系统部(FSDï¼‰å’Œæ²ƒæ£®ç ”ç©¶ä¸å¿ƒï¼ˆWatson Research Centerï¼‰é‡‡çº³ã€‚æœ‰è¶£çš„æ˜¯ä¸€äº›ç ”ç©¶äººå‘˜ç”šè‡³åœ¨å…³äºŽç€‘å¸ƒå¼€å‘æ¨¡å¼çš„æœ€æ—©çš„论文ä¸å‘çŽ°äº†æ•æ·å¼€å‘的线索。在这篇论文ä¸ï¼Œæ¸©æ–¯é¡¿.罗伊斯(Winston Royce)建议在一个项目ä¸ä½¿ç”¨ä¸¤æ¬¡ç€‘布模å¼ï¼Œä¹Ÿå°±æ˜¯ä½¿ç”¨ä¸¤æ¬¡è¿ä»£ã€‚
20世纪70年代,最早的有记载的使用è¿ä»£å’Œå¢žé‡å¼€å‘的主è¦é¡¹ç›®ä¹‹ä¸€ï¼Œæ˜¯ä¸ºç¬¬ä¸€è‰˜ç¾Žå›½ä¸‰å‰æˆŸæ½œè‰‡å¼€å‘的第一指挥和控制系统。该项目有大约一百万行代ç ,进行得éžå¸¸æˆåŠŸã€‚è¿ä»£å’Œå¢žé‡å¼€å‘从æ¤å¼€å§‹ç¨³æ¥å‘展,越æ¥è¶Šå¤šçš„项目开始使用这ç§å¼€å‘模å¼ã€‚在1976年,Tom Gilb在他的著作《软件度é‡ã€‹ï¼ˆâ€œSoftware Metricsâ€ï¼‰ä¸€ä¹¦ä¸é˜è¿°äº†ä»–çš„è¿ä»£å’Œå¢žé‡å¼€å‘实践,这å¯èƒ½å°±æ˜¯ç¬¬ä¸€éƒ¨é˜è¿°è¿™ç§æ–¹æ³•的书ç±ã€‚è¿ä»£å’Œå¢žé‡å¼€å‘çš„å¦ä¸€æ¬¡å‡ºè‰²å‘挥,是在一个美国宇航局航天飞机软件的开å‘项目。这个项目负责开å‘其航空电å设备的软件系统。该项目由IBMè”邦系统部(IBM FSD)在1977至1980年完æˆã€‚ä¸€äº›å…¸åž‹çš„æ•æ·åšæ³•ï¼Œå¦‚ä½¿ç”¨8个周è¿ä»£ä»¥åŠç”¨å馈推动开å‘å¾ªåºæ¸è¿›ç‰æ–¹æ³•都在该项目ä¸å¾—以应用。
20世纪80å¹´ä»£ï¼Œæ›´å¤šçš„å‡ºç‰ˆç‰©å’Œæ›´å¤šçš„é¡¹ç›®åº”ç”¨è¿›ä¸€æ¥æŽ¨è¿›äº†è¿ä»£å¼€å‘çš„å‘展。在1895å¹´ï¼Œå·´é‡Œè´æ¯ï¼ˆBarry Boehm)æ£å¼å®šä¹‰äº†ä½¿ç”¨è¿ä»£å¼€å‘的螺旋模型(Spiral model)。80年代åˆï¼Œåœ¨ç¾Žå›½å›½é˜²éƒ¨å‘生了一件有趣的事情。美国国防部一直以æ¥éƒ½è¦æ±‚其软件开å‘商在开å‘过程ä¸ä½¿ç”¨ä¸¥æ ¼çš„ç€‘å¸ƒå¼€å‘æ¨¡åž‹ã€‚但是到了1987年末,国防部开始“建议â€ä½¿ç”¨è¿ä»£å’Œå¢žé‡å¼€å‘ä½œä¸ºè½¯ä»¶å¼€å‘æ¨¡å¼ã€‚åŽæ¥ç¾Žå›½å›½é˜²éƒ¨çš„项目审查显示,早期使用瀑布模å¼å¼€å‘的软件项目,有75%以失败告终,有些开å‘出æ¥çš„äº§å“æ ¹æœ¬æ²¡æœ‰è¢«ä½¿ç”¨è¿‡ï¼Œåªæœ‰2%çš„è½¯ä»¶äº§å“æ— 需大é‡ä¿®æ”¹å°±èƒ½è¢«æ£å¸¸ä½¿ç”¨ã€‚
20世纪90年代,推è使用è¿ä»£å’Œå¢žé‡å¼€å‘çš„å‡ºç‰ˆç‰©å’Œæ–‡çŒ®æ˜¾è‘—å¢žåŠ ã€‚åœ¨ç»åŽ†äº†å¤šæ¬¡æœ‰â€œç€‘å¸ƒå¿ƒæ€â€ï¼ˆâ€˜waterfall mentality’)项目的失败之åŽï¼Œç¾Žå›½å›½é˜²éƒ¨å¼€å§‹â€œè¦æ±‚â€è€Œä¸æ˜¯åƒ80å¹´ä»£é‚£æ ·ä»…ä»…æ˜¯â€œå»ºè®®â€ä»–们的软件开å‘商使用IID开呿¨¡å¼ã€‚Rational统一开å‘过程(Rational Unified Process)也是在这一时期产生并å‘展起æ¥çš„,它具有更规范的è¿ä»£æ¸è¿›è¿‡ç¨‹ã€‚到2000å¹´åº•ï¼Œæ›´å¤šçš„æ•æ·å¼€å‘方法被广泛推广并被使用于å„ç§ä¸åŒçš„项目ä¸ã€‚2001年二月,一组由17ä½åœ¨DSDM,XP,Scrum,FSDç‰é¢†åŸŸçš„专家组æˆçš„代表团é½èšç¾Žå›½çŠ¹ä»–å·žï¼Œå¯»æ‰¾è¿™äº›æ–¹æ³•çš„å…±åŒç‚¹ã€‚æœ€ç»ˆï¼Œè¿™äº›ä¸“å®¶åˆ¶å®šå¹¶å®£å¸ƒäº†æ•æ·å¼€å‘宣言。由æ¤å½¢æˆäº†çŽ°åœ¨æˆ‘ä»¬æ‰€è®¤è¯†çš„æ•æ·å¼€å‘å’ŒåŽæ¥çš„æ•æ·è”盟。
æ•æ·è”盟官方网站:http://www.agilealliance.org/
关键è¯ï¼šæ•æ·å¼€å‘
æ•æ·å¼€å‘宣言
2001å¹´2月11日到13日,17ä½è½¯ä»¶å¼€å‘领域的领军人物èšé›†åœ¨ç¾Žå›½çŠ¹ä»–å·žçš„æ»‘é›ªèƒœåœ°é›ªé¸Ÿï¼ˆSnowbird)雪场。ç»è¿‡ä¸¤å¤©çš„è®¨è®ºï¼Œâ€œæ•æ·â€ï¼ˆAgile)这个è¯ä¸ºå…¨ä½“èšä¼šè€…所接å—,用以概括一套全新的软件开å‘价值观。这套价值观,通过一份简明扼è¦çš„ã€Šæ•æ·å®£è¨€ã€‹ä¼ é€’ç»™ä¸–ç•Œï¼ŒåŒæ—¶å³å®£å‘Šäº†æ•æ·å¼€å‘è¿åŠ¨çš„å¼€å§‹ã€‚
ã€Šæ•æ·å®£è¨€ã€‹
æˆ‘ä»¬é€šè¿‡èº«ä½“åŠ›è¡Œå’Œå¸®åŠ©ä»–äººæ¥æç¤ºæ›´å¥½çš„è½¯ä»¶å¼€å‘æ–¹å¼ã€‚ç»ç”±è¿™é¡¹å·¥ä½œï¼Œæˆ‘们形æˆäº†å¦‚下价值观:
 个体与交互 é‡äºŽ 过程和工具
å¯ç”¨çš„软件 é‡äºŽ 完备的文档
客户å作  é‡äºŽ åˆåŒè°ˆåˆ¤
å“应å˜åŒ–  é‡äºŽ éµå¾ªè®¡åˆ’
在æ¯å¯¹æ¯”对ä¸ï¼ŒåŽè€…å¹¶éžå…¨æ— 价值,但我们更看é‡å‰è€…。
17使•æ·å®£è¨€å‘起人åå•如下:
Kent Beck | Mike Beedle |
Arie van Bennekum | Alistair Cockburn |
Ward Cunningham | Martin Fowle |
James Grenning | Jim Highsmith |
Andrew Hunt | Ron Jeffries |
Jon Kern | Brian Marick |
Robert C. Martin | Steve Mellor |
Ken Schwaber | Jeff Sutherland |
Dave Thomas |
关键è¯ï¼šæ•æ·å¼€å‘宣言
æ•æ·å¼€å‘å二原则
åœ¨æ•æ·å¼€å‘ä¸ï¼Œæˆ‘们éµå¾ªä»¥ä¸‹å‡†åˆ™ï¼š
- æˆ‘ä»¬çš„æœ€é«˜ç›®æ ‡æ˜¯ï¼Œé€šè¿‡å°½æ—©å’ŒæŒç»åœ°äº¤ä»˜æœ‰ä»·å€¼çš„è½¯ä»¶æ¥æ»¡è¶³å®¢æˆ·ã€‚
- 欢迎对需求æå‡ºå˜æ›´â€”—å³ä½¿æ˜¯åœ¨é¡¹ç›®å¼€å‘åŽæœŸã€‚è¦å–„äºŽåˆ©ç”¨éœ€æ±‚å˜æ›´ï¼Œå¸®åŠ©å®¢æˆ·èŽ·å¾—ç«žäº‰ä¼˜åŠ¿ã€‚
- è¦ä¸æ–交付å¯ç”¨çš„è½¯ä»¶ï¼Œå‘¨æœŸä»Žå‡ å‘¨åˆ°å‡ ä¸ªæœˆä¸ç‰ï¼Œä¸”è¶ŠçŸè¶Šå¥½ã€‚
- 项目过程ä¸ï¼Œä¸šåŠ¡äººå‘˜ä¸Žå¼€å‘人员必须在一起工作。
- è¦å–„于激励项目人员,给他们以所需è¦çš„环境和支æŒï¼Œå¹¶ç›¸ä¿¡ä»–们能够完æˆä»»åŠ¡ã€‚
- æ— è®ºæ˜¯å›¢é˜Ÿå†…è¿˜æ˜¯å›¢é˜Ÿé—´ï¼Œæœ€æœ‰æ•ˆçš„æ²Ÿé€šæ–¹æ³•æ˜¯é¢å¯¹é¢çš„交谈。
- å¯ç”¨çš„软件是衡é‡è¿›åº¦çš„ä¸»è¦æŒ‡æ ‡ã€‚
- æ•æ·è¿‡ç¨‹æå€¡å¯æŒç»çš„å¼€å‘。项目方ã€å¼€å‘äººå‘˜å’Œç”¨æˆ·åº”è¯¥èƒ½å¤Ÿä¿æŒæ’久稳定的进展速度。
- 对技术的精益求精以åŠå¯¹è®¾è®¡çš„䏿–完善将æå‡æ•æ·æ€§ã€‚
- è¦åšåˆ°ç®€æ´ï¼Œå³å°½æœ€å¤§å¯èƒ½å‡å°‘ä¸å¿…è¦çš„工作。这是一门艺术。
- 最佳的架构ã€éœ€æ±‚和设计出自于自组织的团队。
- 团队è¦å®šæœŸåçœå¦‚何能够åšåˆ°æ›´æœ‰æ•ˆï¼Œå¹¶ç›¸åº”地调整团队的行为。
关键è¯ï¼šæ•æ·å¼€å‘ï¼Œæ•æ·åŽŸåˆ™
æžé™ç¼–程
æžé™ç¼–程(英è¯ï¼šExtreme programming,缩写为XP),是一ç§è½¯ä»¶å·¥ç¨‹æ–¹æ³•å¦ï¼Œæ˜¯æ•æ·è½¯ä»¶å¼€å‘ä¸åº”ç”¨æœ€ä¸ºå¹¿æ³›å’Œæœ€å¯Œæœ‰æˆæ•ˆçš„å‡ ç§æ–¹æ³•å¦ä¹‹ä¸€ã€‚如åŒå…¶ä»–æ•æ·æ–¹æ³•å¦ï¼Œæžé™ç¼–ç¨‹å’Œä¼ ç»Ÿæ–¹æ³•å¦çš„æœ¬è´¨ä¸åŒåœ¨äºŽå®ƒæ›´å¼ºè°ƒå¯é€‚åº”æ€§è€Œä¸æ˜¯å¯é¢„测性。æžé™ç¼–程的支æŒè€…è®¤ä¸ºè½¯ä»¶éœ€æ±‚çš„ä¸æ–å˜åŒ–是很自然的现象,是软件项目开å‘ä¸ä¸å¯é¿å…çš„ã€ä¹Ÿæ˜¯åº”该欣然接å—çš„çŽ°è±¡ï¼›ä»–ä»¬ç›¸ä¿¡ï¼Œå’Œä¼ ç»Ÿçš„åœ¨é¡¹ç›®èµ·å§‹é˜¶æ®µå®šä¹‰å¥½æ‰€æœ‰éœ€æ±‚å†è´¹å°½å¿ƒæ€çš„æŽ§åˆ¶å˜åŒ–的方法相比,有能力在项目周期的任何阶段去适应å˜åŒ–ï¼Œå°†æ˜¯æ›´åŠ çŽ°å®žæ›´åŠ æœ‰æ•ˆçš„æ–¹æ³•ã€‚
æžé™ç¼–程为管ç†äººå‘˜å’Œå¼€å‘人员开出了一剂指导日常实践的良方;这个实践æ„å‘³ç€æŽ¥å—并鼓励æŸäº›ç‰¹åˆ«çš„æœ‰ä»·å€¼çš„æ–¹æ³•。支æŒè€…ç›¸ä¿¡ï¼Œè¿™äº›åœ¨ä¼ ç»Ÿçš„è½¯ä»¶å·¥ç¨‹ä¸çœ‹æ¥æ˜¯â€œæžç«¯çš„â€å®žè·µï¼Œå°†ä¼šä½¿å¼€å‘è¿‡ç¨‹æ¯”ä¼ ç»Ÿæ–¹æ³•æ›´åŠ å¥½çš„å“åº”ç”¨æˆ·éœ€æ±‚ï¼Œå› æ¤æ›´åŠ æ•æ·ï¼Œæ›´å¥½çš„æž„建出高质é‡è½¯ä»¶ã€‚
æžé™ç¼–程的创始者是肯特·è´å…‹ã€æ²ƒå¾·Â·åŽå®å®‰å’Œç½—æ©Â·æ°å¼—é‡Œæ–¯ï¼Œä»–ä»¬åœ¨ä¸ºå…‹èŽ±æ–¯å‹’ç»¼åˆæŠ¥é…¬ç³»ç»Ÿï¼ˆC3)的薪水册项目工作时æå‡ºäº†æžé™ç¼–程方法。肯特·è´å…‹åœ¨1996å¹´3月æˆä¸ºC3çš„é¡¹ç›®è´Ÿè´£äººï¼Œå¼€å§‹å¯¹é¡¹ç›®çš„å¼€å‘æ–¹æ³•å¦è¿›è¡Œæ”¹å–„。他写了一本关于这个改善åŽçš„æ–¹æ³•å¦çš„书,并且于1999å¹´10月将之å‘行,这就是《æžé™ç¼–程解æžã€‹ï¼ˆ2005第二版出版)。克莱斯勒在2000å¹´2æœˆå–æ¶ˆäº†å®žè´¨ä¸Šå¹¶æœªæˆåŠŸçš„C3项目,但是这个方法å¦å´ä¸€ç›´æµè¡Œåœ¨è½¯ä»¶å·¥ç¨‹é¢†åŸŸä¸ã€‚至今,很多软件开å‘项目都一直以æžé™ç¼–程åšä¸ºä»–们的指导方法å¦ã€‚
æžé™ç¼–ç¨‹çš„ç›®æ ‡
æžé™ç¼–程的主è¦ç›®æ ‡åœ¨äºŽé™ä½Žå› éœ€æ±‚å˜æ›´è€Œå¸¦æ¥çš„æˆæœ¬ã€‚åœ¨ä¼ ç»Ÿç³»ç»Ÿå¼€å‘æ–¹æ³•ä¸ï¼Œç³»ç»Ÿéœ€æ±‚是在项目开å‘的开始阶段就确定下æ¥ï¼Œå¹¶åœ¨ä¹‹åŽçš„å¼€å‘过程ä¸ä¿æŒä¸å˜çš„。这æ„味ç€é¡¹ç›®å¼€å‘进入到之åŽçš„é˜¶æ®µæ—¶å‡ºçŽ°çš„éœ€æ±‚å˜æ›´å°†å¯¼è‡´å¼€å‘æˆæœ¬æ€¥é€Ÿå¢žåŠ ï¼Œè€Œè¿™æ ·çš„éœ€æ±‚å˜æ›´åœ¨ä¸€äº›å‘展æžå¿«çš„é¢†åŸŸä¸æ˜¯ä¸å¯é¿å…的。
æžé™ç¼–程通过引入基本价值ã€åŽŸåˆ™ã€æ–¹æ³•ç‰æ¦‚念æ¥è¾¾åˆ°é™ä½Žå˜æ›´æˆæœ¬çš„目的。一个应用了æžé™ç¼–程方法的系统开å‘é¡¹ç›®åœ¨åº”å¯¹éœ€æ±‚å˜æ›´æ—¶å°†æ˜¾å¾—æ›´ä¸ºçµæ´»ã€‚
æžé™ç¼–程的12ä¸ªæ ¸å¿ƒå®žè·µ
çŸäº¤ä»˜å‘¨æœŸ
æžé™ç¼–程和Scrumä¸€æ ·é‡‡ç”¨è¿ä»£çš„交付方å¼ï¼Œæ¯ä¸ªè¿ä»£1-3周时间。在æ¯ä¸ªè¿ä»£ç»“æŸçš„æ—¶å€™ï¼Œå›¢é˜Ÿäº¤ä»˜å¯è¿è¡Œçš„,ç»è¿‡æµ‹è¯•的功能,这些功能å¯ä»¥é©¬ä¸ŠæŠ•入使用。
计划游æˆ
XP的计划过程主è¦é’ˆå¯¹è½¯ä»¶å¼€å‘ä¸çš„两个问题:预测在交付日期å‰å¯ä»¥å®Œæˆå¤šå°‘工作;现在和下一æ¥è¯¥åšäº›ä»€ä¹ˆã€‚䏿–的回ç”这两个问题,就是直接æœåŠ¡äºŽå¦‚ä½•å®žæ–½åŠè°ƒæ•´å¼€å‘过程;与æ¤ç›¸æ¯”,希望一开始就精确定义整个开å‘过程è¦åšä»€ä¹ˆäº‹æƒ…ä»¥åŠæ¯ä»¶äº‹æƒ…è¦èŠ±å¤šå°‘æ—¶é—´ï¼Œåˆ™äº‹å€åŠŸåŠã€‚针对这两个问题,XPä¸åˆä¸¤ä¸ªä¸»è¦çš„相应过程:
软件å‘布计划(ReleasePlanning)。客户é˜è¿°éœ€æ±‚,开å‘äººå‘˜ä¼°ç®—å¼€å‘æˆæœ¬å’Œé£Žé™©ã€‚å®¢æˆ·æ ¹æ®å¼€å‘æˆæœ¬ã€é£Žé™©å’Œæ¯ä¸ªéœ€æ±‚çš„é‡è¦æ€§ï¼Œåˆ¶è®¢ä¸€ä¸ªå¤§è‡´çš„项目计划。最åˆçš„项目计划没有必è¦ï¼ˆä¹Ÿæ²¡æœ‰å¯èƒ½ï¼‰éžå¸¸å‡†ç¡®ï¼Œå› 为æ¯ä¸ªéœ€æ±‚çš„å¼€å‘æˆæœ¬ã€é£Žé™©åŠå…¶é‡è¦æ€§éƒ½ä¸æ˜¯ä¸€æˆä¸å˜çš„。而且,这个计划会在实施过程ä¸è¢«ä¸æ–地调整以趋精确。
周期开å‘计划(IterationPlanning)。开å‘过程ä¸ï¼Œåº”该有很多阶段计划(比如æ¯ä¸‰ä¸ªæ˜ŸæœŸä¸€ä¸ªè®¡åˆ’)。开å‘人员å¯èƒ½åœ¨æŸä¸ªå‘¨æœŸå¯¹ç³»ç»Ÿè¿›è¡Œå†…éƒ¨çš„é‡æ•´å’Œä¼˜åŒ–(代ç 和设计),而在æŸä¸ªå‘¨æœŸå¢žåŠ äº†æ–°åŠŸèƒ½ï¼Œæˆ–è€…ä¼šåœ¨ä¸€ä¸ªå‘¨æœŸå†…åŒæ—¶åšä¸¤æ–¹é¢çš„工作。但是,ç»è¿‡æ¯ä¸ªå¼€å‘周期,用户都应该能得到一个已ç»å®žçŽ°äº†ä¸€äº›åŠŸèƒ½çš„ç³»ç»Ÿã€‚è€Œä¸”ï¼Œæ¯ç»è¿‡ä¸€ä¸ªå‘¨æœŸï¼Œå®¢æˆ·å°±ä¼šå†æå‡ºç¡®å®šä¸‹ä¸€ä¸ªå‘¨æœŸè¦å®Œæˆçš„需求。在æ¯ä¸ªå¼€å‘周期ä¸ï¼Œå¼€å‘人员会把需求分解æˆä¸€ä¸ªä¸ªå¾ˆå°çš„任务,然åŽä¼°è®¡æ¯ä¸ªä»»åŠ¡çš„å¼€å‘æˆæœ¬å’Œé£Žé™©ã€‚这些估算是基于实际开å‘ç»éªŒçš„,项目åšå¾—å¤šäº†ï¼Œä¼°ç®—è‡ªç„¶æ›´åŠ å‡†ç¡®å’Œç²¾ç¡®ï¼›åœ¨åŒä¸€ä¸ªé¡¹ç›®ä¸ï¼Œæ¯ç»è¿‡ä¸€ä¸ªå¼€å‘周期,下一次的估算都会有更过的ç»éªŒã€å‚ç…§å’Œä¾æ®ï¼Œä»Žè€Œæ›´åŠ å‡†ç¡®ã€‚è¿™äº›ç®€å•çš„æ¥éª¤å¯¹å®¢æˆ·æä¾›äº†ä¸°å¯Œçš„ã€è¶³å¤Ÿçš„ä¿¡æ¯ï¼Œä½¿ä¹‹èƒ½çµæ´»æœ‰æ•ˆåœ°è°ƒæŽ§å¼€å‘进程。æ¯è¿‡ä¸¤ä¸‰ä¸ªæ˜ŸæœŸï¼Œå®¢æˆ·æ€»èƒ½å¤Ÿå®žå®žåœ¨åœ¨åœ°çœ‹åˆ°å¼€å‘人员已ç»å®Œæˆçš„需求。在XP里,没有什么“快è¦å®Œæˆäº†â€ã€â€œå®Œæˆäº†90%â€çš„æ¨¡ç³Šè¯´æ³•,è¦ä¸æ˜¯å®Œæˆäº†ï¼Œè¦ä¸å°±æ˜¯æ²¡å®Œæˆã€‚è¿™ç§åšæ³•çœ‹èµ·æ¥å¥½åƒæœ‰åˆ©æœ‰å¼Šï¼šå¥½å¤„是客户å¯ä»¥é©¬ä¸ŠçŸ¥é“完æˆäº†å“ªäº›ã€åšå‡ºæ¥çš„东西是å¦åˆç”¨ã€ä¸‹é¢è¿˜è¦åšäº›ä»€ä¹ˆæˆ–改进什么ç‰ç‰ï¼›å处是客户看到åšå‡ºæ¥çš„东西,å¯èƒ½ä¼šå¾ˆä¸æ»¡æ„ç”šè‡³ä¸æ¢åˆåŒã€‚实际上,XP的这ç§åšæ³•æ˜¯ä¸ºäº†åŠæ—©å‘现问题ã€è§£å†³é—®é¢˜ï¼Œè€Œä¸æ˜¯ç‰åˆ°è¿‡äº†å‡ 个月,用户终于看到开å‘å®Œçš„ç³»ç»Ÿäº†ï¼Œç„¶åŽæ‰å‘Šè¯‰ä½ 这个ä¸è¡Œã€é‚£ä¸ªå˜äº†ã€è¿˜è¦å¢žåŠ å“ªä¸ªå†…å®¹ç‰ç‰ã€‚
结对编程
结对编程是指代ç 由两个人å在一å°ç”µè„‘å‰ä¸€èµ·å®Œæˆã€‚一个程åºå‘˜æŽ§åˆ¶ç”µè„‘并且主è¦è€ƒè™‘ç¼–ç 细节。å¦å¤–一个人主è¦å…³æ³¨æ•´ä½“ç»“æž„ï¼Œä¸æ–的对第一个程åºå‘˜å†™çš„代ç 进行评审。
ç»“å¯¹ä¸æ˜¯å›ºå®šçš„:我们甚至建议程åºå‘˜å°½é‡äº¤å‰ç»“å¯¹ã€‚è¿™æ ·ï¼Œæ¯ä¸ªäººéƒ½å¯ä»¥çŸ¥é“其它人的工作,æ¯ä¸ªäººéƒ½å¯¹æ•´ä¸ªç³»ç»Ÿç†Ÿæ‚‰ï¼Œç»“对程åºè®¾è®¡åŠ å¼ºäº†å›¢é˜Ÿå†…çš„æ²Ÿé€šã€‚è¿™ä¸Žä»£ç é›†ä½“æ‰€æœ‰åˆ¶æ˜¯æ¯æ¯ç›¸å…³çš„。
坿Œç»çš„节å¥
å›¢é˜Ÿåªæœ‰æŒä¹…æ‰æœ‰èŽ·èƒœçš„å¸Œæœ›ã€‚ä»–ä»¬ä»¥èƒ½å¤Ÿé•¿æœŸç»´æŒçš„速度努力工作,他们ä¿å˜ç²¾åŠ›ï¼Œä»–ä»¬æŠŠé¡¹ç›®çœ‹ä½œæ˜¯é©¬æ‹‰æ¾é•¿è·‘ï¼Œè€Œä¸æ˜¯å…¨é€ŸçŸè·‘。
代ç 集体所有
代ç 集体所有æ„å‘³ç€æ¯ä¸ªäººéƒ½å¯¹æ‰€æœ‰çš„代ç 负责;这一点,å过æ¥åˆæ„å‘³ç€æ¯ä¸ªäººéƒ½å¯ä»¥æ›´æ”¹ä»£ç 的任æ„部分。结队程åºè®¾è®¡å¯¹è¿™ä¸€å®žè·µè´¡çŒ®è‰¯å¤šï¼šå€Ÿç”±åœ¨ä¸åŒçš„结队ä¸å·¥ä½œï¼Œæ‰€æœ‰çš„程åºå‘˜éƒ½èƒ½çœ‹åˆ°å®Œå…¨çš„代ç 。集体所有制的一个主è¦ä¼˜åŠ¿æ˜¯æå‡äº†å¼€å‘程åºçš„é€Ÿåº¦ï¼Œå› ä¸ºä¸€æ—¦ä»£ç ä¸å‡ºçŽ°é”™è¯¯ï¼Œä»»ä½•ç¨‹åºå‘˜éƒ½èƒ½ä¿®æ£å®ƒã€‚
在给予æ¯ä¸ªå¼€å‘人员修改代ç çš„æƒé™çš„æƒ…况下,å¯èƒ½å˜åœ¨ç¨‹åºå‘˜å¼•入错误的风险,他ï¼å¥¹ä»¬çŸ¥é“自己在åšä»€ä¹ˆï¼Œå´æ— æ³•é¢„è§æŸäº›ä¾èµ–关系。完善的å•元测试å¯ä»¥è§£å†³è¿™ä¸ªé—®é¢˜ï¼šå¦‚果未被预è§çš„ä¾èµ–产生了错误,那么当å•元测试è¿è¡Œæ—¶ï¼Œå®ƒå¿…定会失败。
ç¼–ç 规范
XPå¼€å‘å°ç»„ä¸çš„æ‰€æœ‰äººéƒ½éµå¾ªä¸€ä¸ªç»Ÿä¸€çš„ç¼–ç¨‹æ ‡å‡†ï¼Œå› æ¤ï¼Œæ‰€æœ‰çš„代ç 看起æ¥å¥½åƒæ˜¯ä¸€ä¸ªäººå†™çš„ã€‚å› ä¸ºæœ‰äº†ç»Ÿä¸€çš„ç¼–ç¨‹è§„èŒƒï¼Œæ¯ä¸ªç¨‹åºå‘˜æ›´åŠ å®¹æ˜“è¯»æ‡‚å…¶ä»–äººå†™çš„ä»£ç ,这是是实现代ç 集体所有的é‡è¦å‰æä¹‹ä¸€ã€‚
简å•设计
XPä¸è®©åˆå¦è€…感到最困惑的就是这点。XPè¦æ±‚用最简å•的办法实现æ¯ä¸ªå°éœ€æ±‚ï¼Œå‰ææ˜¯æŒ‰ç…§è¿™äº›ç®€å•设计开å‘出æ¥çš„软件必须通过测试。这些设计åªè¦èƒ½æ»¡è¶³ç³»ç»Ÿå’Œå®¢æˆ·åœ¨å½“下的需求就å¯ä»¥äº†ï¼Œä¸éœ€è¦ä»»ä½•画蛇添足的设计,而且所有这些设计都将在åŽç»çš„å¼€å‘过程ä¸å°±è¢«ä¸æ–åœ°é‡æ•´å’Œä¼˜åŒ–。
在XPä¸ï¼Œæ²¡æœ‰é‚£ç§ä¼ ç»Ÿå¼€å‘æ¨¡å¼ä¸ä¸€æ¬¡æ€§çš„ã€é’ˆå¯¹æ‰€æœ‰éœ€æ±‚的总体设计。在XPä¸ï¼Œè®¾è®¡è¿‡ç¨‹å‡ ä¹Žä¸€ç›´è´¯ç©¿ç€æ•´ä¸ªé¡¹ç›®å¼€å‘:从制订项目的计划,到制订æ¯ä¸ªå¼€å‘周期(Iteration)的计划,到针对æ¯ä¸ªéœ€æ±‚模å—的简æ·è®¾è®¡ï¼Œåˆ°è®¾è®¡çš„夿 ¸ï¼Œä»¥åŠä¸€ç›´ä¸é—´æ–çš„è®¾è®¡é‡æ•´å’Œä¼˜åŒ–。整个设计过程是个螺旋å¼çš„ã€ä¸æ–å‰è¿›å’Œå‘展的过程。从这个角度看,XP是把设计åšåˆ°äº†æžè‡´ã€‚
测试驱动开å‘
测试驱动开å‘çš„åŸºæœ¬æ€æƒ³å°±æ˜¯åœ¨å¼€å‘功能代ç 之å‰ï¼Œå…ˆç¼–写测试代ç ,然åŽåªç¼–写使测试通过的功能代ç ,从而以测试æ¥é©±åŠ¨æ•´ä¸ªå¼€å‘过程的进行。这有助于编写简æ´å¯ç”¨å’Œé«˜è´¨é‡çš„代ç ï¼Œæœ‰å¾ˆé«˜çš„çµæ´»æ€§å’Œå¥å£®æ€§ï¼Œèƒ½å¿«é€Ÿå“应å˜åŒ–ï¼Œå¹¶åŠ é€Ÿå¼€å‘过程。
测试驱动开å‘的基本过程如下:
① 快速新增一个测试
② è¿è¡Œæ‰€æœ‰çš„æµ‹è¯•(有时候åªéœ€è¦è¿è¡Œä¸€ä¸ªæˆ–一部分),å‘现新增的测试ä¸èƒ½é€šè¿‡
③ åšä¸€äº›å°å°çš„æ”¹åŠ¨ï¼Œå°½å¿«åœ°è®©æµ‹è¯•ç¨‹åºå¯è¿è¡Œï¼Œä¸ºæ¤å¯ä»¥åœ¨ç¨‹åºä¸ä½¿ç”¨ä¸€äº›ä¸åˆæƒ…ç†çš„æ–¹æ³•
④ è¿è¡Œæ‰€æœ‰çš„æµ‹è¯•,并且全部通过
â‘¤ã€€é‡æž„代ç ,以消除é‡å¤è®¾è®¡ï¼Œä¼˜åŒ–设计结构
ç®€å•æ¥è¯´ï¼Œå°±æ˜¯ä¸å¯è¿è¡Œ/å¯è¿è¡Œ/釿ž„â€”â€”è¿™æ£æ˜¯æµ‹è¯•驱动开å‘çš„å£å·
釿ž„
XP强调简å•的设计,但简å•çš„è®¾è®¡å¹¶ä¸æ˜¯æ²¡æœ‰è®¾è®¡çš„æµæ°´è´¦å¼çš„程åºï¼Œä¹Ÿä¸æ˜¯æ²¡æœ‰ç»“æž„ã€ç¼ºä¹é‡ç”¨æ€§çš„程åºè®¾è®¡ã€‚å¼€å‘人员虽然对æ¯ä¸ªUSERSTORY都进行简å•è®¾è®¡ï¼Œä½†åŒæ—¶ä¹Ÿåœ¨ä¸æ–地对设计进行改进,这个过程å«è®¾è®¡çš„釿ž„(Refactoring)。这个åå—æœ€æ—©å‡ºçŽ°åœ¨MartinFowler写的《Refactoring:ImprovingtheDesignofExistingCode》这本书ä¸ã€‚
Refactoringä¸»è¦æ˜¯åŠªåŠ›å‡å°‘程åºå’Œè®¾è®¡ä¸é‡å¤å‡ºçŽ°çš„éƒ¨åˆ†ï¼Œå¢žå¼ºç¨‹åºå’Œè®¾è®¡çš„å¯é‡ç”¨æ€§ã€‚Refactoringçš„æ¦‚å¿µå¹¶ä¸æ˜¯XP首创的,它已ç»è¢«æå‡ºäº†è¿‘30年了,而且一直被认为是高质é‡çš„代ç 的特点之一。但XP强调,把Refactoringåšåˆ°æžè‡´ï¼Œåº”è¯¥éšæ—¶éšåœ°ã€å°½å¯èƒ½åœ°è¿›è¡ŒRefactoring,åªè¦æœ‰å¯èƒ½ï¼Œç¨‹åºå‘˜éƒ½ä¸åº”该心疼以å‰å†™çš„程åºï¼Œè€Œè¦æ¯«ä¸ç•™æƒ…地改进程åºã€‚å½“ç„¶ï¼Œæ¯æ¬¡æ”¹åЍåŽï¼Œç¨‹åºå‘˜éƒ½åº”该è¿è¡Œæµ‹è¯•程åºï¼Œä¿è¯æ–°ç³»ç»Ÿä»ç„¶ç¬¦åˆé¢„å®šçš„è¦æ±‚。
系统éšå–»
为了帮助æ¯ä¸ªäººä¸€è‡´æ¸…楚地ç†è§£è¦å®Œæˆçš„客户需求ã€è¦å¼€å‘的系统功能,XPå¼€å‘å°ç»„ç”¨å¾ˆå¤šå½¢è±¡çš„æ¯”å–»æ¥æè¿°ç³»ç»Ÿæˆ–åŠŸèƒ½æ¨¡å—æ˜¯æ€Žæ ·å·¥ä½œçš„。比如,对于一个æœç´¢å¼•擎,它的Metaphorå¯èƒ½å°±æ˜¯â€œä¸€å¤§ç¾¤èœ˜è››ï¼Œåœ¨ç½‘ä¸Šå››å¤„å¯»æ‰¾è¦æ•æ‰çš„ä¸œè¥¿ï¼Œç„¶åŽæŠŠä¸œè¥¿å¸¦å›žå·¢ç©´ã€‚â€
æŒç»é›†æˆ
集æˆè½¯ä»¶çš„è¿‡ç¨‹ä¸æ˜¯æ–°é—®é¢˜ï¼Œå¦‚果项目开å‘的规模比较å°ï¼Œæ¯”如一个人的项目,如果它对外部系统的ä¾èµ–很å°ï¼Œé‚£ä¹ˆè½¯ä»¶é›†æˆä¸æ˜¯é—®é¢˜ï¼Œä½†æ˜¯éšç€è½¯ä»¶é¡¹ç›®å¤æ‚åº¦çš„å¢žåŠ ï¼ˆå³ä½¿å¢žåŠ ä¸€ä¸ªäººï¼‰ï¼Œå°±ä¼šå¯¹é›†æˆå’Œç¡®ä¿è½¯ä»¶ç»„件能够在一起工作æå‡ºäº†æ›´å¤šçš„è¦æ±‚-è¦æ—©é›†æˆï¼Œå¸¸é›†æˆã€‚早集æˆï¼Œé¢‘ç¹çš„集æˆå¸®åŠ©é¡¹ç›®åœ¨æ—©æœŸå‘现项目风险和质é‡é—®é¢˜ï¼Œå¦‚æžœåˆ°åŽæœŸæ‰å‘现这些问题,解决问题代价很大,很有å¯èƒ½å¯¼è‡´é¡¹ç›®å»¶æœŸæˆ–者项目失败。
æŒç»é›†æˆæ˜¯ä¸€ç§è½¯ä»¶å¼€å‘实践,å³å›¢é˜Ÿå¼€å‘æˆå‘˜ç»å¸¸é›†æˆå®ƒä»¬çš„工作,通常æ¯ä¸ªæˆå‘˜æ¯å¤©è‡³å°‘集æˆä¸€æ¬¡ï¼Œä¹Ÿå°±æ„å‘³ç€æ¯å¤©å¯èƒ½ä¼šå‘生多次集æˆã€‚æ¯æ¬¡é›†æˆéƒ½é€šè¿‡è‡ªåŠ¨åŒ–çš„æž„å»ºï¼ˆåŒ…æ‹¬ç¼–è¯‘ï¼Œå‘布,自动化测试)æ¥éªŒè¯ï¼Œä»Žè€Œå°½å¿«åœ°å‘现集æˆé”™è¯¯ã€‚许多团队å‘现这个过程å¯ä»¥å¤§å¤§å‡å°‘集æˆçš„问题,让团队能够更快的开å‘内èšçš„软件。
现场客户
在æžé™ç¼–程ä¸ï¼Œâ€œå®¢æˆ·â€å¹¶ä¸æ˜¯ä¸ºç³»ç»Ÿä»˜å¸çš„人,而是真æ£ä½¿ç”¨è¯¥ç³»ç»Ÿçš„人。æžé™ç¼–程认为客户应该时刻在现场解决问题。例如:在团队开å‘一个财务管ç†ç³»ç»Ÿæ—¶ï¼Œå¼€å‘å°ç»„内应包å«ä¸€ä½è´¢åŠ¡ç®¡ç†äººå‘˜ã€‚客户负责编写故事和验收测试,现场客户å¯ä»¥ä½¿å›¢é˜Ÿå’Œå®¢æˆ·æœ‰æ›´é¢‘ç¹çš„交æµå’Œè®¨è®ºã€‚
æžé™ç¼–程的4个价值
除了XP实践,æžé™ç¼–程还æå€¡å››å¤§ä»·å€¼ï¼šæ²Ÿé€šã€ç®€å•ã€å›žé¦ˆã€å‹‡æ°”。
沟通
构建一个软件系统的基本任务之一就是与系统的开å‘者交æµä»¥æ˜Žç¡®ç³»ç»Ÿçš„具体需求。在一些æ£å¼çš„è½¯ä»¶å¼€å‘æ–¹æ³•ä¸ï¼Œè¿™ä¸€ä»»åŠ¡æ˜¯é€šè¿‡æ–‡æ¡£æ¥å®Œæˆçš„。
æžé™ç¼–程技术å¯ä»¥è¢«çœ‹æˆæ˜¯åœ¨å¼€å‘å°ç»„çš„æˆå‘˜ä¹‹é—´è¿…é€Ÿæž„å»ºä¸Žä¼ æ’åˆ¶åº¦ä¸Šçš„è®¤è¯†çš„ä¸€ç§æ–¹æ³•ã€‚å®ƒçš„ç›®æ ‡æ˜¯å‘æ‰€æœ‰å¼€å‘人员æä¾›ä¸€ä¸ªå¯¹äºŽç³»ç»Ÿçš„å…±äº«çš„è§†è§’ï¼Œè€Œè¿™ä¸€è§†è§’åˆæ˜¯ä¸Žç³»ç»Ÿçš„æœ€ç»ˆç”¨æˆ·çš„视角相å»åˆçš„ã€‚ä¸ºäº†è¾¾åˆ°è¿™ä¸€ç›®æ ‡ï¼Œæžé™ç¼–程支æŒè®¾è®¡ã€æŠ½è±¡ã€è¿˜æœ‰ç”¨æˆ·-程åºå‘˜é—´äº¤æµçš„简å•化,鼓励ç»å¸¸æ€§çš„å£å¤´äº¤æµä¸Žå›žé¦ˆã€‚
简å•
æžé™ç¼–程鼓励从最简å•的解决方å¼å…¥æ‰‹å†é€šè¿‡ä¸æ–釿ž„è¾¾åˆ°æ›´å¥½çš„ç»“æžœã€‚è¿™ç§æ–¹æ³•ä¸Žä¼ ç»Ÿç³»ç»Ÿå¼€å‘æ–¹å¼çš„ä¸åŒä¹‹å¤„在于,它åªå…³æ³¨äºŽå¯¹å½“å‰çš„需求æ¥è¿›è¡Œè®¾è®¡ã€ç¼–ç ,而ä¸åŽ»ç†ä¼šæ˜Žå¤©ã€ä¸‹å‘¨æˆ–者下个月会出现的需求。æžé™ç¼–ç¨‹çš„æ‹¥æŠ¤è€…æ‰¿è®¤è¿™æ ·çš„è€ƒè™‘æ˜¯æœ‰ç¼ºé™·çš„ï¼Œå³æœ‰æ—¶å€™åœ¨ä¿®æ”¹çŽ°æœ‰çš„ç³»ç»Ÿä»¥æ»¡è¶³æœªæ¥çš„需求时ä¸å¾—ä¸ä»˜å‡ºæ›´å¤šçš„åŠªåŠ›ã€‚ç„¶è€Œä»–ä»¬ä¸»å¼ â€œä¸å¯¹å°†æ¥å¯èƒ½çš„éœ€æ±‚ä¸ŠæŠ•å…¥ç²¾åŠ›â€æ‰€å¾—到的好处å¯ä»¥å¼¥è¡¥è¿™ä¸€ç‚¹ï¼Œå› 为将æ¥çš„需求在他们还没æå‡ºä¹‹å‰æ˜¯å¾ˆå¯èƒ½å‘生å˜åŒ–的。为了将æ¥ä¸ç¡®å®šçš„需求进行设计以åŠç¼–ç æ„味ç€åœ¨ä¸€äº›å¯èƒ½å¹¶ä¸éœ€è¦çš„æ–¹é¢æµªè´¹èµ„æºã€‚è€Œä¸Žä¹‹å‰æåˆ°çš„â€œäº¤æµâ€è¿™ä¸€ä»·å€¼ç›¸å…³è”æ¥çœ‹ï¼Œè®¾è®¡ä¸Žä»£ç 上的简化å¯ä»¥æé«˜äº¤æµçš„è´¨é‡ã€‚一个由简å•的编ç 实现的简å•的设计å¯ä»¥æ›´åŠ å®¹æ˜“å¾—è¢«å°ç»„ä¸çš„æ¯ä¸ªç¨‹åºå‘˜æ‰€ç†è§£ã€‚
å馈
XP团队é‡è§†å馈,å馈越快越好。在æžé™ç¼–程ä¸ï¼Œâ€œåé¦ˆâ€æ˜¯å’Œç³»ç»Ÿå¼€å‘的很多ä¸åŒæ–¹é¢ç›¸å…³è”的:
æ¥è‡ªç³»ç»Ÿçš„å馈:通过编写å•元测试,程åºå‘˜èƒ½å¤Ÿå¾ˆç›´è§‚的得到ç»è¿‡ä¿®æ”¹åŽç³»ç»Ÿçš„状æ€ã€‚
æ¥è‡ªå®¢æˆ·çš„å馈:功能性测试是由客户还有测试人员æ¥ç¼–写的。他们能由æ¤å¾—知当å‰ç³»ç»Ÿçš„状æ€ã€‚è¿™æ ·çš„è¯„å®¡ä¸€èˆ¬è®¡åˆ’2ã€3ä¸ªç¤¼æ‹œè¿›è¡Œä¸€æ¬¡ï¼Œè¿™æ ·å®¢æˆ·å¯ä»¥éžå¸¸å®¹æ˜“çš„äº†è§£ã€æŽŒæŽ§å¼€å‘的进度。
æ¥è‡ªå°ç»„çš„åé¦ˆï¼šå½“å®¢æˆ·å¸¦ç€æ–°éœ€æ±‚æ¥å‚åŠ é¡¹ç›®è®¡åˆ’ä¼šè®®æ—¶ï¼Œå°ç»„å¯ä»¥ç›´æŽ¥å¯¹äºŽå®žçŽ°æ–°éœ€æ±‚æ‰€éœ€è¦çš„æ—¶é—´è¿›è¡Œè¯„ä¼°ç„¶åŽå馈给客户。
å馈是与“交æµâ€ã€â€œç®€å•â€è¿™ä¸¤æ¡ä»·å€¼ç´§å¯†è”系的。为了沟通系统ä¸çš„缺陷,å¯ä»¥é€šè¿‡ç¼–写å•元测试,简å•çš„è¯æ˜ŽæŸä¸€æ®µä»£ç å˜åœ¨é—®é¢˜ã€‚æ¥è‡ªç³»ç»Ÿçš„直接å馈信æ¯å°†æé†’程åºå‘˜æ³¨æ„这一部分。用户å¯ä»¥ä»¥å®šä¹‰å¥½çš„åŠŸèƒ½éœ€æ±‚ä¸ºä¾æ®ï¼Œå¯¹ç³»ç»Ÿè¿›è¡Œå‘¨æœŸæ€§çš„æµ‹è¯•。用Kent Beckçš„è¯æ¥è¯´ï¼šâ€œç¼–程ä¸çš„ä¹è§‚主义是å±é™©çš„ï¼Œè€ŒåŠæ—¶å馈则是解决它的方法。â€
勇气
æžé™ç¼–程ç†è®ºä¸çš„“系统开å‘ä¸çš„å‹‡æ°”â€æœ€å¥½ç”¨ä¸€ç»„实践æ¥è¯ 释。其ä¸ä¹‹ä¸€å°±æ˜¯â€œåªä¸ºä»Šå¤©çš„需求设计以åŠç¼–ç ,ä¸è¦è€ƒè™‘明天â€è¿™æ¡æˆ’律。这是努力é¿å…陷入设计的泥æ½ã€è€Œåœ¨å…¶ä»–问题上花费了太多ä¸å¿…è¦çš„精力。勇气使得开å‘人员在需è¦é‡æž„ä»–ä»¬çš„ä»£ç æ—¶èƒ½æ„Ÿåˆ°èˆ’适。这æ„味ç€é‡æ–°å®¡æŸ¥çŽ°æœ‰ç³»ç»Ÿå¹¶å®Œå–„å®ƒä¼šä½¿å¾—ä»¥åŽå‡ºçŽ°çš„å˜åŒ–需求更容易被实现。å¦ä¸€ä¸ªå‹‡æ°”çš„ä¾‹åæ˜¯äº†è§£ä»€ä¹ˆæ—¶å€™åº”该完全丢弃现有的代ç 。æ¯ä¸ªç¨‹åºå‘˜éƒ½æœ‰è¿™æ ·çš„ç»åŽ†ï¼šä»–ä»¬èŠ±äº†ä¸€æ•´å¤©çš„æ—¶é—´çº ç¼ äºŽè‡ªå·±è®¾è®¡å’Œä»£ç ä¸çš„ä¸€ä¸ªå¤æ‚çš„éš¾é¢˜å´æ— 所得,而第二天回æ¥ä»¥ä¸€ä¸ªå…¨æ–°è€Œæ¸…醒的角度æ¥è€ƒè™‘,在åŠå°æ—¶å†…就轻æ¾è§£å†³äº†é—®é¢˜ã€‚
æžé™ç¼–程的5个原则
ç»„æˆæžé™ç¼–ç¨‹åŸºç¡€çš„åŽŸåˆ™ï¼Œæ£æ˜¯åŸºäºŽä¸Šé¢æè¿°çš„é‚£å‡ æ¡ä»·å€¼ã€‚在系统开å‘项目ä¸ï¼Œè¿™äº›åŽŸåˆ™è¢«ç”¨æ¥ä¸ºå†³ç–åšå‡ºæŒ‡å¯¼ã€‚与价值相比,原则被æè¿°çš„æ›´åŠ å…·ä½“åŒ–ï¼Œä»¥ä¾¿åœ¨å®žé™…åº”ç”¨ä¸æ›´ä¸ºç®€å•的转å˜ä¸ºå…·ä½“的指导æ„è§ã€‚
1. 快速å馈
当å馈能åšåˆ°åŠæ—¶ã€è¿…é€Ÿï¼Œå°†å‘æŒ¥æžå¤§çš„作用。一个事件和对这一事件åšå‡ºåé¦ˆä¹‹é—´çš„æ—¶é—´ï¼Œä¸€èˆ¬è¢«ç”¨æ¥æŽŒæ¡æ–°æƒ…况以åŠåšå‡ºä¿®æ”¹ã€‚ä¸Žä¼ ç»Ÿå¼€å‘æ–¹æ³•ä¸åŒï¼Œä¸Žå®¢æˆ·çš„å‘ç”ŸæŽ¥è§¦æ˜¯ä¸æ–åå¤å‡ºçŽ°çš„ã€‚å®¢æˆ·èƒ½å¤Ÿæ¸…æ¥šåœ°æ´žå¯Ÿå¼€å‘ä¸ç³»ç»Ÿçš„状况。他ï¼å¥¹èƒ½å¤Ÿåœ¨æ•´ä¸ªå¼€å‘过程ä¸åŠæ—¶ç»™å‡ºå馈æ„è§ï¼Œå¹¶ä¸”在需è¦çš„æ—¶å€™èƒ½å¤ŸæŽŒæŽ§ç³»ç»Ÿçš„开呿–¹å‘。
å•å…ƒæµ‹è¯•åŒæ ·å¯¹è´¯å½»å馈原则起到作用。在编写代ç 的过程ä¸ï¼Œåº”éœ€æ±‚å˜æ›´è€Œåšå‡ºä¿®æ”¹çš„ç³»ç»Ÿå°†å‡ºçŽ°æ€Žæ ·çš„ååº”ï¼Œæ£æ˜¯é€šè¿‡å•元测试æ¥ç»™å‡ºç›´æŽ¥å馈的。比如,æŸä¸ªç¨‹åºå‘˜å¯¹ç³»ç»Ÿä¸çš„一部分代ç 进行了修改,而å‡å¦‚è¿™æ ·çš„ä¿®æ”¹å½±å“到了系统ä¸çš„å¦ä¸€éƒ¨åˆ†ï¼ˆè¶…出了这个程åºå‘˜çš„å¯æŽ§èŒƒå›´ï¼‰ï¼Œåˆ™è¿™ä¸ªç¨‹åºå‘˜ä¸ä¼šåŽ»å…³æ³¨è¿™ä¸ªç¼ºé™·ã€‚å¾€å¾€è¿™æ ·çš„é—®é¢˜ä¼šåœ¨ç³»ç»Ÿè¿›å…¥ç”Ÿäº§çŽ¯èŠ‚æ—¶æš´éœ²å‡ºæ¥ã€‚
2. å‡è®¾ç®€å•
å‡è®¾ç®€å•认为任何问题都å¯ä»¥”æžåº¦ç®€å•”åœ°è§£å†³ã€‚ä¼ ç»Ÿçš„ç³»ç»Ÿå¼€å‘æ–¹æ³•è¦è€ƒè™‘未æ¥çš„å˜åŒ–,è¦è€ƒè™‘代ç çš„å¯é‡ç”¨æ€§ã€‚æžé™ç¼–程拒ç»è¿™æ ·åšã€‚
3. 增é‡å˜åŒ–
æžé™ç¼–程的æå€¡è€…æ€»æ˜¯è¯´ï¼šç½—é©¬ä¸æ˜¯ä¸€å¤©å»ºæˆçš„ã€‚ä¸€æ¬¡å°±æƒ³è¿›è¡Œä¸€ä¸ªå¤§çš„æ”¹é€ æ˜¯ä¸å¯èƒ½çš„。æžé™ç¼–程采用增é‡å˜åŒ–的原则。比如说,å¯èƒ½æ¯ä¸‰ä¸ªæ˜ŸæœŸå‘布一个包å«å°å˜åŒ–çš„æ–°ç‰ˆæœ¬ã€‚è¿™æ ·ä¸€å°æ¥ä¸€å°æ¥å‰è¿›çš„æ–¹å¼ï¼Œä½¿å¾—整个开å‘è¿›åº¦ä»¥åŠæ£åœ¨å¼€å‘的系统对于用户æ¥è¯´å˜å¾—æ›´ä¸ºå¯æŽ§ã€‚
4. 拥抱å˜åŒ–
å¯ä»¥è‚¯å®šåœ°æ˜¯ï¼Œä¸ç¡®å®šå› ç´ æ€»æ˜¯å˜åœ¨çš„。“拥抱å˜åŒ–â€è¿™ä¸€åŽŸåˆ™å°±æ˜¯å¼ºè°ƒä¸è¦å¯¹å˜åŒ–采å–åæŠ—çš„æ€åº¦ï¼Œè€Œåº”该拥抱它们。比如,在一次阶段性会议ä¸å®¢æˆ·æå‡ºäº†ä¸€äº›çœ‹æ¥æˆå‰§æ€§çš„éœ€æ±‚å˜æ›´ã€‚作为程åºå‘˜ï¼Œå¿…须拥抱这些å˜åŒ–,并且拟定计划使得下一个阶段的产å“能够满足新的需求。
5. 高质é‡çš„工作
没人喜欢拖泥带水,æ¯ä¸ªäººéƒ½æœŸæœ›å‡ºè‰²çš„完æˆå·¥ä½œã€‚æžé™ç¼–程的æå€¡è€…è®¤ä¸ºèŒƒå›´ã€æ—¶é—´ã€æˆæœ¬å’Œè´¨é‡è¿™ä¸ªå››ä¸ªè½¯ä»¶å¼€å‘çš„å˜é‡ï¼Œåªæœ‰è´¨é‡ä¸å¯å¦¥å的。
关键è¯ï¼šæ•æ·å¼€å‘,æžé™ç¼–程
æŒç»é›†æˆï¼ˆContinuous Integration)
集æˆè½¯ä»¶çš„è¿‡ç¨‹ä¸æ˜¯æ–°é—®é¢˜ï¼Œå¦‚果项目开å‘的规模比较å°ï¼Œæ¯”如一个人的项目,如果它对外部系统的ä¾èµ–很å°ï¼Œé‚£ä¹ˆè½¯ä»¶é›†æˆä¸æ˜¯é—®é¢˜ï¼Œä½†æ˜¯éšç€è½¯ä»¶é¡¹ç›®å¤æ‚åº¦çš„å¢žåŠ ï¼ˆå³ä½¿å¢žåŠ ä¸€ä¸ªäººï¼‰ï¼Œå°±ä¼šå¯¹é›†æˆå’Œç¡®ä¿è½¯ä»¶ç»„件能够在一起工作æå‡ºäº†æ›´å¤šçš„è¦æ±‚-è¦æ—©é›†æˆï¼Œå¸¸é›†æˆã€‚早集æˆï¼Œé¢‘ç¹çš„集æˆå¸®åŠ©é¡¹ç›®åœ¨æ—©æœŸå‘现项目风险和质é‡é—®é¢˜ï¼Œå¦‚æžœåˆ°åŽæœŸæ‰å‘现这些问题,解决问题代价很大,很有å¯èƒ½å¯¼è‡´é¡¹ç›®å»¶æœŸæˆ–者项目失败。
大师Martin Fowler对æŒç»é›†æˆæ˜¯è¿™æ ·å®šä¹‰çš„:
æŒç»é›†æˆæ˜¯ä¸€ç§è½¯ä»¶å¼€å‘实践,å³å›¢é˜Ÿå¼€å‘æˆå‘˜ç»å¸¸é›†æˆå®ƒä»¬çš„工作,通常æ¯ä¸ªæˆå‘˜æ¯å¤©è‡³å°‘集æˆä¸€æ¬¡ï¼Œä¹Ÿå°±æ„å‘³ç€æ¯å¤©å¯èƒ½ä¼šå‘生多次集æˆã€‚æ¯æ¬¡é›†æˆéƒ½é€šè¿‡è‡ªåŠ¨åŒ–çš„æž„å»ºï¼ˆåŒ…æ‹¬ç¼–è¯‘ï¼Œå‘布,自动化测试)æ¥éªŒè¯ï¼Œä»Žè€Œå°½å¿«åœ°å‘现集æˆé”™è¯¯ã€‚许多团队å‘现这个过程å¯ä»¥å¤§å¤§å‡å°‘集æˆçš„问题,让团队能够更快的开å‘内èšçš„软件。
æŒç»é›†æˆçš„价值
- å‡å°‘风险
一天ä¸è¿›è¡Œå¤šæ¬¡çš„集æˆï¼Œå¹¶åšäº†ç›¸åº”çš„æµ‹è¯•ï¼Œè¿™æ ·æœ‰åˆ©äºŽæ£€æŸ¥ç¼ºé™·ï¼Œäº†è§£è½¯ä»¶çš„å¥åº·çŠ¶å†µï¼Œå‡å°‘å‡å®šã€‚
- å‡å°‘é‡å¤è¿‡ç¨‹
å‡å°‘é‡å¤çš„过程å¯ä»¥èŠ‚çœæ—¶é—´ã€è´¹ç”¨å’Œå·¥ä½œé‡ã€‚说起æ¥ç®€å•,åšèµ·æ¥éš¾ã€‚这些浪费时间的é‡å¤åŠ³åŠ¨å¯èƒ½åœ¨æˆ‘们的项目活动的任何一个环节å‘生,包括代ç ç¼–è¯‘ã€æ•°æ®åº“集æˆã€æµ‹è¯•ã€å®¡æŸ¥ã€éƒ¨ç½²åŠå馈。通过自动化的æŒç»é›†æˆå¯ä»¥å°†è¿™äº›é‡å¤çš„åŠ¨ä½œéƒ½å˜æˆè‡ªåŠ¨åŒ–çš„ï¼Œæ— éœ€å¤ªå¤šäººå·¥å¹²é¢„ï¼Œè®©äººä»¬çš„æ—¶é—´æ›´å¤šçš„æŠ•å…¥åˆ°åŠ¨è„‘ç‹çš„ã€æ›´é«˜ä»·å€¼çš„事情上。
- 任何时间ã€ä»»ä½•地点生æˆå¯éƒ¨ç½²çš„软件
æŒç»é›†æˆå¯ä»¥è®©æ‚¨åœ¨ä»»ä½•æ—¶é—´å‘布å¯ä»¥éƒ¨ç½²çš„软件。从外界æ¥çœ‹ï¼Œè¿™æ˜¯æŒç»é›†æˆæœ€æ˜Žæ˜¾çš„好处,我们å¯ä»¥å¯¹æ”¹è¿›è½¯ä»¶å“质和å‡å°‘é£Žé™©è¯´èµ·æ¥æ»”æ»”ä¸ç»ï¼Œä½†å¯¹äºŽå®¢æˆ·æ¥è¯´ï¼Œå¯ä»¥éƒ¨ç½²çš„è½¯ä»¶äº§å“æ˜¯æœ€å®žé™…的资产。利用æŒç»é›†æˆï¼Œæ‚¨å¯ä»¥ç»å¸¸å¯¹æºä»£ç è¿›è¡Œä¸€äº›å°æ”¹åŠ¨ï¼Œå¹¶å°†è¿™äº›æ”¹åŠ¨å’Œå…¶ä»–çš„ä»£ç 进行集æˆã€‚如果出现问题,项目æˆå‘˜é©¬ä¸Šå°±ä¼šè¢«é€šçŸ¥åˆ°ï¼Œé—®é¢˜ä¼šç¬¬ä¸€æ—¶é—´è¢«ä¿®å¤ã€‚ä¸é‡‡ç”¨æŒç»é›†æˆçš„æƒ…况下,这些问题有å¯èƒ½åˆ°äº¤ä»˜å‰çš„é›†æˆæµ‹è¯•的时候æ‰å‘现,有å¯èƒ½ä¼šå¯¼è‡´å»¶è¿Ÿå‘布产å“,而在急于修å¤è¿™äº›ç¼ºé™·çš„æ—¶å€™åˆæœ‰å¯èƒ½å¼•入新的缺陷,最终å¯èƒ½å¯¼è‡´é¡¹ç›®å¤±è´¥ã€‚
- 增强项目的å¯è§æ€§
æŒç»é›†æˆè®©æˆ‘们能够注æ„到趋势并进行有效的决ç–ã€‚å¦‚æžœæ²¡æœ‰çœŸå®žæˆ–æœ€æ–°çš„æ•°æ®æä¾›æ”¯æŒï¼Œé¡¹ç›®å°±ä¼šé‡åˆ°éº»çƒ¦ï¼Œæ¯ä¸ªäººéƒ½ä¼šæå‡ºä»–最好的猜测。通常,项目æˆå‘˜é€šè¿‡æ‰‹å·¥æ”¶é›†è¿™äº›ä¿¡æ¯ï¼Œå¢žåŠ äº†è´Ÿæ‹…ï¼Œä¹Ÿå¾ˆè€—æ—¶ã€‚æŒç»é›†æˆå¯ä»¥å¸¦æ¥ä¸¤ç‚¹ç§¯æžæ•ˆæžœï¼š
(1)有效决ç–:æŒç»é›†æˆç³»ç»Ÿä¸ºé¡¹ç›®æž„建状æ€å’Œå“è´¨æŒ‡æ ‡æä¾›äº†åŠæ—¶çš„ä¿¡æ¯ï¼Œæœ‰äº›æŒç»é›†æˆç³»ç»Ÿå¯ä»¥æŠ¥å‘ŠåŠŸèƒ½å®Œæˆåº¦å’Œç¼ºé™·çŽ‡ã€‚
(2)注æ„到趋势:由于ç»å¸¸é›†æˆï¼Œæˆ‘们å¯ä»¥çœ‹åˆ°ä¸€äº›è¶‹åŠ¿ï¼Œå¦‚æž„å»ºæˆåŠŸæˆ–å¤±è´¥ã€æ€»ä½“å“质以åŠå…¶å®ƒçš„项目信æ¯ã€‚
- 建立团队对开å‘产å“的信心
æŒç»é›†æˆå¯ä»¥å»ºç«‹å¼€å‘团队对开å‘产å“çš„ä¿¡å¿ƒï¼Œå› ä¸ºä»–ä»¬æ¸…æ¥šçš„çŸ¥é“æ¯ä¸€æ¬¡æž„建的结果,他们知é“ä»–ä»¬å¯¹è½¯ä»¶çš„æ”¹åŠ¨é€ æˆäº†å“ªäº›å½±å“ï¼Œç»“æžœæ€Žä¹ˆæ ·ã€‚
æŒç»é›†æˆçš„è¦ç‚¹
1.统一的代ç 库
2.自动构建
3.自动测试
4.æ¯ä¸ªäººæ¯å¤©éƒ½è¦å‘代ç 库主干æäº¤ä»£ç
5.æ¯æ¬¡ä»£ç 递交åŽéƒ½ä¼šåœ¨æŒç»é›†æˆæœåŠ¡å™¨ä¸Šè§¦å‘一次构建
6.ä¿è¯å¿«é€Ÿæž„建
7.模拟生产环境的自动测试
8.æ¯ä¸ªäººéƒ½å¯ä»¥å¾ˆå®¹æ˜“çš„èŽ·å–æœ€æ–°å¯æ‰§è¡Œçš„应用程åº
9.æ¯ä¸ªäººéƒ½æ¸…楚æ£åœ¨å‘生的状况
10.自动化的部署
 æŒç»é›†æˆçš„原则
1. 所有的开å‘人员需è¦åœ¨æœ¬åœ°æœºå™¨ä¸Šåšæœ¬åœ°æž„å»ºï¼Œç„¶åŽå†æäº¤çš„版本控制库ä¸ï¼Œä»Žè€Œç¡®ä¿ä»–ä»¬çš„å˜æ›´ä¸ä¼šå¯¼è‡´æŒç»é›†æˆå¤±è´¥ã€‚
2. å¼€å‘人员æ¯å¤©è‡³å°‘å‘ç‰ˆæœ¬æŽ§åˆ¶åº“ä¸æäº¤ä¸€æ¬¡ä»£ç 。
3. å¼€å‘人员æ¯å¤©è‡³å°‘需è¦ä»Žç‰ˆæœ¬æŽ§åˆ¶åº“䏿›´æ–°ä¸€æ¬¡ä»£ç 到本地机器。
4. éœ€è¦æœ‰ä¸“é—¨çš„é›†æˆæœåŠ¡å™¨æ¥æ‰§è¡Œé›†æˆæž„建,æ¯å¤©è¦æ‰§è¡Œå¤šæ¬¡æž„建。
5. æ¯æ¬¡æž„建都è¦100%通过。
6. æ¯æ¬¡æž„建都å¯ä»¥ç”Ÿæˆå¯å‘布的产å“。
7. ä¿®å¤å¤±è´¥çš„æž„建是优先级最高的事情。
关键è¯ï¼šæ•æ·å¼€å‘,æŒç»é›†æˆ
测试驱动开å‘
测试驱动开å‘,英文全称Test-Driven Development,简称TDD,是一ç§ä¸åŒäºŽä¼ ç»Ÿè½¯ä»¶å¼€å‘æµç¨‹çš„æ–°åž‹çš„开呿–¹æ³•ã€‚å®ƒè¦æ±‚在编写æŸä¸ªåŠŸèƒ½çš„ä»£ç 之å‰å…ˆç¼–写测试代ç ,然åŽåªç¼–写使测试通过的功能代ç ï¼Œé€šè¿‡æµ‹è¯•æ¥æŽ¨åŠ¨æ•´ä¸ªå¼€å‘的进行。这有助于编写简æ´å¯ç”¨å’Œé«˜è´¨é‡çš„代ç ï¼Œå¹¶åŠ é€Ÿå¼€å‘过程。
Kent Beck先生最早在其æžé™ç¼–程(XP)方法论ä¸ï¼Œå‘大家推è“测试驱动â€è¿™ä¸€æœ€ä½³å®žè·µï¼Œè¿˜ä¸“门撰写了《测试驱动开å‘》一书,详细说明如何实现。ç»è¿‡å‡ 年的迅猛å‘展,测试驱动开å‘å·²ç»æˆé•¿ä¸ºä¸€é—¨ç‹¬ç«‹çš„è½¯ä»¶å¼€å‘æŠ€æœ¯ï¼Œå…¶åæ°”甚至盖过了æžé™ç¼–程。
基本原ç†
测试驱动开å‘çš„åŸºæœ¬æ€æƒ³å°±æ˜¯åœ¨å¼€å‘功能代ç 之å‰ï¼Œå…ˆç¼–写测试代ç ,然åŽåªç¼–写使测试通过的功能代ç ,从而以测试æ¥é©±åŠ¨æ•´ä¸ªå¼€å‘过程的进行。这有助于编写简æ´å¯ç”¨å’Œé«˜è´¨é‡çš„代ç ï¼Œæœ‰å¾ˆé«˜çš„çµæ´»æ€§å’Œå¥å£®æ€§ï¼Œèƒ½å¿«é€Ÿå“应å˜åŒ–ï¼Œå¹¶åŠ é€Ÿå¼€å‘过程。
测试驱动开å‘的基本过程如下:
① 快速新增一个测试
② è¿è¡Œæ‰€æœ‰çš„æµ‹è¯•(有时候åªéœ€è¦è¿è¡Œä¸€ä¸ªæˆ–一部分),å‘现新增的测试ä¸èƒ½é€šè¿‡
③ åšä¸€äº›å°å°çš„æ”¹åŠ¨ï¼Œå°½å¿«åœ°è®©æµ‹è¯•ç¨‹åºå¯è¿è¡Œï¼Œä¸ºæ¤å¯ä»¥åœ¨ç¨‹åºä¸ä½¿ç”¨ä¸€äº›ä¸åˆæƒ…ç†çš„æ–¹æ³•
④ è¿è¡Œæ‰€æœ‰çš„æµ‹è¯•,并且全部通过
â‘¤ã€€é‡æž„代ç ,以消除é‡å¤è®¾è®¡ï¼Œä¼˜åŒ–设计结构
ç®€å•æ¥è¯´ï¼Œå°±æ˜¯ä¸å¯è¿è¡Œ/å¯è¿è¡Œ/釿ž„â€”â€”è¿™æ£æ˜¯æµ‹è¯•驱动开å‘çš„å£å·ã€‚
一个生动比喻
举个比较生动的例å,这个例åä½ ä¸€å®šå·²ç»åœ¨å¾ˆå¤šå…³äºŽTDD的文献资料上都看到过,但它确实是一个ä¸é”™çš„æ¯”å–»ã€‚åœ¨æ¤æˆ‘è¿›è¡Œäº†ä¸€äº›åŠ å·¥å’Œæ‰©å±•ã€‚
盖房åçš„æ—¶å€™ï¼Œå·¥äººå¸ˆå‚…ç Œå¢™ï¼Œä¼šå…ˆç”¨æ¡©åæ‹‰ä¸Šçº¿ï¼Œä»¥ä½¿ç –èƒ½å¤Ÿåž’çš„ç¬”ç›´ï¼Œå› ä¸ºåž’ç –çš„æ—¶å€™éƒ½æ˜¯ä»¥è¿™æ ¹çº¿ä¸ºåŸºå‡†çš„ã€‚TDDå°±åƒè¿™æ ·ï¼Œå…ˆå†™æµ‹è¯•代ç ,就åƒå·¥äººå¸ˆå‚…å…ˆç”¨æ¡©åæ‹‰ä¸Šçº¿ï¼Œç„¶åŽç¼–ç 的时候以æ¤ä¸ºåŸºå‡†ï¼Œåªç¼–写符åˆè¿™ä¸ªæµ‹è¯•的功能代ç 。
而一个新手或èœé¸Ÿçº§çš„å°å¸ˆå‚…,å´å¯èƒ½ä¸çŸ¥é“æ‹‰çº¿ï¼Œè€Œæ˜¯ç›´æŽ¥æŠŠç –å¾€ä¸Šåž’ï¼Œåž’äº†ä¸€äº›ä¹‹åŽå†çœ‹æ˜¯å¦ç¬”直,这时候å¯èƒ½ä¼šç”¨ä¸€æ ¹çº¿ï¼Œé‡ä¸€ä¸‹ç Œå¥½çš„墙是å¦ç¬”直,如果ä¸ç›´å†è¿›è¡Œæ ¡æ£ï¼Œæ•²æ•²æ‰“æ‰“ã€‚ä½¿ç”¨ä¼ ç»Ÿçš„è½¯ä»¶å¼€å‘过程就åƒè¿™æ ·ï¼Œæˆ‘们先编ç ,编ç 完æˆä¹‹åŽæ‰å†™æµ‹è¯•程åºï¼Œä»¥æ¤æ£€éªŒå·²å†™çš„ä»£ç æ˜¯å¦æ£ç¡®ï¼Œå¦‚果有错误å†ä¸€ç‚¹ç‚¹ä¿®æ”¹ã€‚
ä½ æ˜¯å¸Œæœ›å…ˆç Œå¢™å†æ‹‰çº¿ï¼Œè¿˜æ˜¯å¸Œæœ›å…ˆæ‹‰çº¿å†ç Œå¢™å‘¢ï¼Ÿå¦‚æžœä½ å–œæ¬¢å‰è€…ï¼Œé‚£å°±ç®—äº†ï¼Œè€Œå¦‚æžœä½ å–œæ¬¢åŽè€…,那就转入TDD阵è¥å§ï¼è¯¦ç»†å¯å‚阅。
本质和优势
æˆ–è®¸åªæœ‰äº†è§£äº†æµ‹è¯•驱动开å‘的本质和优势之åŽï¼Œä½ æ‰ä¼šé¢†ç•¥åˆ°å¥¹çš„æ— ç©·é…力。 测试驱动开å‘䏿˜¯ä¸€ç§æµ‹è¯•技术,它是一ç§åˆ†æžæŠ€æœ¯ã€è®¾è®¡æŠ€æœ¯ï¼Œæ›´æ˜¯ä¸€ç§ç»„ç»‡æ‰€æœ‰å¼€å‘æ´»åŠ¨çš„æŠ€æœ¯ã€‚ç›¸å¯¹äºŽä¼ ç»Ÿçš„ç»“æž„åŒ–å¼€å‘过程方法,它具有以下优势:
1) TDDæ ¹æ®å®¢æˆ·éœ€æ±‚编写测试用例,对功能的过程和接å£éƒ½è¿›è¡Œäº†è®¾è®¡ï¼Œè€Œä¸”è¿™ç§ä»Žä½¿ç”¨è€…角度对代ç 进行的设计通常更符åˆåŽæœŸå¼€å‘çš„éœ€æ±‚ã€‚å› ä¸ºå…³æ³¨ç”¨æˆ·å馈,å¯ä»¥åŠæ—¶å“åº”éœ€æ±‚å˜æ›´ï¼ŒåŒæ—¶å› 为从使用者角度出å‘的简å•设计,也å¯ä»¥æ›´å¿«åœ°é€‚应å˜åŒ–。
2) å‡ºäºŽæ˜“æµ‹è¯•å’Œæµ‹è¯•ç‹¬ç«‹æ€§çš„è¦æ±‚,将促使我们实现æ¾è€¦åˆçš„设计,并更多地ä¾èµ–于接å£è€Œéžå…·ä½“的类,æé«˜ç³»ç»Ÿçš„坿‰©å±•æ€§å’ŒæŠ—å˜æ€§ã€‚而且TDD明显地缩çŸäº†è®¾è®¡å†³ç–çš„åé¦ˆå¾ªçŽ¯ï¼Œä½¿æˆ‘ä»¬å‡ ç§’æˆ–å‡ åˆ†é’Ÿä¹‹å†…å°±èƒ½èŽ·å¾—å馈。
3) 将测试工作æåˆ°ç¼–ç 之å‰ï¼Œå¹¶é¢‘ç¹åœ°è¿è¡Œæ‰€æœ‰æµ‹è¯•,å¯ä»¥å°½é‡åœ°é¿å…和尽早地å‘现错误,æžå¤§åœ°é™ä½Žäº†åŽç»æµ‹è¯•åŠä¿®å¤çš„æˆæœ¬ï¼Œæé«˜äº†ä»£ç 的质é‡ã€‚åœ¨æµ‹è¯•çš„ä¿æŠ¤ä¸‹ï¼Œä¸æ–釿ž„代ç ,以消除é‡å¤è®¾è®¡ï¼Œä¼˜åŒ–设计结构,æé«˜äº†ä»£ç çš„é‡ç”¨æ€§ï¼Œä»Žè€Œæé«˜äº†è½¯ä»¶äº§å“的质é‡ã€‚
4) TDDæä¾›äº†æŒç»çš„å›žå½’æµ‹è¯•ï¼Œä½¿æˆ‘ä»¬æ‹¥æœ‰é‡æž„çš„å‹‡æ°”ï¼Œå› ä¸ºä»£ç 的改动导致系统其他部分产生任何异常,测试都会立刻通知我们。完整的测试会帮助我们æŒç»åœ°è·Ÿè¸ªæ•´ä¸ªç³»ç»Ÿçš„状æ€ï¼Œå› æ¤æˆ‘们就ä¸éœ€è¦æ‹…心会产生什么ä¸å¯é¢„知的副作用了。
5) TDD所产生的å•元测试代ç 就是最完美的开å‘者文档,它们展示了所有的APIè¯¥å¦‚ä½•ä½¿ç”¨ä»¥åŠæ˜¯å¦‚何è¿ä½œçš„,而且它们与工作代ç ä¿æŒåŒæ¥ï¼Œæ°¸è¿œæ˜¯æœ€æ–°çš„。
6) TDDå¯ä»¥å‡è½»åŽ‹åŠ›ã€é™ä½Žå¿§è™‘ã€æé«˜æˆ‘ä»¬å¯¹ä»£ç 的信心ã€ä½¿æˆ‘ä»¬æ‹¥æœ‰é‡æž„的勇气,这些都是快ä¹å·¥ä½œçš„é‡è¦å‰æã€‚
7)快速的æé«˜äº†å¼€å‘效率
çŽ°çŠ¶å’Œå‰æ™¯
测试驱动开å‘的技术已得到越æ¥è¶Šå¹¿æ³›çš„é‡è§†ï¼Œä½†ç”±äºŽå‘展时间ä¸é•¿ï¼Œç›¸å…³åº”ç”¨å¹¶ä¸æ˜¯å¾ˆæˆç†Ÿã€‚现今越æ¥è¶Šå¤šçš„å…¬å¸éƒ½åœ¨å°è¯•实践测试驱动开å‘,但由于测试驱动开å‘对开å‘äººå‘˜è¦æ±‚比较高,更与开å‘äººå‘˜çš„ä¼ ç»Ÿæ€ç»´ä¹ 惯相è¿èƒŒï¼Œå› æ¤å®žè·µèµ·æ¥æœ‰ä¸€å®šå›°éš¾ã€‚ 美国ä¸å°‘è‘—å软件公å¸å¦‚IBMå¾ˆæ—©å°±å¼€å§‹å‘æ•æ·è½¬åž‹ï¼Œåœ¨æ¤è¿‡ç¨‹ä¸ï¼ŒTDD通常是最é‡è¦ä¹Ÿæœ€è‰°éš¾çš„一个,æ£å¦‚IBMå¼€å‘转型部门副总è£Sue Mckinney所言:测试驱动开å‘剿™¯éžå¸¸è¯±äººï¼Œä½†æ˜¯â€œåœ¨è¿™ä¸ªè¿‡ç¨‹ä¸æˆ‘们的付出å¯èƒ½ä¹Ÿæ˜¯æœ€å¤šçš„。â€Forrester的高级分æžå¸ˆDave West认为,测试驱动开å‘(TDDï¼‰å°±åƒæ˜¯â€œåœ£æ¯â€ï¼Œä½†æ˜¯â€œå¦‚æžœèƒ½è¾¾åˆ°è¿™ä¸ªç›®æ ‡ï¼Œä»˜å‡ºå†å¤šçš„辛苦也是值得的。â€
我想,测试驱动开å‘的推广过程ä¸ï¼Œé¦–è¦çš„问题是将开å‘人员长期以æ¥å½¢æˆçš„æ€ç»´è§‚å¿µå’Œæ„识形æ€è½¬å˜è¿‡æ¥ï¼Œå¼€å‘人员åªå–œæ¬¢ç¼–ç ,ä¸å–œæ¬¢æµ‹è¯•ï¼Œæ›´æ— æ³•ç†è§£ä¸ºä»€ä¹ˆæ²¡æœ‰äº§å“代ç 的时候就先写å•元测试;其次是相关的技术支æŒï¼Œæµ‹è¯•驱动开å‘对开å‘人员æå‡ºäº†æ›´é«˜çš„è¦æ±‚,ä¸ä»…è¦æŽŒæ¡æµ‹è¯•å’Œé‡æž„ï¼Œè¿˜è¦æ‡‚得设计模å¼ç‰è®¾è®¡æ–¹é¢çš„知识。
æ£åƒæ¯ç§é©å‘½æ€§çš„äº§ç‰©åˆšåˆšäº§ç”Ÿä¹‹åˆæ‰€å¿…ç„¶è¦ç»åŽ†çš„è‰°éš¾åŽ†ç¨‹ï¼Œæµ‹è¯•é©±åŠ¨å¼€å‘也æ£åœ¨ç»åކç€ï¼Œä½†å¥¹æ£åœ¨é€æ¸èµ°å‘æˆç†Ÿï¼Œå‰é€”一片光明。相信未æ¥å‡ 年内,国内的一定会越æ¥è¶Šå¤šçš„软件ä¼ä¸šå¼€å§‹æ™®åŠæµ‹è¯•驱动开å‘。
关键è¯ï¼šæ•æ·å¼€å‘,测试驱动开å‘
DevOps基础
DevOpsæ˜¯ä¸€ç»„è¿‡ç¨‹ã€æ–¹æ³•与系统的统称,用于促进开å‘(应用程åº/è½¯ä»¶å·¥ç¨‹ï¼‰ã€æŠ€æœ¯è¿è¥å’Œè´¨é‡ä¿éšœï¼ˆQA)部门之间的沟通ã€å作与整åˆã€‚它的出现是由于软件行业日益清晰地认识到:为了按时交付软件产å“å’ŒæœåŠ¡ï¼Œå¼€å‘å’Œè¿è¥å·¥ä½œå¿…须紧密åˆä½œã€‚
å¯ä»¥æŠŠDevOps看作开å‘ï¼ˆè½¯ä»¶å·¥ç¨‹ï¼‰ã€æŠ€æœ¯è¿è¥å’Œè´¨é‡ä¿éšœï¼ˆQA)三者的交集
ä¼ ç»Ÿçš„è½¯ä»¶ç»„ç»‡å°†å¼€å‘ã€ITè¿è¥å’Œè´¨é‡ä¿éšœè®¾ä¸ºå„自分离的部门。在这ç§çŽ¯å¢ƒä¸‹å¦‚ä½•é‡‡ç”¨æ–°çš„å¼€å‘æ–¹æ³•ï¼ˆä¾‹å¦‚æ•æ·è½¯ä»¶å¼€å‘),这是一个é‡è¦çš„课题:按照从å‰çš„工作方å¼ï¼Œå¼€å‘和部署ä¸éœ€è¦ITæ”¯æŒæˆ–者QA深入的ã€è·¨éƒ¨é—¨çš„æ”¯æŒï¼Œè€ŒçŽ°åœ¨å´éœ€è¦æžå…¶ç´§å¯†çš„多部门å作。然而DevOpsè€ƒè™‘çš„è¿˜ä¸æ¢æ˜¯è½¯ä»¶éƒ¨ç½²ã€‚å®ƒæ˜¯ä¸€å¥—é’ˆå¯¹è¿™å‡ ä¸ªéƒ¨é—¨é—´æ²Ÿé€šä¸Žå作问题的æµç¨‹å’Œæ–¹æ³•。
需è¦é¢‘ç¹äº¤ä»˜çš„ä¼ä¸šå¯èƒ½æ›´éœ€è¦å¯¹DevOps有一个大致的了解。Flickrå‘展了自己的DevOps能力,使之能够支撑业务部门“æ¯å¤©éƒ¨ç½²10次â€çš„è¦æ±‚[7]──如果一个组织è¦ç”Ÿäº§é¢å‘多ç§ç”¨æˆ·ã€å…·å¤‡å¤šæ ·åŠŸèƒ½çš„åº”ç”¨ç¨‹åºï¼Œå…¶éƒ¨ç½²å‘¨æœŸå¿…然会很çŸã€‚è¿™ç§èƒ½åŠ›ä¹Ÿè¢«ç§°ä¸ºæŒç»éƒ¨ç½²[8],并且ç»å¸¸ä¸Žç²¾ç›Šåˆ›ä¸šæ–¹æ³•è”系起æ¥ã€‚[9] 从2009年起,相关的工作组ã€ä¸“业组织和åšå®¢å¿«é€Ÿæ¶Œçް.
DevOps的引入能对产å“äº¤ä»˜ã€æµ‹è¯•ã€åŠŸèƒ½å¼€å‘和维护(包括──曾ç»ç½•è§ä½†å¦‚今已屡è§ä¸é²œçš„──“çƒè¡¥ä¸â€ï¼‰èµ·åˆ°æ„义深远的影å“。在缺ä¹DevOps能力的组织ä¸ï¼Œå¼€å‘与è¿è¥ä¹‹é—´å˜åœ¨ç€ä¿¡æ¯â€œé¸¿æ²Ÿâ€â”€â”€ä¾‹å¦‚è¿è¥äººå‘˜è¦æ±‚更好的å¯é 性和安全性,开å‘人员则希望基础设施å“应更快,而业务用户的需求则是更快地将更多的特性å‘布给最终用户使用。这ç§ä¿¡æ¯é¸¿æ²Ÿå°±æ˜¯æœ€å¸¸å‡ºé—®é¢˜çš„地方。
ä»¥ä¸‹å‡ æ–¹é¢å› ç´ å¯èƒ½ä¿ƒä½¿ä¸€ä¸ªç»„织引入DevOps:
1.Â ä½¿ç”¨æ•æ·å¼€å‘或其他软件开å‘过程与方法
2.Â ä¸šåŠ¡è´Ÿè´£äººè¦æ±‚åŠ å¿«äº§å“交付的速率
3. 虚拟化[14]和云计算基础设施(å¯èƒ½æ¥è‡ªå†…部或外部供应商)日益普é
4. 数æ®ä¸å¿ƒè‡ªåŠ¨åŒ–æŠ€æœ¯[15]å’Œé…置管ç†å·¥å…·çš„æ™®åŠ
5. 有一ç§è§‚点认为,目å‰å 主导地ä½çš„â€œä¼ ç»Ÿâ€ç¾Žå›½å¼ç®¡ç†é£Žæ ¼ï¼ˆâ€œæ–¯éš†æ¨¡åž‹ vs 丰田模型â€ï¼‰[16]会导致“烟囱å¼è‡ªåŠ¨åŒ–â€ï¼Œä»Žè€Œé€ æˆå¼€å‘与è¿è¥ä¹‹é—´çš„é¸¿æ²Ÿï¼Œå› æ¤éœ€è¦DevOps能力æ¥å…‹æœç”±æ¤å¼•å‘的问题。
DevOpsç»å¸¸è¢«æè¿°ä¸ºâ€œå¼€å‘团队与è¿è¥å›¢é˜Ÿä¹‹é—´æ›´å…·åä½œæ€§ã€æ›´é«˜æ•ˆçš„关系â€ã€‚由于团队间åä½œå…³ç³»çš„æ”¹å–„ï¼Œæ•´ä¸ªç»„ç»‡çš„æ•ˆçŽ‡å› æ¤å¾—到æå‡ï¼Œä¼´éšé¢‘ç¹å˜åŒ–而æ¥çš„生产环境的风险也能得到é™ä½Žã€‚
DevOps对应用程åºå‘布的影å“
在很多ä¼ä¸šä¸ï¼Œåº”用程åºå‘布是一项涉åŠå¤šä¸ªå›¢é˜Ÿã€åŽ‹åŠ›å¾ˆå¤§ã€é£Žé™©å¾ˆé«˜çš„æ´»åŠ¨ã€‚ç„¶è€Œåœ¨å…·å¤‡DevOps能力的组织ä¸ï¼Œåº”用程åºå‘å¸ƒçš„é£Žé™©å¾ˆä½Žï¼ŒåŽŸå› å¦‚ä¸‹ï¼š
ä¸Žä¼ ç»Ÿå¼€å‘æ–¹æ³•é‚£ç§å¤§è§„模的ã€ä¸é¢‘ç¹çš„å‘布(通常以“å£åº¦â€æˆ–“年â€ä¸ºå•ä½ï¼‰ç›¸æ¯”ï¼Œæ•æ·æ–¹æ³•大大æå‡äº†å‘å¸ƒé¢‘çŽ‡ï¼ˆé€šå¸¸ä»¥â€œå¤©â€æˆ–“周â€ä¸ºå•ä½ï¼‰
å‡å°‘å˜æ›´èŒƒå›´
ä¸Žä¼ ç»Ÿçš„ç€‘å¸ƒå¼å¼€å‘æ¨¡åž‹ç›¸æ¯”ï¼Œé‡‡ç”¨æ•æ·å¼€å‘或è¿ä»£å¼å¼€å‘æ„å‘³ç€æ›´é¢‘ç¹çš„å‘å¸ƒã€æ¯æ¬¡å‘布包å«çš„å˜åŒ–更少。由于部署ç»å¸¸è¿›è¡Œï¼Œå› æ¤æ¯æ¬¡éƒ¨ç½²ä¸ä¼šå¯¹ç”Ÿäº§ç³»ç»Ÿé€ æˆå·¨å¤§å½±å“,应用程åºä¼šä»¥å¹³æ»‘çš„é€ŸçŽ‡é€æ¸ç”Ÿé•¿ã€‚
åŠ å¼ºå‘布åè°ƒ
é 强有力的å‘布å调人æ¥å¼¥åˆå¼€å‘与è¿è¥ä¹‹é—´çš„æŠ€èƒ½é¸¿æ²Ÿå’Œæ²Ÿé€šé¸¿æ²Ÿï¼›é‡‡ç”¨ç”µåæ•°æ®è¡¨ã€ç”µè¯ä¼šè®®ã€å³æ—¶æ¶ˆæ¯ã€ä¼ä¸šé—¨æˆ·ï¼ˆwikiã€sharepoint)ç‰å作工具æ¥ç¡®ä¿æ‰€æœ‰ç›¸å…³äººå‘˜ç†è§£å˜æ›´çš„内容并全力åˆä½œã€‚
自动化
强大的部署自动化手段确ä¿éƒ¨ç½²ä»»åŠ¡çš„å¯é‡å¤æ€§ã€å‡å°‘部署出错的å¯èƒ½æ€§ã€‚
现状
很多组织将开å‘和和系统管ç†åˆ’分æˆä¸åŒçš„部门。开å‘部门的驱动力通常是“频ç¹äº¤ä»˜æ–°ç‰¹æ€§â€ï¼Œè€Œè¿è¥éƒ¨é—¨åˆ™æ›´å…³æ³¨ITæœåŠ¡çš„å¯é 性和ITæˆæœ¬æŠ•å…¥çš„æ•ˆçŽ‡ã€‚ä¸¤è€…ç›®æ ‡çš„ä¸åŒ¹é…,就在开å‘与è¿è¥éƒ¨é—¨ä¹‹é—´é€ æˆäº†é¸¿æ²Ÿï¼Œä»Žè€Œå‡æ…¢äº†IT交付业务价值的速度。
• 开å‘人员ç»å¸¸ä¸è€ƒè™‘自己写的代ç 会对è¿è¥é€ æˆä»€ä¹ˆå½±å“。他们在交付代ç 之å‰ï¼Œå¹¶ä¸é‚€è¯·è¿è¥äººå‘˜å‚ä¸Žæž¶æž„å†³ç–æˆ–代ç 评审。
• 开å‘人员对é…置或环境进行修改之åŽï¼Œç»å¸¸æ²¡æœ‰åŠæ—¶ä¸Žè¿è¥äººå‘˜æ²Ÿé€šï¼Œå¯¼è‡´æ–°çš„代ç ä¸èƒ½è¿è¡Œã€‚
o 开å‘人员在自己的机器上手工修改é…置,而没有记录所有需è¦çš„æ¥éª¤ã€‚æƒ³æ‰¾åˆ°å¿…è¦çš„é…ç½®å‚æ•°ï¼Œé€šå¸¸éœ€è¦å°è¯•很多ä¸åŒçš„傿•°ï¼›åœ¨å¾—到一个å¯å·¥ä½œçš„状æ€åŽï¼Œå¾€å¾€å¾ˆéš¾è¯†åˆ«å‡ºé€šè¿‡å“ªäº›æœ€å°æ¥éª¤å°±èƒ½åˆ°è¾¾è¯¥çжæ€ã€‚
o 开å‘人员倾å‘于使用有利于快速开å‘的工具:对代ç 修改更快的åé¦ˆï¼Œæ›´ä½Žçš„å†…å˜æ¶ˆè€—,ç‰ç‰ã€‚è¿™æ ·çš„å·¥å…·é›†ä¸Žè¿è¥äººå‘˜é¢å¯¹çš„ç›®æ ‡è¿è¡Œæ—¶çŽ¯å¢ƒéžå¸¸ä¸åŒï¼šåŽè€…å¯¹ç¨³å®šæ€§å’Œæ€§èƒ½çš„è¦æ±‚è¿œèƒœäºŽçµæ´»æ€§ã€‚
o 由于开å‘人员平时使用桌é¢ç”µè„‘,他们倾å‘于使用为桌é¢ç”¨æˆ·ä¼˜åŒ–çš„æ“作系统。生产环境的è¿è¡Œæ—¶ç³»ç»Ÿé€šå¸¸éƒ½è¿è¡ŒæœåС噍æ“作系统上。
o 在开å‘过程ä¸ï¼Œç³»ç»Ÿåœ¨å¼€å‘者的本地机器上è¿è¡Œã€‚在è¿è¥è¿‡ç¨‹ä¸ï¼Œç³»ç»Ÿç»å¸¸åˆ†å¸ƒåœ¨å¤šå°æœåŠ¡å™¨ä¸Šï¼Œä¾‹å¦‚webæœåС噍ã€åº”用æœåŠ¡å™¨ã€æ•°æ®åº“æœåС噍ç‰ç‰ã€‚
â€¢Â å¼€å‘æ˜¯ç”±åŠŸèƒ½æ€§éœ€æ±‚ï¼ˆé€šå¸¸ä¸Žä¸šåŠ¡éœ€æ±‚ç›´æŽ¥ç›¸å…³ï¼‰é©±åŠ¨çš„ã€‚
• è¿è¥æ˜¯ç”±éžåŠŸèƒ½æ€§éœ€æ±‚ï¼ˆä¾‹å¦‚å¯èŽ·å¾—æ€§ã€å¯é æ€§ã€æ€§èƒ½ç‰ï¼‰é©±åŠ¨çš„ã€‚
o è¿è¥äººå‘˜å¸Œæœ›å°½é‡é¿å…修改功能,从而é™ä½Žæ»¡è¶³éžåŠŸèƒ½æ€§éœ€æ±‚çš„é£Žé™©
o 如果拒ç»äº†å°çš„修改,但给定时间段内需è¦ä¿®æ”¹çš„æ€»é‡ä¸å˜ï¼Œé‚£ä¹ˆæ¯æ¬¡å˜æ›´çš„规模就会å˜å¤§
oÂ å˜æ›´è§„æ¨¡è¶Šå¤§ï¼Œé£Žé™©ä¹Ÿè¶Šå¤§ï¼Œå› ä¸ºå…¶ä¸æ¶‰åŠçš„区域越多
• 由于è¿è¥äººå‘˜å°è¯•é¿å…å˜æ›´ï¼Œæ–°åŠŸèƒ½æµå…¥ç”Ÿäº§çŽ¯å¢ƒçš„é€Ÿåº¦å› æ¤è¢«å»¶ç¼“,从而延缓了开å‘人员将特性交付给用户使用的速度。
• è¿è¥äººå‘˜å¯èƒ½å¯¹åº”用程åºå†…部缺ä¹äº†è§£ï¼Œä»Žè€Œéš¾ä»¥æ£ç¡®åœ°é€‰æ‹©è¿è¡Œæ—¶çŽ¯å¢ƒå’Œå‘布æµç¨‹ã€‚
• 开å‘人员å¯èƒ½å¯¹è¿è¡Œæ—¶çŽ¯å¢ƒç¼ºä¹äº†è§£ï¼Œä»Žè€Œéš¾ä»¥æ£ç¡®åœ°å¯¹ä»£ç 进行调整。
诉求
• 更å°ã€æ›´é¢‘ç¹çš„å˜æ›´â”€â”€æ„å‘³ç€æ›´å°‘的风险
• 让开å‘人员更多地控制生产环境
• 更多地以应用程åºä¸ºä¸å¿ƒæ¥ç†è§£åŸºç¡€è®¾æ–½
â€¢Â å®šä¹‰ç®€æ´æ˜Žäº†çš„æµç¨‹
• 尽å¯èƒ½åœ°è‡ªåŠ¨åŒ–
• 促æˆå¼€å‘与è¿è¥çš„å作
一般而言,当ä¼ä¸šå¸Œæœ›å°†åŽŸæœ¬ç¬¨é‡çš„å¼€å‘与è¿è¥ä¹‹é—´çš„工作移交过程å˜å¾—æµç•…æ— ç¢ï¼Œä»–们通常会é‡åˆ°ä»¥ä¸‹ä¸‰ç±»é—®é¢˜ï¼š
å‘布管ç†é—®é¢˜
很多ä¼ä¸šæœ‰å‘布管ç†é—®é¢˜ã€‚ä»–ä»¬éœ€è¦æ›´å¥½çš„å‘å¸ƒè®¡åˆ’æ–¹æ³•ï¼Œè€Œä¸æ¢æ˜¯ä¸€ä»½å…±äº«çš„ç”µåæ•°æ®è¡¨ã€‚ä»–ä»¬éœ€è¦æ¸…晰了解å‘布的风险ã€ä¾èµ–ã€å„é˜¶æ®µçš„å…¥å£æ¡ä»¶ï¼Œå¹¶ç¡®ä¿å„个角色éµå®ˆæ—¢å®šæµç¨‹è¡Œäº‹ã€‚
å‘布/部署å调问题
有å‘布/部署å调问题的团队需è¦å…³æ³¨å‘布/部署过程ä¸çš„æ‰§è¡Œã€‚ä»–ä»¬éœ€è¦æ›´å¥½åœ°è·Ÿè¸ªå‘布状æ€ã€æ›´å¿«åœ°å°†é—®é¢˜ä¸Šå‡ã€ä¸¥æ ¼æ‰§è¡Œæµç¨‹æŽ§åˆ¶å’Œç»†ç²’度的报表。
å‘布/部署自动化问题
这些ä¼ä¸šé€šå¸¸æœ‰ä¸€äº›è‡ªåŠ¨åŒ–å·¥å…·ï¼Œä½†ä»–ä»¬è¿˜éœ€è¦ä»¥æ›´çµæ´»çš„æ–¹å¼æ¥ç®¡ç†å’Œé©±åŠ¨è‡ªåŠ¨åŒ–å·¥ä½œâ”€â”€ä¸å¿…è¦å°†æ‰€æœ‰æ‰‹å·¥æ“作都在命令行ä¸åŠ ä»¥è‡ªåŠ¨åŒ–ã€‚ç†æƒ³æƒ…况下,自动化工具应该能够在éžç”Ÿäº§çŽ¯å¢ƒä¸‹ç”±éžè¿è¥äººå‘˜ä½¿ç”¨ã€‚
è¦å¼€å§‹ä¼˜åŒ–å‘布æµç¨‹ï¼Œå¯ä»¥ä»Žé—®é¢˜è¯†åˆ«å¼€å§‹ï¼šçœ‹çœ‹ä¸Šé¢æåˆ°çš„哪ç§é—®é¢˜åœ¨ä½ 的团队ä¸å…·æœ‰æœ€é«˜çš„优先级。
å‘布å调人
这是ä¼ä¸šçº§IT组织ä¸ä¸€ä¸ªæ–°å‡ºçŽ°çš„è§’è‰²ï¼Œå…¶ä¸»è¦ä»»åŠ¡å°±æ˜¯å调安排将ä¼ä¸šçº§è½¯ä»¶éƒ¨ç½²åˆ°é¢„生产环境。对å‘布å调人的需求æ¥è‡ªäºŽä»¥ä¸‹å‡ æ–¹é¢åŽŸå› ï¼š
1. 需è¦å¼¥åˆå¼€å‘与è¿è¥çš„鸿沟
2. 基础设施日益å˜å¾—夿‚:为了è¿è¥web应用,需è¦å¤šå±‚基础设施和多ç§å¹³å°
3. å‘布频率上å‡ï¼ˆç”±äºŽæ•æ·å¼€å‘å’Œè¿ä»£å¼å¼€å‘的引入)
4. 分布å¼å›¢é˜Ÿï¼šä½äºŽå…¨çƒå¤šä¸ªåœ°ç‚¹çš„ã€åŒ…å«å¤–åŒ…äººå‘˜çš„ã€æ··åˆå¼€å‘/测试/基础设施的团队
å‘布å调人的角色(也被称为部署å调人或集æˆå调人)æºè‡ªå‘å¸ƒç®¡ç†æˆ–å‘布工程团队。这个角色与航空交通管制有些类似──实时åè°ƒä¸åŒå›¢é˜Ÿçš„行动,有效使用共享的资æºï¼ˆç©ºåŸŸã€èˆªé“ã€è·‘é“ã€èˆªç«™é—¨ï¼‰ï¼Œè¾¾åˆ°ç»„ç»‡çš„æ€»ä½“ç›®æ ‡ï¼ˆå®‰å…¨èµ·é™ï¼‰ã€‚
ä¼ ç»Ÿæ„义上的å‘布管ç†å¾€å¾€åªå…³æ³¨è½¯ä»¶å˜æ›´çš„计划与管ç†ï¼Œå‘布åè°ƒåˆ™éœ€è¦æŽ§åˆ¶â€œå°†ç‰¹å®šè½¯ä»¶å˜æ›´å‘布至生产环境â€çš„æ•´ä¸ªè¿‡ç¨‹ã€‚这项工作需è¦ç³»ç»Ÿåœ°ç®¡ç†æ‰€æœ‰ä¸Žâ€œå°†ä»£ç 构建并部署到生产环境â€ç›¸å…³çš„æŠ€æœ¯ä»»åŠ¡ï¼Œä¹Ÿè¢«ç§°ä¸ºâ€œå‘布工程â€ã€‚
å˜æ›´ç®¡ç†æ˜¯è·Ÿè¸ªä¼ä¸šIT环境ä¸å„ç§å˜åŒ–──ä¸ç®¡æ˜¯åº”用程åºè¿˜æ˜¯åŸºç¡€è®¾æ–½çš„å˜åŒ–â”€â”€çš„åŸºæœ¬åŽŸåˆ™ã€‚å˜æ›´ç®¡ç†æ˜¯ITIL v3çš„æ ¸å¿ƒä¹‹ä¸€ã€‚
关键è¯ï¼šæ•æ·å¼€å‘,DevOps
精益创业
概念
精益创业(Lean Startup)是硅谷æµè¡Œçš„一ç§åˆ›æ–°æ–¹æ³•è®ºã€‚å®ƒçš„æ ¸å¿ƒæ€æƒ³æ˜¯ï¼Œå…ˆåœ¨å¸‚åœºä¸æŠ•å…¥ä¸€ä¸ªæžç®€çš„原型产å“,然åŽé€šè¿‡ä¸æ–çš„å¦ä¹ 和有价值的用户å馈,对产å“进行快速è¿ä»£ä¼˜åŒ–,以期适应市场。
ç”±æ¥
精益创业(Lean Startup)由硅谷创业家Eric Rise2012å¹´8月在其著作《精益创业》一书ä¸é¦–度æå‡ºã€‚ä½†å…¶æ ¸å¿ƒæ€æƒ³å—到了å¦ä¸€ä½ç¡…谷创业专家Steve Garry Blank的《四æ¥åˆ›ä¸šæ³•》ä¸â€œå®¢æˆ·å¼€å‘â€æ–¹å¼çš„很大影å“,åŽè€…也为精益创业æä¾›äº†å¾ˆå¤šç²¾å½©æŒ‡ç‚¹å’Œæ¡ˆä¾‹ã€‚
很多IT从业人员在了解精益创业åŽè®¤ä¸ºï¼Œå…¶æ ¸å¿ƒç†å¿µå¯ä»¥è¿½æº¯åˆ°è½¯ä»¶è¡Œä¸šçš„æ•æ·å¼€å‘管ç†ã€‚例如“最å°å¯ç”¨å“â€ä¸Žâ€œåŽŸåž‹å»ºæ¨¡â€éžå¸¸ç›¸ä¼¼ï¼Œéƒ½è¿½æ±‚快速的版本è¿ä»£ï¼Œä»¥åŠæ—¶åˆ»ä¿æŒä¸Žå®¢æˆ·çš„æŽ¥è§¦å¹¶èŽ·å¾—å馈ç‰ç‰ï¼Œç²¾ç›Šåˆ›ä¸šå¯ä»¥ç†è§£ä¸ºæ•æ·å¼€å‘模å¼çš„一ç§å»¶ç»ã€‚
三大法å®ç¼–辑
ä»Žã€Šç²¾ç›Šåˆ›ä¸šã€‹ä¸€ä¹¦ä¸æåˆ°çš„ä¸»è¦æ€è·¯å’Œè„‰ç»œï¼Œç»“åˆåœ¨çŽ°å®žä¸ä½¿ç”¨çš„频率,精益创业æåˆ°çš„三个主è¦å·¥å…·æ˜¯ï¼šâ€œæœ€å°å¯ç”¨å“â€ã€â€œå®¢æˆ·å馈â€ã€â€œå¿«é€Ÿè¿ä»£â€ã€‚
最å°å¯ç”¨å“–是指将创业者或者新产å“的创æ„用最简æ´çš„æ–¹å¼å¼€å‘出æ¥ï¼Œå¯èƒ½æ˜¯äº§å“界é¢ï¼Œä¹Ÿå¯ä»¥æ˜¯èƒ½å¤Ÿäº¤äº’æ“作的胚胎原型。它的好处是能够直观的被客户感知到,有助于激å‘客户的æ„è§ã€‚通常最å°å¯ç”¨å“有四个特点:体现了项目创æ„ã€èƒ½å¤Ÿæµ‹è¯•和演示ã€åŠŸèƒ½æžç®€ã€å¼€å‘æˆæœ¬æœ€ä½Žç”šè‡³æ˜¯é›¶æˆæœ¬ã€‚
客户å馈–是指通过直接或间接的方å¼ï¼Œä»Žæœ€ç»ˆç”¨æˆ·é‚£é‡ŒèŽ·å–针对该产å“çš„æ„è§ã€‚通过客户åé¦ˆæ¸ é“了解关键信æ¯ï¼ŒåŒ…括:客户对产å“的整体感觉ã€å®¢æˆ·å¹¶ä¸å–œæ¬¢/å¹¶ä¸éœ€è¦çš„功能点ã€å®¢æˆ·è®¤ä¸ºéœ€è¦æ·»åŠ çš„æ–°åŠŸèƒ½ç‚¹ã€å®¢æˆ·è®¤ä¸ºæŸäº›åŠŸèƒ½ç‚¹åº”è¯¥æ”¹å˜çš„实现方å¼ç‰ï¼›èŽ·å¾—å®¢æˆ·å馈的方å¼ä¸»è¦æ˜¯çŽ°åœºä½¿ç”¨ã€å®žåœ°è§‚察。对于精益创业者而言,一切活动都是围绕客户而进行,产å“å¼€å‘ä¸çš„æ‰€æœ‰å†³ç–æƒéƒ½äº¤ç»™ç”¨æˆ·ï¼Œå› æ¤ï¼Œå¦‚果没有足够多的客户å馈,就ä¸èƒ½ç§°ä¸ºç²¾ç›Šåˆ›ä¸šã€‚
快速è¿ä»£–是针对客户å馈æ„è§ä»¥æœ€å¿«çš„速度进行调整,èžåˆåˆ°æ–°çš„版本ä¸ã€‚对于互è”ç½‘æ—¶ä»£è€Œè¨€ï¼Œé€Ÿåº¦æ¯”è´¨é‡æ›´é‡è¦ï¼Œå®¢æˆ·éœ€æ±‚快速å˜åŒ–ï¼Œå› æ¤ï¼Œä¸è¿½æ±‚一次性满足客户的需求,而是通过一次åˆä¸€æ¬¡çš„è¿ä»£ä¸æ–让产å“的功能丰满。所以,æ‰ä¼šæœ‰å¾®ä¿¡åœ¨ç¬¬ä¸€å¹´å‘布了15个版本,扣扣ä¿é•–3周上线的记录。
常用方法编辑
1. 精简å¼å馈
å¤§å¤šæ•°å›¢é˜Ÿè®¤ä¸ºï¼Œåªæœ‰å¼€å‘出一个功能完整ã€çœ‹èµ·æ¥å¾ˆç¾Žè§‚的界é¢ä¹‹åŽï¼Œæ‰èƒ½å°†å…¶å±•示给客户以获得åé¦ˆã€‚äº‹å®žè¯æ˜Žï¼Œåªè¦å°†ä¸€äº›ç®€å•的模型功能组织在一起,并æä¾›å¯ç‚¹å‡»çš„åŒºåŸŸï¼ŒåŒæ ·å¯ä»¥èŽ·å¾—æœ‰ä»·å€¼çš„å馈。事实åå¤è¯æ˜Žï¼Œæ¶ˆè´¹è€…å分愿æ„与这些å¯ç‚¹å‡»çš„功能互动,就好åƒå®ƒä»¬æ˜¯æœ€ç»ˆçš„产å“。这å¯ä»¥å¸®åŠ©åˆ›ä¸šå…¬å¸äº†è§£å…¶è®¾è®¡æ˜¯å¦æœ‰æ•ˆï¼Œåœ¨çœŸæ£è¿›è¡Œå¤§è§„模开å‘工程之å‰ï¼Œè¿™æ˜¯ä¸€ä¸ªå分伟大的方法。
2. 客户采访
ä¸è¦é—é—¨é€ è½¦ï¼Œè€Œè¦é€šè¿‡æ”¶é›†æ•°æ®æ¥æ”¯æŒäº§å“设计。具体而言,è¦èµ°å‡ºåŽ»ï¼Œæ‰¾åˆ°è‡ªå·±äº§å“çš„æ½œåœ¨å®¢æˆ·ï¼Œé€šè¿‡ä¸Žä»–ä»¬äº¤æµæ¥æ‰¾åˆ°è§£å†³é—®é¢˜çš„ç”æ¡ˆã€‚对于该方法,开å‘者也许已ç»å¬è¿‡ä¸Šç™¾æ¬¡äº†ï¼Œå¹¶ä¸”也认å¯ï¼Œä½†è¦çœŸæ£æŠŠå®ƒåŸ¹å…»æˆä¹ 惯并ä¸å®¹æ˜“。
3. 以å°è§å¤§
è¦æƒ³è¿…速了解消费者是å¦å–œæ¬¢ä¸€é¡¹æ–°åŠŸèƒ½ï¼Œåªéœ€é€šè¿‡æŽ¨å‡ºè¯¥åŠŸèƒ½çš„ä¸€å°éƒ¨åˆ†å³å¯ã€‚产å“定制创业公å¸CustomMade就是如æ¤ï¼Œå¼€å‘者希望让访问者借鉴他人的项目æ¥èŽ·å¾—çµæ„Ÿã€‚但没有必è¦è´¹åŠ›åœ°å¼€å‘å‡ºæ•´ä¸ªåŠŸèƒ½ï¼Œå› æ¤ä»…推出了第一个按钮。当开å‘者看到大é‡è®¿é—®è€…点击该按钮时,就知é“应该把这一功能继ç»å®Œæˆã€‚ç»è¿‡è°ƒæ•´å’Œä¼˜åŒ–,用户互动明显æå‡ã€‚
4. 判æ–
å¼€å‘者å¯ä»¥å°†ç«žäº‰å¯¹æ‰‹çš„产å“看作是一个å…费的原型。观察消费者如何使用这些产å“,他们喜欢哪些功能,哪些功能用ä¸åˆ°ï¼Œç”šè‡³ä»¤äººåŽŒæ¶ã€‚了解这些,开å‘者在进行产å“设计ã€è¥é”€å’Œé”€å”®æ—¶å°±ä¼šåšå‡ºæ›´å¥½çš„决定。
5. 微调查
精益创业人士需è¦ä½¿ç”¨ä¸€é¡¹æœ‰æ•ˆçš„调查模å¼ï¼Œå°½é‡è®©è°ƒæŸ¥ä¸Žå½“å‰çš„ç ”ç©¶å†…å®¹ç´§å¯†ç»“åˆã€‚例如,如果想知é“顾客为何选择ä¼ä¸šçš„一项定价计划,就å¯ä»¥ç»™å‡ºä¸€ä¸ªå°çš„弹出å¼è°ƒæŸ¥é—®å·ï¼Œè€Œä¸æ˜¯å¯èƒ½éœ€è¦å‡ å¤©åŽæ‰èƒ½çœ‹åˆ°çš„电å邮件。
æ¤å¤–,阅读100个简çŸçš„用户å馈获得的内容远比知é“32%的人选“Bâ€æ›´å¤šã€‚
6. çœŸæ£æ•°æ®åŽŸåž‹
å½“ä¸ºä¼˜æƒ åˆ¸ç½‘ç«™RetailMeNotè®¾è®¡ä¼˜æƒ åˆ¸é¡µé¢æ—¶ï¼Œè®¾è®¡è€…需è¦çœŸæ£çš„ä¼˜æƒ åˆ¸æ•°æ®æ¥è¯„估设计。设计者花费了两天时间æ¥åˆ›å»ºåŽŸåž‹ï¼Œå°½ç®¡è¿˜æœ‰ä¸å°‘问题,也ä¸å…·å¤‡å¤ªå¤šåŠŸèƒ½ï¼Œä½†å´å¯ä»¥ä»Žæ¶ˆè´¹è€…那里获得许多有价值的å馈。
å馈å‘现,最åˆçº¦50%的想法ä¸åˆç†ã€‚åŽæ¥åˆé‡å¤äº†ä¸‰æ¬¡ï¼Œå»ºç«‹åŽŸåž‹å¹¶å±•ç¤ºç»™æ¶ˆè´¹è€…ï¼Œæœ€ç»ˆä½¿åˆ›æ–°çš„è®¾è®¡æ›´å…·å¯ç”¨æ€§ï¼Œç‚¹å…¥çŽ‡æ˜¾è‘—æå‡ã€‚
7. 实地考察
最åˆï¼ŒæŸä¸ªé¡¹ç›®ç»„与Foundation Medicineåˆä½œæ¥å®Œå–„å…¶ä¸´åºŠè‚¿ç˜¤åŸºå› ç»„å¦æŠ¥å‘Šã€‚å› æ¤é¡¹ç›®ç»„决定å‚观一下肿瘤ä¸å¿ƒï¼Œè§‚å¯ŸåŒ»ç”Ÿæ˜¯å¦‚ä½•ä½¿ç”¨æŠ¥å‘Šçš„ã€‚åŽæ¥å‘çŽ°ï¼Œä»–ä»¬åŠªåŠ›è®¾è®¡å‡ºçš„æŠ¥å‘Šé€šå¸¸æ˜¯é€šè¿‡ä¼ çœŸæ¥æŽ¥æ”¶çš„ï¼Œå°å—体很难看清,å„ç§é¢œè‰²ä¿¡æ¯ä¹Ÿæ˜¯å¤šä½™çš„。尽管这是一个很容易解决的问题,但åªè¦åˆ°äº†çŽ°åœºæ‰èƒ½å‘现问题。
优点编辑
一是快速,精益创业模å¼ä¸‹ï¼Œæ‰€æœ‰çš„创新行为和想法都必须在最çŸçš„æ—¶é—´å‘ˆçŽ°å‡ºæ¥ï¼ŒæŠ›å¼ƒä¸€åˆ‡æš‚ä¸é‡è¦å…¶ä»–功能,把æžç®€çš„åŠŸèƒ½å±•çŽ°ç»™å®¢æˆ·ï¼Œæ— è®ºæˆåŠŸæˆ–å¤±è´¥ï¼Œéƒ½èƒ½å¤Ÿä»¥æœ€å¿«çš„é€Ÿåº¦çŸ¥é“结果。
äºŒæ˜¯ä½Žæˆæœ¬ï¼Œè¿‡å¾€â€œå年磨一剑â€å¼çš„é•¿æœŸç ”å‘ï¼Œå…¶æœ€ç»ˆæˆæžœæŽ¨å‡ºåŽï¼Œæœ‰å¯èƒ½å‘现花费了大é‡äººåŠ›ã€ç‰©åŠ›å’Œæ—¶é—´æ‰€å¼€å‘出的产å“ï¼Œå¹¶ä¸æ˜¯å®¢æˆ·æ‰€éœ€è¦çš„。这ç§å·¨å¤§çš„æµªè´¹é™¤äº†ä¼šç»™åˆ›ä¸šè€…ã€ä¼ä¸šå¸¦æ¥ç»å¤§çš„ç»æµŽæŸå¤±ä¹‹å¤–,还对团队的士气形æˆå·¨å¤§æ‰“击,ä¸å°‘团队æˆå‘˜ä¼šçº·çº·å‡ºèµ°ã€‚而精益创业所采用的“频ç¹éªŒè¯å¹¶ä¿®æ”¹â€çš„ç–略,确ä¿ä¸ä¼šåœ¨å®¢æˆ·è®¤å¯ä¹‹å‰æŠ•å…¥è¿‡é«˜çš„æˆæœ¬ã€‚
三是高æˆåŠŸçŽ‡ï¼Œè™½ç„¶åˆ›æ–°å……æ»¡é£Žé™©ï¼ŒæˆåŠŸç³»æ•°ä½Žï¼Œä½†ä¹Ÿä¸æ˜¯æ²¡æœ‰å¥—è·¯å¯éµå¾ªã€‚按照精益创业的模å¼ï¼Œä»Žâ€œæœ€å°å¯ç”¨å“â€å‡ºå‘ï¼Œè¿‡ç¨‹ä¸æ¯ä¸€æ¬¡è¿ä»£éƒ½å¯ä»¥å¯»æ‰¾å®¢æˆ·è¿›è¡Œè¯•用,了解客户对产å“的看法,寻找产å“çš„ä¸è¶³å’Œå®¢æˆ·å¸Œæœ›å¢žåŠ ä¹ƒè‡³ä¿®æ”¹çš„åŠŸèƒ½ç‚¹ã€‚å½“ä¸€è·¯ä¸ŠæŒç»éµå¾ªå®¢æˆ·çš„æ„è§è¿›è¡Œå¼€å‘åŽï¼Œé¡¹ç›®ç»„çš„ä¸æ–çº åçš„æˆæžœå°±æ˜¯äº§å“è¶Šæ¥è¶Šç¬¦åˆå®¢æˆ·æƒ³è¦çš„æ•ˆæžœï¼Œè€Œä¸æ˜¯å¼€å‘团队é—é—¨æƒ³è±¡çš„æ ·å。通过æŒç»çš„“测试–调整â€ä»¥åŠå¿«é€Ÿè¿ä»£ï¼Œåˆ›æ–°çš„æˆåŠŸçŽ‡èƒ½å¤Ÿå¤§å¤§æå‡ã€‚
适用范围编辑
ç²¾ç›Šåˆ›ä¸šæ¥æºäºŽäº’è”网行业,是软件开å‘çš„ä¸€ç§æ–°æ¨¡å¼ã€‚但其背åŽçš„“客户验è¯â€æ€æƒ³åœ¨å¤§é‡éžITé¢†åŸŸå¾—åˆ°åº”ç”¨ã€‚ä¾‹å¦‚ç¾Žå‰§çš„æ‹æ‘„ï¼Œå¾€å¾€éƒ½ä¼šå…ˆæ‹æ‘„ä¸€éƒ¨å‡ å分钟的先导片,交代主è¦çš„人物关系ã€çŸ›ç›¾å†²çªã€æ•…事背景,然åŽé‚€è¯·å‡ åä½è§‚ä¼—å‚åŠ å°è§„æ¨¡è¯•æ˜ ä¼šï¼Œå†æ ¹æ®è§‚ä¼—çš„å馈æ¥å†³å®šå‰§æƒ…è¦ä½œé‚£äº›ä¿®æ”¹ï¼Œæ˜¯å¦éœ€è¦è°ƒæ•´æ¼”员,以åŠå†³å®šæ˜¯å¦æŠ•æ‹ã€‚在æ¯ä¸€å£ç»“æŸæ—¶ï¼Œåˆ¶ä½œæ–¹åˆä¼šæ ¹æ®æ”¶è§†çŽ‡å’Œè§‚ä¼—æ„è§ï¼Œå†³ç–æ˜¯ç æŽ‰è¯¥å‰§è¿˜æ˜¯è®¢è´æ–°ä¸€å£å†…容。这ç§å‘¨æ‹å£æ’的模å¼ï¼ŒæŠŠæ‰€æœ‰çš„å†³ç–æƒäº¤ç»™è§‚众,让制作方的投资以åŠå¤±è´¥æˆæœ¬é™åˆ°äº†æœ€ä½Žï¼Œæ˜¯ä¸€ç§å…¸åž‹çš„精益创业方å¼ã€‚
整体而言,精益创业适åˆå®¢æˆ·éœ€æ±‚å˜åŒ–å¿«ã€ä½†å¼€å‘难度ä¸é«˜çš„领域,比如软件ã€ç”µå½±ç”µè§†ã€é‡‘èžæœåŠ¡ç‰é¢†åŸŸã€‚在国内,除互è”网ä¼ä¸šå¤–,酒店管ç†é¢†åŸŸçš„“今夜酒店特价â€å°±é‡‡ç”¨è¿™ç§å°æ¥è¯•错的方å¼è¿›è¡Œå¼€å‘ï¼Œä¸€äº›ä¼ ç»Ÿä¼ä¸šå¦‚ä¸ä¿¡é“¶è¡Œä¿¡ç”¨å¡ä¸å¿ƒåˆ©ç”¨ç²¾ç›Šåˆ›ä¸šè¿›è¡Œä¿¡ç”¨å¡äº§å“åŠå®¢æˆ·æœåŠ¡çš„åˆ›æ–°ï¼Œå¹¶æŠŠä¸‰å¤§æ³•å®å›ºåŒ–åˆ°é¡¹ç›®ç®¡ç†æœºåˆ¶ä¸ã€‚
由于精益创业需è¦ç»å¸¸è¿›è¡Œå®¢æˆ·éªŒè¯ï¼Œå› æ¤å¯¹äºŽä¸€äº›å®¢æˆ·éªŒè¯æˆæœ¬è¾ƒé«˜ã€æˆ–者技术实现难度较大的工作并ä¸é€‚åˆã€‚比如大型赛事,æœåŠ¡å®¢æˆ·æ˜¯å…¨ä½“è¿åŠ¨å‘˜ï¼Œä½†æƒ³è¦èŽ·å¾—ä»–ä»¬çš„é¢‘ç¹åé¦ˆæ˜¯æ¯”è¾ƒå›°éš¾çš„ã€‚åˆæ¯”å¦‚èˆªå¤©å·¥ç¨‹ï¼Œå®¢æˆ·éœ€æ±‚æ˜¯æ¯”è¾ƒæ˜Žç¡®ã€æ¸…晰的,主è¦éš¾ç‚¹åœ¨äºŽé£žè¡Œå™¨çš„æŠ€æœ¯å®žçŽ°å’Œå¯¹æŽ¥æŽ§åˆ¶ã€‚
关键è¯ï¼šæ•æ·å¼€å‘,精益创业
Martin Fowlerè°ˆæ•æ·å¼€å‘
æ¯ä¸ªäººéƒ½åœ¨è°ˆè®ºæ•æ·å¼€å‘(Agile Developmentï¼‰ã€‚ä½†æ˜¯ï¼Œä½ æ˜¯å¦é€‰æ‹©äº†æ£ç¡®çš„æ–¹æ³•å¦ï¼Ÿä½ æ‰€é€‰çš„æ–¹æ³•æ˜¯å¦æ£å¸¸è¿è½¬ï¼Ÿä½ 是å¦åº”è¯¥è¯·æ±‚é¡¾é—®çš„å¸®åŠ©ï¼Ÿä½ åº”è¯¥å¦‚ä½•ç®¡ç†å¼€å‘的过程?还有,如何修补那些“先天ä¸è¶³â€çš„代ç ?轻é‡çº§æ–¹æ³•å¦çš„大师Martin Fowler 将回ç”这些问题。
应该问什么?
记者:在寻找适åˆè‡ªå·±å›¢é˜Ÿçš„æ–¹æ³•妿—¶ï¼Œå¼€å‘ç»ç†åº”è¯¥ææ€Žæ ·çš„问题?
Fowlerï¼šé¦–å…ˆï¼Œä»–ä»¬éœ€è¦ å¯¹è‡ªå·±çš„é¡¹ç›®æœ‰ä¸€ä¸ªå……åˆ†çš„äº†è§£ã€‚ä»–ä»¬éœ€è¦äº†è§£é¡¹ç›®ä¸ä¸»è¦çš„é£Žé™©ï¼ŒåŒæ—¶åº”该了解ä¼ä¸šçš„æ–‡åŒ–å’Œæ¶‰åŠæ¤é¡¹ç›®çš„团队æˆå‘˜ã€‚æˆ‘ä¸€ç›´éƒ½è®¤ä¸ºï¼šä½ åº”è¯¥é€‰æ‹©é€‚åˆäºŽå›¢é˜Ÿçš„æ–¹ 法å¦ï¼Œè€Œä¸æ˜¯ç›¸åã€‚å®žé™…ä¸Šï¼Œâ€œæ•æ·å®£è¨€â€çš„主è¦è§„åˆ™ä¹‹ä¸€å°±æ˜¯ï¼šä¸ªäººä¹‹é—´çš„äº¤æµæ¯”过程ã€å·¥å…·æ›´é‡è¦ã€‚团队ä¸çš„个人以åŠè¿™äº›ä¸ªäººååŒå·¥ä½œçš„æ–¹å¼ï¼Œè¿™æ˜¯é¡¹ç›®æˆåŠŸ 的一个é‡è¦å› ç´ ï¼Œæ¯”å¯¹è¿‡ç¨‹å’Œå·¥å…·çš„é€‰æ‹©è¦é‡è¦å¾—多。
记者:回到å‰é¢é‚£ä¸ªé—®é¢˜ã€‚ç¬¬ä¸€ä»¶åº”è¯¥é—®çš„å°±æ˜¯ï¼šâ€œä½ æ‰€åšçš„æ˜¯ä»€ä¹ˆé¡¹ç›®ï¼Ÿâ€æ˜¯è¿™æ ·å—?
Fowler:准确地说,应该 æ˜¯â€œä½ æ‰€åšçš„æ˜¯ä»€ä¹ˆç±»åž‹çš„项目â€ã€‚涉åŠä¸Šç™¾äººçš„èˆªç©ºè½¯ä»¶é¡¹ç›®å’Œåªæ¶‰åŠå…个人的网站项目,它们采用的方法å¦è‚¯å®šæ˜¯ä¸ä¸€æ ·çš„ã€‚æ›¾ç»æœ‰ä¸€ä¸ªäººè·Ÿæˆ‘谈起他的工作。 以å‰ä»–认为由å°å˜å¤§æ˜¯ä¸€ä¸ªå›°éš¾çš„è¿‡ç¨‹ï¼Œä½†æ˜¯åŽæ¥ä»–å‘现由大å˜å°ä¹ŸåŒæ ·å›°éš¾ã€‚大型项目所选择的方法å¦å¯¹äºŽå°åž‹é¡¹ç›®é€šå¸¸å°±ä¸é€‚用了。å¦å¤–,软件产å“的类型也是 å½±å“å› ç´ ä¹‹ä¸€ã€‚åµŒå…¥å¼ç³»ç»Ÿå’Œå•†ç”¨è½¯ä»¶ï¼Œå®ƒä»¬é‡‡ç”¨çš„æ–¹æ³•å¦è‚¯å®šä¹Ÿæ˜¯ä¸åŒçš„——这有一点猜测的æˆåˆ†ï¼Œå› ä¸ºæˆ‘ä»Žæ¥æ²¡æœ‰å¼€å‘过嵌入å¼ç³»ç»Ÿï¼Œåªå¼€å‘过商用软件。
è®°è€…ï¼šä½ åˆšæ‰è¿˜æåˆ°ï¼Œå¼€å‘ç»ç†åº”该了解他们å¯èƒ½é‡åˆ°çš„风险?
Fowler:是的,开å‘ç»ç† 必须知é“å“ªäº›å› ç´ å¯èƒ½å¯¼è‡´é¡¹ç›®å¤±è´¥ã€‚ä¾‹å¦‚ï¼Œæ•æ·ç¤¾ç¾¤ä¸€ç›´å…³æ³¨çš„一个é‡è¦é—®é¢˜å°±æ˜¯éœ€æ±‚çš„æ˜“å˜æ€§ã€‚如果需求ä¸ç¡®å®šã€æ— 法将需求固定在æŸä¸ªåˆç†çš„层é¢ä¸Šï¼Œé‚£ä¹ˆé€‰ æ‹©æ•æ·å¼€å‘方法就会比较åˆé€‚ã€‚ä¼ ç»Ÿçš„è½¯ä»¶å·¥ç¨‹æ–¹æ³•æ€»æ˜¯è¦æ±‚ä½ å°†éœ€æ±‚å›ºå®šä½ï¼Œå¹¶ä¸”在åŽç»è¿‡ç¨‹ä¸ä¸å†å˜åŒ–ã€‚å› æ¤ï¼Œéœ€æ±‚çš„æ˜“å˜æ€§å°±ä¼šæˆä¸ºä¸€ä¸ªé‡è¦çš„风险æºã€‚我认为, è¿™ç§é£Žé™©å¯¹äºŽâ€œæ˜¯å¦é€‰æ‹©æ•æ·æ–¹æ³•â€èµ·ç€å†³å®šæ€§çš„作用。
è®°è€…ï¼šä½ åˆšæ‰æåˆ°çš„ç¬¬ä¸‰ç‚¹æ˜¯â€œä¼ä¸šæˆ–者开å‘团队的文化â€ã€‚ä½ å¥½è±¡è®¤ä¸ºè¿™æ¯”æ–¹æ³•å¦æœ¬èº«è¿˜è¦é‡è¦ï¼Œä¸ºä»€ä¹ˆï¼Ÿ
Fowler:很明显,如果我 能有一打顶级的程åºå‘˜ï¼Œè€Œä»–们åˆèƒ½å¾ˆå¥½åœ°åˆä½œï¼Œæˆ‘å°±ä¼šè®©ä»–ä»¬è‡ªå·±åŽ»å°½æƒ…å‘æŒ¥ã€‚è¿™æ—¶ï¼Œä½¿ç”¨ä»€ä¹ˆè¿‡ç¨‹æ ¹æœ¬å°±æ— æ‰€è°“ï¼Œå› ä¸ºä»–ä»¬çš„å¤©æ‰ä¸€å®šä¼šè®©æˆ‘们胜出。这是我们 这一行ä¸çš„ä¸€ä¸ªå†³å®šæ€§å› ç´ ï¼šå¦‚æžœä¼˜ç§€çš„äººèƒ½å¾ˆå¥½åœ°åˆä½œï¼Œé‚£ä¹ˆä»–们一定比普通团队åšå¾—æ›´å¥½ï¼Œå› ä¸ºä»–ä»¬è‡ªå·±å°±ä¼šæ‰¾åˆ°æœ€é€‚åˆä»–们的工作方å¼ã€‚å®žé™…ä¸Šï¼Œè¿™ä¹Ÿæ˜¯æ•æ·å¼€å‘过程ä¸çš„一个éžå¸¸é‡è¦çš„æ¦‚念。OTI çš„Dave Thomas说,这个世界上有两ç§å¼€å‘者:适åˆä»–的和ä¸é€‚åˆä»–的。他的方法å¦å°±æ˜¯ï¼šé›‡ä½£é‚£äº›é€‚åˆä»–çš„äººã€‚è¿™æ£æ˜¯OTI 之所以获得æˆåŠŸçš„é‡è¦å› ç´ ä¹‹ä¸€ã€‚
记者:å‡å¦‚ä½ çš„å…¬å¸é‡Œæ²¡æœ‰ä¸€ä¸ªçœŸæ£æ„义上的“明星程åºå‘˜â€ï¼Œè€Œåªæœ‰ä¸€äº›ä¸é‚£ä¹ˆå‡ºè‰²çš„ã€éœ€è¦å¤§é‡ç®¡ç†å·¥ä½œæ‰èƒ½ä¿è¯ä»£ç è´¨é‡çš„程åºå‘˜ï¼Œä½ ä¼šæ€Žä¹ˆåŠžå‘¢ï¼Ÿä½ æœ‰ä»€ä¹ˆåŠžæ³•å¼¥è¡¥äººå‘˜ä¸Šçš„ç¼ºæ†¾å—ï¼Ÿæˆ–è€…ä½ è¦æŠŠä»–ä»¬å…¨éƒ½è§£é›‡æŽ‰ï¼Œç„¶åŽå†ä»Žå¤´å¼€å§‹ï¼Ÿ
Fowler:呵呵,如果å¯è¡Œ çš„è¯ï¼Œæˆ‘就会把他们解雇掉,然åŽé‡æ–°é›‡ä¸€æ‰¹èªæ˜Žçš„人æ¥ã€‚ä¸è¿‡ï¼Œè¿™é€šå¸¸éƒ½ä¸å¯è¡Œï¼Œä½ 必须充分利用手上的资æºã€‚ä½ å¿…é¡»è®¤è¯†åˆ°ï¼šå³ä½¿æ²¡æœ‰ä¸€æ‰¹å¤©æ‰ï¼Œåªè¦è®©ä¸€æ‰¹åº¸ æ‰å¾ˆå¥½åœ°åˆä½œï¼Œä¹Ÿèƒ½èŽ·å¾—å¾ˆå¥½çš„æ•ˆæžœã€‚è€Œä½œä¸ºç»ç†ï¼Œä½ 应该åšçš„å°±æ˜¯ï¼šç»™æ²¡æœ‰è‰¯å¥½ä¼ ç»Ÿçš„å›¢é˜ŸçŒè¾“一个åˆé€‚çš„è¿‡ç¨‹ã€‚åŒæ—¶ï¼Œå¯¹äºŽä¸ªäººèƒ½åŠ›ä¸é‚£ä¹ˆçªå‡ºçš„å›¢é˜Ÿï¼Œæˆ‘ä¼šéž å¸¸é‡è§†æé«˜ä»–ä»¬çš„èƒ½åŠ›ã€‚å¦‚æžœä½ èƒ½æé«˜ä»–ä»¬çš„ä¸ªäººèƒ½åŠ›ï¼Œé‚£ä¹ˆä½ ä¹Ÿèƒ½èŽ·å¾—æ›´å¤šçš„ä¼˜åŠ¿ã€‚ä¸è¿‡ï¼Œè¿™å¹¶ä¸æ„å‘³ç€æˆ‘è¦æ”¾å¼ƒè¿‡ç¨‹çš„引入。
记者:现在,开å‘ç»ç†å·²ç»çŸ¥é“自己è¦å¼€å‘çš„æ˜¯ä»€ä¹ˆæ ·çš„é¡¹ç›®ï¼Œä¹ŸçŸ¥é“项目的主è¦é£Žé™©æ‰€åœ¨ï¼Œå¯¹ä¼ä¸šæ–‡åŒ–ä¹Ÿæœ‰äº†è¶³å¤Ÿçš„äº†è§£ã€‚é‚£ä¹ˆï¼Œä»–åº”è¯¥å¦‚ä½•å€ŸåŠ©è¿™äº›ä¿¡æ¯æ¥æŒ‡å¯¼ä»–的团队选择æ£ç¡®çš„æ–¹æ³•å¦å‘¢ï¼Ÿ
Fowler:在了解了 这些情况之åŽï¼Œå°±åº”该去阅读å„ç§ä¸åŒçš„æ–¹æ³•å¦ï¼Œå¹¶æ‹¿ä½ 拥有的这些信æ¯åŽ»å’Œè¿™äº›æ–¹æ³•å¦çš„çº¦æŸæ¡ä»¶ä½œåŒ¹é…,从ä¸åšä¸€ä¸ªæœ€ä½³é€‰æ‹©ã€‚ç„¶åŽï¼Œè®©ä½ 的团队实施所选的过 ç¨‹ï¼Œå¹¶åšæŒå‡ 个月。注æ„ï¼šåº”è¯¥å®Œå…¨æŒ‰ç…§è¿™ç§æ–¹æ³•妿‰€è¯´çš„去åšï¼Œå“ªæ€•它所说的å¬èµ·æ¥å¹¶ä¸æ˜¯ä¸€ä¸ªå¥½ä¸»æ„,也照ç€å®ƒåŽ»åšã€‚æˆ‘çœ‹åˆ°å¾ˆå¤šäººé€‰æ‹©ä¸€ç§æ–¹æ³•å¦ï¼Œå´ä¸ç…§ç€ 它所说的åšã€‚这是一个éžå¸¸ä¸¥é‡çš„问题。比如说,在æžé™ç¼–程(Extreme Programming,XP)的典型情况下,人们会说:“我们想è¦è¿›è¡Œæžé™ç¼–程,ä¸è¿‡ä¸æƒ³é‡‡ç”¨å…¶ä¸â€˜æµ‹è¯•’那一部分。â€å½“ç„¶äº†ï¼Œå¦‚æžœä½ ä¸æŒ‰ç…§XP çš„è¦æ±‚é‚£æ ·è¿›è¡Œä¸¥æ ¼çš„æµ‹è¯•ï¼Œæ•´ä¸ªè¿‡ç¨‹éƒ½ä¼šå¤±è´¥ã€‚å› æ¤ï¼Œä½ åº”è¯¥æ ¹æ®è‡ªå·±çš„ç»éªŒæ¥åˆ¤æ–å“ªç§æ–¹æ³•å¦é€‚åˆäºŽä½ ,然åŽå…¨åŠ›ä»¥èµ´åœ°å®žæ–½å®ƒã€‚è¿™æ˜¯æ•æ·å¼€å‘的一项é‡è¦åŽŸåˆ™ã€‚
何时寻求帮助?
记者:å‡è®¾ä¸€ä¸ªå¼€å‘å›¢é˜Ÿå·²ç»æå‡ºäº†æ°å½“çš„é—®é¢˜ï¼ŒæŒ‘é€‰äº†ä¸€ç§æ–¹æ³•å¦ï¼Œå¹¶ä¸”开始å°è¯•⋯⋯但还是é‡åˆ°äº†å›°éš¾ã€‚å¼€å‘团队应该在什么时候寻求外部的帮助呢?
Fowler(笑):我的公å¸ä»Žäº‹å¤§é‡çš„é¡¾é—®å·¥ä½œï¼Œææ€•æˆ‘çš„ç”æ¡ˆä¼šæœ‰ä¸ªäººå› ç´ å§ï¼Ÿæ£å¦‚我å‰é¢è¯´è¿‡çš„,ç»éªŒä¸°å¯Œçš„ã€èªæ˜Žçš„ã€ä¼˜ç§€çš„程åºå‘˜ï¼Œä»–们总是能干出å“è‘—çš„æˆæ•ˆã€‚å› æ¤ï¼Œå¼•进一些好的ç»éªŒå’Œä¸€äº›å¥½çš„建议总是会有所帮助的。
记者:外部的帮助对开å‘团队有什么好处?
Fowlerï¼šæœ‰å‡ ç§ä¸åŒçš„æ–¹ å¼ã€‚很多干这一行的人采用的都是“导师制â€çš„æ–¹å¼ï¼šä»Žå›¢é˜Ÿä¹‹å¤–带æ¥ä¸€ä¸ªäººï¼Œè®©ä»–ä½œä¸ºæ•´ä¸ªå›¢é˜Ÿçš„å¯¼å¸ˆã€‚è¿™ä¸ªäººè¦æˆä¸ºé¡¹ç›®ç»„的一员,并且确实åšä¸€äº›å¼€å‘工作, 但他的主è¦èŒè´£æ˜¯æŒ‡å¯¼å…¶ä»–äººã€‚æ˜¾ç„¶ï¼Œå¦‚æžœä½ æ¶‰è¶³ä¸€ä¸ªæ¯”è¾ƒæ–°çš„é¢†åŸŸï¼Œå¯¼å¸ˆåˆ¶ä¼šæ˜¯ä¸€ä¸ªä¸é”™çš„选择。我们在ThoughtWorks 采用的方å¼åˆ™æ˜¯æ‰€è°“的“åˆä½œåˆ¶â€ï¼šå¼€å‘团队ä¸å¤§çº¦1/3 甚至1/2 的人æ¥è‡ªé¡¾é—®æ–¹ã€‚这些人有两件事è¦åšã€‚首先,他们帮助项目获得æˆåŠŸï¼›åŒæ—¶ï¼Œä»–ä»¬è¿˜è¦æ•™ç»™å…¶ä»–人如何工作。åˆä½œåˆ¶çš„好处在于:顾问能更好地ç†è§£å›¢é˜Ÿçš„工作, 团队的æˆå‘˜ä¹Ÿèƒ½èŽ·å¾—æ›´åˆç†çš„æŒ‡å¯¼ï¼Œå¹¶ä»Žä¸å¦åˆ°æ›´å¤šçš„东西。
记者:哪些迹象表示团队需è¦å¸®åŠ©å‘¢ï¼Ÿ
Fowler:哦,我是 åšå®šä¸ç§»åœ°ç›¸ä¿¡è¿ä»£å¼å¼€å‘çš„ï¼Œä¹Ÿå°±æ˜¯è¯´ï¼Œæˆ‘ä»¬åº”è¯¥åœ¨æ¯æ¬¡è¿ä»£ç»“æŸæ—¶éƒ½å‘布有商业价值的代ç ã€‚å¦‚æžœä½ å‘çŽ°æŸæ¬¡è¿ä»£å‘布的东西ä¸å¤Ÿå¤šï¼Œæˆ–者å‘布的质é‡ä¸å¤Ÿå¥½ï¼Œ 这就æ„味ç€ä½ é‡åˆ°å›°éš¾äº†ã€‚æ¤æ—¶ï¼Œä½ 就应该寻求帮助。的确,è¿ä»£å¼å¼€å‘很有价值。比起瀑布å¼å¼€å‘,è¿ä»£å¼å¼€å‘èƒ½è®©ä½ æ›´å¥½åœ°è·Ÿè¸ªé¡¹ç›®çš„è¿›åº¦ã€‚å¼€å‘者å¯ä»¥ç®¡ç†è‡ª å·±å—?
记者:能ä¸èƒ½è®©å¼€å‘者自己管ç†è‡ªå·±ï¼Ÿæˆ–者,在什么时候需è¦ä¸“门让一个人æ¥ç®¡ç†å¼€å‘者?
Fowler:呃,这个 é—®é¢˜çš„ç”æ¡ˆå–å†³äºŽä½ å¦‚ä½•çœ‹å¾…â€œç®¡ç†â€è¿™ä¸ªè¯ã€‚任何一个团队ä¸éƒ½æœ‰éžå¸¸é‡è¦çš„管ç†è€…:他们帮助人们分工åä½œï¼Œä»–ä»¬ä¿æŒå›¢é˜Ÿä¸ã€å›¢é˜Ÿä¸Žå¤–部良好的人际关系。这 äº›ä¸œè¥¿ï¼Œä»Žä¼ ç»Ÿè§’åº¦æ¥çœ‹å¹¶ä¸å±žäºŽâ€œç®¡ç†â€çš„范畴,但这的确是管ç†è€…的责任。为了进入软件开å‘è¿™ä¸ªè¡Œä¸šï¼Œä½ å¿…é¡»æœ‰ä¸€å®šçš„æ‰åŽã€‚我是说,在软件开å‘者这个圈å é‡Œï¼Œå“ªæ€•æ¯”è¾ƒå·®çš„é‚£ä¸€éƒ¨åˆ†ï¼Œä»–ä»¬ä¹Ÿæ˜¯ç›¸å½“èªæ˜Žçš„ã€‚åªæœ‰é‚£äº›æ‰åŽæ¨ªæº¢çš„人æ‰å¯èƒ½å‡ºäººå¤´åœ°ã€‚æ‰€ä»¥ï¼Œæˆ‘ä¸€ç›´éƒ½è®¤ä¸ºï¼šè½¯ä»¶å¼€å‘æ˜¯ä¸€é¡¹ä¸“业工作,æ£å¦‚律师ã€åŒ»ç”Ÿçš„å·¥ ä½œæ˜¯ä¸“ä¸šå·¥ä½œä¸€æ ·ã€‚è€Œè½¯ä»¶å¼€å‘者,他们所åšçš„æ˜¯ä¸“家的工作,也应该得到专家的待é‡ã€‚ä½ ä¸å¯èƒ½è®©ä¸€ä¸ªæ™®é€šè¡Œä¸šçš„管ç†è€…到律师事务所去教这些律师怎么工作,也 ä¸å¯èƒ½è®©ä¸€ä¸ªéžåŒ»å¦ä¸“ä¸šçš„äººåˆ°è¯Šæ‰€åŽ»æ•™åŒ»ç”Ÿå¦‚ä½•æ²»ç–—ç—…äººã€‚åŒæ ·ï¼Œä½ 也ä¸åº”该让一个没有技术背景的人去指挥程åºå‘˜ã€è®¾è®¡å¸ˆä»¬çš„å·¥ä½œç»†èŠ‚ã€‚å› æ¤ï¼Œç®¡ç†å¾ˆé‡è¦ï¼Œ 但我们所说的这ç§â€œç®¡ç†â€å’Œå¤§å¤šæ•°äººæ‰€ç†è§£çš„“管ç†â€æ ¹æœ¬ä¸æ˜¯ä¸€å›žäº‹ã€‚
记者:那么,管ç†è€…应该åšä»€ä¹ˆå‘¢ï¼Ÿ
Fowlerï¼šå‘ƒâ‹¯â‹¯åˆ›é€ ä¸€ä¸ªè‰¯å¥½çš„çŽ¯å¢ƒï¼Œè®©æ‰€æœ‰äººèƒ½é½å¿ƒå力解决问题。然åŽï¼Œä¿è¯å›¢é˜Ÿæ‰€æœ‰æˆå‘˜éƒ½èƒ½é¡ºç•…地彼æ¤äº¤æµã€‚我è§è¿‡ä¸€ä½éžå¸¸ä¼˜ç§€çš„ç»ç†ï¼Œä»–就很善于促进团队æˆå‘˜ä¹‹é—´çš„交æµã€‚在他的团队ä¸ï¼Œæ¯ä¸ªäººéƒ½çŸ¥é“项目的进展情况,æˆå‘˜èƒ½å¤Ÿå¾ˆå¥½åœ°å作解决问题。
釿ž„适用于什么地方?
è®°è€…ï¼šä½ å¯ä»¥ç®—å¾—ä¸Šæ˜¯â€œé‡æž„之父â€äº†ã€‚釿ž„似乎在很多方法å¦ä¸éƒ½é€‚ç”¨ã€‚ä½ å¯¹äºŽé‡æž„çš„å®šä¹‰æ˜¯æ€Žæ ·çš„ï¼Ÿ
Fowlerï¼šé‡æž„(refactoringï¼‰æ˜¯è¿™æ ·çš„ä¸€ç§æŠ€æœ¯ï¼šåœ¨ä¸å¯¹ä»£ç 的功能特å¾ä½œä»»ä½•改å˜çš„å‰æä¸‹ï¼Œä¿®æ”¹çŽ°å˜ä»£ç 的结构,以æé«˜è®¾è®¡çš„è´¨é‡ã€‚
è®°è€…ï¼šä½ è®¤ä¸ºé‡æž„适用于开å‘过程的什么地方?
Fowler: äººä»¬é€šå¸¸ä¼šåœ¨ä¸¤ä¸ªåœ°æ–¹ä½¿ç”¨é‡æž„。最显而易è§çš„å°±æ˜¯ï¼šå½“ä½ æŽ¥æ‰‹ä¸€å—设计质é‡ä¸é«˜çš„ä»£ç æ—¶ï¼Œä½ å¯èƒ½æƒ³è¦æ”¹è¿›å®ƒï¼Œå› æ¤å°±éœ€è¦ä½¿ç”¨é‡æž„。如果代ç 的设计质é‡å¾ˆç³Ÿ ç³•ï¼Œé‚£ä¹ˆæ–°åŠŸèƒ½çš„æ·»åŠ å’Œé”™è¯¯çš„ä¿®å¤éƒ½ä¼šéžå¸¸å›°éš¾ã€‚ä½†æ˜¯ä½ åˆä¸æ„¿æ„ä»Žå¤´å¼€å§‹é‡æ–°ç¼–å†™æ•´ä¸ªè½¯ä»¶ï¼Œå› ä¸ºå·¥ä½œé‡å¤ªå¤§ã€‚è¿™æ—¶ï¼Œé‡æž„å°±ç»™äº†ä½ ç¬¬ä¸‰ç§é€‰æ‹©ï¼šä½ å¯ä»¥å€ŸåŠ©è¿™ 一系列技术有æ¡ä¸ç´Šåœ°é€æ¥æ”¹è¿›è½¯ä»¶çš„ç»“æž„ã€‚å¯¹äºŽé‡æž„的第二ç§ç”¨æ³•则是在XP 项目ä¸çš„é‚£ç§æ–¹å¼ã€‚在进行æžé™ç¼–ç¨‹æ—¶ï¼Œä½ ä¼šæŒç»ä¸æ–åœ°ä½¿ç”¨é‡æž„。æ¯å¤©ä½ 都会对自己写下的代ç åšä¸€äº›é‡æž„。所以,æ¯å½“ä½ è¦å¼€å§‹ä¸€ä¸ªæ–°ä»»åŠ¡æ—¶ï¼Œä½ å°±ä¼šçœ‹ç€ä»¥å‰ 的代ç 说:“这些代ç 能让我轻æ¾åœ°åŠ å…¥è¿™é¡¹æ–°çš„åŠŸèƒ½å—?â€å¦‚æžœä¸è¡Œï¼Œä½ å°±ä¼šé‡æž„å®ƒï¼Œä½¿å¾—æ–°åŠŸèƒ½çš„åŠ å…¥æ›´å®¹æ˜“ã€‚åœ¨åŠªåŠ›è®©æµ‹è¯•èƒ½å¤Ÿé€šè¿‡çš„è¿‡ç¨‹ä¸ï¼Œä½ å¯èƒ½å¹¶ä¸å¤ª 关心设计的质é‡ï¼Œè€Œåªæ˜¯å…³å¿ƒå¦‚ä½•å®žçŽ°åŠŸèƒ½ï¼›ä½†æ˜¯ï¼Œä¸€æ—¦æµ‹è¯•èƒ½å¤Ÿé¡ºåˆ©é€šè¿‡ï¼Œä½ å°±å¿…é¡»è¿›è¡Œé‡æž„ï¼Œå°†è®¾è®¡è´¨é‡æé«˜ã€‚æ€»ä¹‹ï¼Œåœ¨è¿›è¡Œæžé™ç¼–ç¨‹æ—¶ï¼Œä½ ä¼šæŒç»ä¸æ–地对代 ç è¿›è¡Œé‡æž„,以ä¿è¯è®¾è®¡è´¨é‡ä¸ä¼šé™ä½Žã€‚å› æ¤ï¼Œè¿™ç§æ–¹å¼ä¸Žå‰é¢æ‰€è¯´çš„“处ç†é—留代ç â€çš„æ–¹å¼æœ‰æ‰€ä¸åŒã€‚ä¸è¿‡ï¼Œå¦‚æžœä½ æˆåŠŸåœ°é€šè¿‡é‡æž„å°†é—留代ç çš„è´¨é‡æå‡åˆ°äº† ä¸€ä¸ªç›¸å½“é«˜çš„æ ‡å‡†ä¸Šï¼Œé‚£ä¹ˆä½ åº”è¯¥ä¼šé‡‡ç”¨XP çš„é£Žæ ¼è¿›è¡ŒåŽç»çš„å¼€å‘。
记者:除了XP ä¹‹å¤–ï¼Œé‡æž„还适用于别的方法å¦å—?
Fowler: 釿ž„适用于任何方法å¦ã€‚åªè¦ä½ 现有代ç 的设计质é‡ä¸åˆä½ çš„è¦æ±‚ï¼Œä½ å°±åº”è¯¥è€ƒè™‘é‡æž„它。ä¸è¿‡ï¼Œå¦‚果有一整套自动化测试的支æŒï¼Œé‚£ä¹ˆé‡æž„会更有ä¿éšœï¼Œå› 为自动 åŒ–çš„æµ‹è¯•æ˜¯é‡æž„的一个é‡è¦çš„剿æ¡ä»¶ã€‚å¦‚æžœä½ æ— æ³•ä½¿ç”¨è‡ªåŠ¨åŒ–é‡æž„工具的è¯ï¼Œè‡³å°‘è¦æœ‰è‡ªåŠ¨åŒ–çš„æµ‹è¯•ã€‚æœ‰å¾ˆå¤šäººåœ¨ç€‘å¸ƒå¼çš„å¼€å‘ä¸ä¹ŸæˆåŠŸåœ°ä½¿ç”¨äº†é‡æž„ã€‚æ‰€ä»¥ï¼Œåª è¦ä½ 希望改进代ç 的质é‡ï¼Œé‡æž„就是值得考虑的技术。
è®°è€…ï¼šæœ‰æ²¡æœ‰å“ªç§æ–¹æ³•å¦ä¸é¼“åŠ±é‡æž„呢?
Fowler:我想,的确有一些方法å¦è¯•图é™ä½Žå¯¹é‡æž„的需è¦ã€‚基于工程的方法å¦çš„æ ¸å¿ƒæ€æƒ³å°±æ˜¯ï¼šåœ¨å†™ä»»ä½•一行代ç 之å‰ï¼Œä½ å¿…é¡»å…ˆå®Œæˆæ•´ä¸ªè®¾è®¡ã€‚è¿™ç§æ€æƒ³è®¤ä¸ºï¼šå¦‚æžœä½ çš„è®¾è®¡åšå¾—æ£ç¡®æ— è¯¯ï¼Œä½ å°±ä¸éœ€è¦é‡æž„ï¼Œå› ä¸ºä»£ç è´¨é‡ä¸€å®šæ˜¯éžå¸¸é«˜çš„。当然,实际上很难把设计åšå¾—那么好。
记者:既è¦è®©å¼€å‘è€…æœ‰é‡æž„的自由,åˆä¸èƒ½å¤±å޻坹代ç å’Œé…置的控制,开å‘ç»ç†è¦å¦‚何应对这ç§çŸ›ç›¾å‘¢ï¼Ÿ
Fowler: 釿ž„与代ç 的所有æƒå¹¶ä¸çŸ›ç›¾ã€‚ä¸è¿‡ï¼Œåœ¨é‚£ç§å¼ºè°ƒä»£ç 所有æƒçš„æ–¹æ³•å¦ä¸ï¼Œçš„ç¡®éš¾ä»¥è¿›è¡Œé‡æž„。在我看æ¥ï¼Œä»£ç 的所有æƒå¤§æŠµæœ‰ä¸‰ç§å½¢å¼ï¼šå¼ºæ‰€æœ‰æƒã€å¼±æ‰€æœ‰æƒã€ä»¥ åŠé›†ä½“ä»£ç æ‰€æœ‰æƒã€‚XP é¼“åŠ±çš„æ˜¯é›†ä½“ä»£ç æ‰€æœ‰æƒï¼Œæœ‰äººè®¤ä¸ºè¿™æ˜¯â€œæ²¡æœ‰ä»£ç 所有æƒâ€ï¼Œä½†å®žé™…上这æ„味ç€â€œæ‰€æœ‰äººæ‹¥æœ‰æ‰€æœ‰ä»£ç â€â€”—任何人都å¯ä»¥åœ¨ä»»ä½•时候修改任何一部分的代ç 。之 æ‰€ä»¥å°†å®ƒç§°ä¸ºâ€œé›†ä½“ä»£ç æ‰€æœ‰æƒâ€è€Œä¸æ˜¯â€œæ— ä»£ç æ‰€æœ‰æƒâ€ï¼Œæ˜¯å› 为团队作为一个整体负责ä¿è¯æ‰€æœ‰ä»£ç 的质é‡ï¼Œå› æ¤ä»£ç å°±æ˜¯é›†ä½“æ‰€æœ‰çš„ã€‚â€œå¼ºä»£ç æ‰€æœ‰æƒâ€åˆ™æ˜¯ å¦ä¸€ä¸ªæžç«¯ï¼šè¿™ç§æ¨¡åž‹å°†ä»£ç 分æˆå‡ 大å—,交给æ¯ä¸ªå¼€å‘者一å—,æ¯ä¸ªå¼€å‘者åªèƒ½ä¿®æ”¹è‡ªå·±çš„那一å—代ç ã€‚è€Œåœ¨â€œå¼±ä»£ç æ‰€æœ‰æƒâ€çš„æ¨¡åž‹ä¸ï¼Œä»ç„¶éœ€è¦å°†ä»£ç åˆ†æˆ å—,并分é…到人,æ¯ä¸ªäººè´Ÿè´£ç¡®ä¿è‡ªå·±é‚£ä¸€éƒ¨åˆ†ä»£ç 的设计质é‡ã€‚但是,如果有需è¦ï¼Œå…¶ä»–人å¯ä»¥æ¥ä¿®æ”¹ä»–负责的代ç 。这也å¯ä»¥çœ‹ä½œæ˜¯ä¸Žä»£ç 的拥有者之间的æŸç§ åˆä½œå…³ç³»ã€‚å¯ä»¥çœ‹å‡ºï¼Œå¼ºä»£ç 所有æƒçš„开呿¨¡å¼å¹¶æ²¡æœ‰é˜»æ¢å¼€å‘è€…è¿›è¡Œé‡æž„ï¼Œä½†åœ¨è¿™ç§æ¨¡å¼ä¸‹é‡æž„的确会å˜å¾—困难。一个典型的例å就是给方法改åï¼šä½ çš„ä»£ç 䏿œ‰ 一个方法,它的åç§°ä¸èƒ½å¾ˆå¥½åœ°æè¿°å®ƒçš„ç”¨é€”ï¼Œå› æ¤ä½ 希望将它改å,给它起一个更具有æè¿°èƒ½åŠ›çš„åç§°ã€‚ä½†æ˜¯ï¼Œå¦‚æžœä½ çš„å›¢é˜Ÿé‡‡ç”¨äº†å¼ºä»£ç æ‰€æœ‰æƒçš„开呿¨¡å¼ï¼Œè€Œ ä½ æƒ³è¦æ”¹åçš„åˆæ˜¯ä¸€ä¸ªå…¬å¼€çš„æ–¹æ³•ï¼Œä½ å°±å¿…é¡»è´¹å¾ˆå¤§çš„åŠ›æ°”æ‰èƒ½å®Œæˆè¿™æ¬¡æ”¹åã€‚å› ä¸ºè¿™ä¸ªæ–¹æ³•å¯èƒ½è¢«å¾ˆå¤šå…¶ä»–的地方调用到,而那些调用它的代ç å¯èƒ½æ˜¯ç”±å…¶ä»–äººæ¥ æ‹¥æœ‰çš„ã€‚åœ¨è¿™ç§æƒ…å†µä¸‹ï¼Œä½ å¿…é¡»å°†æ”¹å之å‰çš„æ—§æ–¹æ³•æ ‡è®°ä¸ºâ€œä¸æŽ¨è使用â€ï¼Œå¹¶ä½¿å…¶è°ƒç”¨æ”¹ååŽçš„æ–°æ–¹æ³•。这会大大é™ä½Žä½ çš„æ•ˆçŽ‡ï¼Œå¹¶ä¸”è®©ä½ æ„Ÿåˆ°éžå¸¸çƒ¦èºã€‚而在弱 ä»£ç æ‰€æœ‰æƒçš„æ¨¡å¼ä¸‹ï¼Œä½ 也许就完全å¯ä»¥ç›´æŽ¥ä¿®æ”¹é‚£ä¸ªæ–¹æ³•çš„åç§°ï¼Œå¹¶ä¿®æ”¹å®ƒæ‰€æœ‰çš„è°ƒç”¨è€…ã€‚è¿™å¹¶ä¸æ˜¯è¯´æ²¡æœ‰äººå¯¹å…¶ä»–的代ç 负责,åªä¸è¿‡ä»–们å¯ä»¥ç»™ä½ 一定程度的 æ–¹ä¾¿ï¼Œè®©ä½ å®Œæˆä½ çš„ä¿®æ”¹ã€‚å¦‚æžœä½ ä½¿ç”¨äº†è‡ªåŠ¨åŒ–é‡æž„工具的è¯ï¼Œè¿™æ ·çš„æ–¹ä¾¿å°±å°¤å…¶é‡è¦äº†â€”—在这ç§å·¥å…·ä¸ï¼Œç»™ä¸€ä¸ªæ–¹æ³•改ååªéœ€è¦ç‚¹å‡»ä¸€ä¸ªæŒ‰é’®å¹¶è¾“入新的åç§°å°± 行了。如果è¦é€‰æ‹©å¼±ä»£ç æ‰€æœ‰æƒæˆ–è€…é›†ä½“ä»£ç æ‰€æœ‰æƒçš„开呿¨¡å¼ï¼Œå°±å¿…é¡»åŒæ—¶é€‰æ‹©ä¸€ä¸ªåŒæ¥æŽ§åˆ¶ç³»ç»Ÿæ¥è¿›è¡Œæºç 控制。CVS å°±æ˜¯è¿™æ ·çš„ä¸€ä¸ªç³»ç»Ÿï¼Œå®ƒå…è®¸å¤šäººåŒæ—¶æ›´æ–°åŒä¸€å—代ç ï¼Œå¹¶é€šè¿‡å†²çªæ£€æµ‹ç‰æŠ€æœ¯æ¥ä¿è¯ä¸ä¼šæŠŠäº‹æƒ…æžä¹±ã€‚
è¦ä¸è¦æ•æ·å¼€å‘?
记者:什么时候ä¸åº”è¯¥ä½¿ç”¨æ•æ·å¼€å‘?
Fowlerï¼šå½“ä½ èƒ½èŽ·å¾—å›ºå®šä¸å˜çš„éœ€æ±‚æ—¶ã€‚å¦‚æžœä½ çŸ¥é“需求是固定ä¸å˜çš„ï¼Œä½ ä¹Ÿäº†è§£è‡ªå·±è¦ä½¿ç”¨çš„æŠ€æœ¯ï¼Œå¯¹äºŽå¼€å‘å›¢é˜Ÿçš„èƒ½åŠ›ä¹Ÿå¾ˆæ¸…æ¥šï¼Œé‚£ä¹ˆä¼ ç»Ÿçš„è½¯ä»¶å·¥ç¨‹æ–¹æ³•ä¼šæ›´åˆé€‚。
è®°è€…ï¼šä½ é‡åˆ°è¿‡è¿™ç§æ—¶å€™å—?
Fowler: å‘µå‘µï¼Œé—®é¢˜å°±åœ¨è¿™é‡Œï¼Œä¸æ˜¯å—?实际上,我们总是é‡åˆ°æ— æ³•ç¡®å®šçš„éœ€æ±‚ã€‚é‚£ä¹ˆï¼Œä½ è¦æ€Žä¹ˆé¢å¯¹è¿™äº›å˜åŒ–ä¸å®šçš„éœ€æ±‚ï¼Ÿæ•æ·å¼€å‘者们说:好å§ï¼Œè®©æˆ‘们å‡è®¾â€œæ— 法确定 çš„éœ€æ±‚â€æ˜¯éšæ—¶éƒ½å˜åœ¨çš„,并æå‡ºä¸€ç§èƒ½å¤ŸåŒ…容它的开å‘过程——实际上,还ä¸ä»…仅是包容,而是欢迎这ç§ä¸ç¡®å®šæ€§ã€‚ä¼ ç»Ÿçš„è½¯ä»¶å·¥ç¨‹æ–¹æ³•æ•™æˆ‘ä»¬å¦‚ä½•å°†éœ€æ±‚å›ºå®šä¸‹ æ¥ã€‚Alan Cooperã€Larry Constantine å’ŒLucy Lockwood 所æå€¡çš„交互å¼è®¾è®¡æ–¹æ³•å¾ˆå¤§ç¨‹åº¦ä¸Šæ£æ˜¯ä¸ºäº†è¿™ä¸ªç›®çš„。有很多人从事于需求工程的工作,他们也是æœè¿™ä¸ªæ–¹å‘在努力。他们说:“我们è¦å°†éœ€æ±‚固定下æ¥ã€‚为了这 ä¸ªç›®æ ‡ï¼Œæˆ‘ä»¬å…¨åŠ›ä»¥èµ´ã€‚â€ä½†æ˜¯ï¼Œå¯¹äºŽä¸€ä¸ªé¡¹ç›®ï¼Œä½ å¿…é¡»è¦åˆ¤æ–它的需求是å¦å¤©ç”Ÿå°±æ— 法固定。如果有å¯èƒ½å°†éœ€æ±‚å›ºå®šï¼Œè¿™æ ·çš„å¼€é”€æ˜¯å¦å€¼å¾—ï¼Ÿä¼ ç»Ÿæ–¹æ³•å’Œæ•æ·å¼€å‘方法,哪一ç§çš„æ€§ä»·æ¯”更高?说实è¯ï¼Œæˆ‘对这两者之间的æƒè¡¡å¹¶æ²¡æœ‰å¤ªå¤šçš„å‘言æƒï¼Œå› ä¸ºæˆ‘å‡ ä¹Žéƒ½æ²¡çœ‹åˆ°è¿‡æœ‰è°æˆåŠŸåœ°å°†éœ€æ±‚å›ºå®šä¸‹æ¥çš„。
关键è¯ï¼šæ•æ·å¼€å‘
什么是结对编程
结对编程技术是一个éžå¸¸ç®€å•和直观的概念:两ä½ç¨‹åºå‘˜è‚©å¹¶è‚©åœ°å在åŒä¸€å°ç”µè„‘å‰åˆä½œå®ŒæˆåŒä¸€ä¸ªè®¾è®¡ã€‚åŒä¸€ä¸ªç®—法ã€åŒä¸€æ®µä»£ç 或åŒä¸€ç»„测试ã€ä¸Žä¸¤ä½ç¨‹åºå‘˜å„自独立工作相比.结对编程往往åªéœ€èŠ±è´¹å¤§çº¦ä¸€åŠçš„æ—¶é—´å°±èƒ½ç¼–å†™å‡ºè´¨é‡æ›´é«˜çš„代ç , 但是,人与人之间的åˆä½œä¸æ˜¯ä¸€ä»¶ç®€å•çš„äº‹æƒ…â€”â€”å°¤å…¶å½“äººä»¬éƒ½æ—©å·²ä¹ æƒ¯äº†ç‹¬è‡ªå·¥ä½œçš„æ—¶å€™ã€å®žæ–½ç»“对编程技术将给软件项目的开å‘工作带æ¥å¥½å¤„ï¼Žåªæ˜¯è¿™äº›å¥½å¤„å¿…é¡»ç»è¿‡ç¼œå¯†çš„æ€è€ƒå’Œè®¡åˆ’æ‰èƒ½çœŸæ£ä½“现出æ¥ã€‚而å¦ä¸€æ–¹é¢ï¼Œä¸¤ä¸ªæœ‰ç»éªŒçš„人å¯èƒ½ä¼šå‘现é…对编程里没有什么技能的转移,但是让他们在ä¸åŒçš„æŠ½è±¡å±‚次解决åŒä¸€ä¸ªé—®é¢˜ä¼šè®©ä»–们更快地找到解决方案,而且错误更少。
结对编程还有其他多ç§å¥½å¤„:
1ã€ç›´æŽ¥çš„ã€è¿žç»çš„代ç 回顾。
2ã€ä¸Žåˆ«äººå·¥ä½œä¼šå¢žåŠ è´£ä»»å’Œçºªå¾‹æ€§ã€‚
3ã€åŒæ—¶ç†è§£ä¸€ä¸ªé—®é¢˜ã€‚
4ã€åœ¨æœ‰äººç›¯ç€çš„æ—¶å€™å޻巿‡’è¦å›°éš¾å¾—多ï¼
两个程åºå‘˜å…·æœ‰ç›¸åŒçš„缺点和盲点的å¯èƒ½æ€§å¾ˆå°ï¼Œæ‰€ä»¥æˆ‘ä»¬å½“æˆ‘ä»¬é‡‡ç”¨ç»“å¯¹ç¼–ç¨‹çš„æ—¶å€™ä¼šèŽ·å¾—ä¸€ä¸ªå¼ºå¤§çš„è§£å†³æ–¹æ¡ˆã€‚è€Œè¿™ä¸ªè§£å†³æ–¹æ¡ˆæ°æ°æ˜¯å…¶å®ƒè½¯ä»¶å·¥ç¨‹æ–¹æ³•å¦ä¸æ‰€æ²¡æœ‰çš„。
在我们平时的编程当ä¸ï¼Œå¦‚æžœé‡åˆ°ä¸€ä¸ªéžå¸¸éš¾è§£å†³çš„问题(困难到对该项目产生厌烦的æ€åº¦)ï¼Œé‚£ä¹ˆä½ åŠ¿å¿…ä¼šå¸Œæœ›å¯»æ±‚å¸®åŠ©ï¼Œæ— è®ºæ˜¯ä»Žä¿¡æ¯é‡åºžå¤§çš„Internetç½‘ç»œé‡Œï¼Œè¿˜æ˜¯ä»Žèº«è¾¹çš„æŠ€æœ¯å¤§å¸ˆé‡Œï¼Œä½ éƒ½ä¼šæ‹¼äº†è€å‘½åŽ»è§£å†³(å‰ææ˜¯ä½ æœ‰å¯¹è®¡ç®—æœºçŸ¥è¯†çš„åŠ¿çˆ±)。这个时候ä¸å¦¨é‡‡ç”¨ç»“对编程试一下,其它的ä¸è¯´ï¼Œå¯èƒ½æ„Ÿè§‰å°±ä¸åŒã€‚
关键è¯ï¼šæ•æ·å¼€å‘,结对编程