ï»??xml version="1.0" encoding="utf-8" standalone="yes"?>欧美性受ⅹ╳╳╳黑人a性爽,麻豆成人av,成人动漫免费在线观看http://www.aygfsteel.com/freeman1984/category/46247.html STANDING ON THE SHOULDERS OF GIANTSzh-cnMon, 20 Jun 2011 15:54:13 GMTMon, 20 Jun 2011 15:54:13 GMT60大家都用什么bug½Ž¡ç†è½¯äšgåQ?/title><link>http://www.aygfsteel.com/freeman1984/archive/2011/06/20/352649.html</link><dc:creator>@joe</dc:creator><author>@joe</author><pubDate>Mon, 20 Jun 2011 03:38:00 GMT</pubDate><guid>http://www.aygfsteel.com/freeman1984/archive/2011/06/20/352649.html</guid><wfw:comment>http://www.aygfsteel.com/freeman1984/comments/352649.html</wfw:comment><comments>http://www.aygfsteel.com/freeman1984/archive/2011/06/20/352649.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.aygfsteel.com/freeman1984/comments/commentRss/352649.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/freeman1984/services/trackbacks/352649.html</trackback:ping><description><![CDATA[  公司以前用的mantisåQŒå†’失功能太½Ž€å•了(ji¨£n)åQŒäºŒ‹Æ¡å¼€å‘比较困难。现在想和公司的™å¹ç›®½Ž¡ç†è½¯äšgòq›_°åQˆjava语言åQ‰é›†æˆï¼Œä¸çŸ¥é“大家有什么经验分享一下?åQŸï¼Œæˆ–者介¾lå‡ ä¸ªäºŒ‹Æ¡å¼€å‘容易一点的åQ?img src ="http://www.aygfsteel.com/freeman1984/aggbug/352649.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/freeman1984/" target="_blank">@joe</a> 2011-06-20 11:38 <a href="http://www.aygfsteel.com/freeman1984/archive/2011/06/20/352649.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>敏捷开发中˜q›åº¦çš„æŠŠæ?/title><link>http://www.aygfsteel.com/freeman1984/archive/2011/03/23/346861.html</link><dc:creator>@joe</dc:creator><author>@joe</author><pubDate>Wed, 23 Mar 2011 07:43:00 GMT</pubDate><guid>http://www.aygfsteel.com/freeman1984/archive/2011/03/23/346861.html</guid><wfw:comment>http://www.aygfsteel.com/freeman1984/comments/346861.html</wfw:comment><comments>http://www.aygfsteel.com/freeman1984/archive/2011/03/23/346861.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/freeman1984/comments/commentRss/346861.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/freeman1984/services/trackbacks/346861.html</trackback:ping><description><![CDATA[<p>™å¹ç›®¾lç†è¢«é—®åˆ°æœ€å¤šçš„问题ž®±æ˜¯åQ?#8220;˜q™ä¸ª™å¹ç›®ä»€ä¹ˆæ—¶å€™æ‰èƒ½å®Œæˆï¼Ÿ”</p> <p>被问的时候,可能™å¹ç›®æ‰å®šä¸‹æ¥åQŒä»…仅知道大概的功能模块åQŒéžåŠŸèƒ½æ€§éœ€æ±‚è¿˜æ¨¡ç³Šä¸æ¸…åQŒç”šè‡›_›¢é˜Ÿæˆå‘˜éƒ½æ²¡åˆ°ä½ã€‚但是上¾U§ã€é”€å”®ã€å®¢æˆäh€¥åˆ‡åœ°è¦çŸ¥é“åQŒè¿™ä¸ªé¡¹ç›®ä»€ä¹ˆæ—¶å€™æ‰èƒ½å®Œæˆï¼Ÿ</p> <p>被问的时候,也可能项目已临近¾l“束åQŒæˆ–者说临近当初计划的交付日期。然而待完成的功能还有一堆,‹¹‹è¯•出来的bug有一大堆åQŒå®¢æˆ·åˆæå‡ºäº?ji¨£n)æ–°çš„éœ€æ±‚ï¼Œå›¢é˜Ÿæ­£æœ‰äºø™¦¼›»èŒ …。但是上¾U§ã€é”€å”®ã€å®¢æˆ·éžå¸¸æ€¥åˆ‡åœ°è¦çŸ¥é“åQŒè¿™ä¸ªé¡¹ç›®åˆ°åº•什么时候才能完成?</p> <p>˜q™è¿˜ä¸ç®—¾pŸç³•。更头疼的问题是åQ?#8220;再有三周åQŒé¡¹ç›®åº”该完成了(ji¨£n)吧?”</p> <p>因䨓(f¨´)后者根本不是问题,而是命ä×o(h¨´)。项目经理必™å»è¦èƒ½å¤Ÿåˆç†è§£é‡Šä¸ÞZ»€ä¹ˆä¸‰å‘¨ä¸èƒ½å¤Ÿå®Œæˆ™å¹ç›®åQ›æˆ–者说明在三周内,能够完成什么ã€?/p> <p>我们都用˜q‡MS ProjectåQ?但是那上面的漂亮表格对这æ ïL(f¨¥ng)š„困境毫无帮助。相反,正是Project 中的甘特囑֒Œæ—¥ç¨‹è¡¨ï¼ŒåŸ‹ä¸‹äº?ji¨£n)陷阱。因为,在Project 中无法预估需要多ž®‘工作日才能完成模糊不清的需求,也无法体现实际情况发生变化后对进度的影响ã€?/p> <p>å½“æˆ‘ä»¬è®¨è®ø™¿›åº¦çš„æ—¶å€™ï¼Œå…¶å®žåŒ…含äº?ji¨£n)两个未知的变量。第一是完成需求所要的工作量,包括需求定义、开发内容边界;½W¬äºŒæ˜¯å›¢é˜Ÿçš„工作能力åQŒåŒ…括成员的行业知识专业技能,成员之间、成员和外部的沟通能力,½{‰ç­‰ã€?/p> <p>关键ž®±åœ¨äºŽï¼Œ˜q™ä¸¤™åšwƒ½æ˜¯å˜é‡ã€‚如果ä“Q务是搬一千块砖头åQŒæ¯åˆ†é’Ÿæ¯äh能搬10块,那么¾l“果是显而易见的ã€?/p> <p><span>在敏捷开发中åQŒé‡‡ç”¨ç›¸å¯¹ä¼°½Ž—å’Œ˜q­ä»£æ±‚精的方法来处理™å¹ç›®˜q›åº¦çš„问题ã€?/span></p> <p>首先是工作量。用估算代码行数或者界面元素的方式åQŒå°±åƒè®ºæ–¤å–ä¹¦ä¸€æ øP¼Œåªé€‚用于粗制滥造的软äšg生äñ”˜q‡ç¨‹ã€‚用户需要的òq¶ä¸æ˜¯ä»£ç æˆ–者按钮,而是可靠易用的功能ã€?/p> <p>在敏捷开发方式中åQŒå…ˆç”Þq”¨æˆ·å’Œè®¾è®¡äººå‘˜¾_—略估计各个功能模块的相对规模和隑ֺ¦åQŒç»™å‡ÞZ¸€å®šçš„分倹{€‚分å€ég¸ä»£è¡¨å…·ä½“人月åQŒè“v相对比较的作用。例如有查询、显½Cºã€ä¿®æ”¹ä¸‰ä¸ªæ¨¡å—,如果实现昄¡¤ºæ¨¡å—的工作量æ˜?0分,那么查询模块可能æ˜?5åˆ†ï¼Œè€Œä¿®æ”¹äØ“(f¨´)20分ã€?/p> <p>下一步,选择一个工作量估分最低的模块åQŒä¾‹å¦‚这里是昄¡¤ºæ¨¡å—åQŒç„¶åŽè¿›ä¸€æ­¥è€ƒé‡å…¶å·¥ä½œé‡ã€‚例如要准备数据库、设计界面、执行查询,昄¡¤ºå†…容½{‰ç­‰ã€‚假设这轮估½Ž—得出此模块需è¦?0人天åQŒä»Žè€Œå¾—出单位分值对应的人天ä¸?åQ›é‚£ä¹ˆï¼Œæ•´ä¸ª™å¹ç›®ž®±éœ€è¦?5人天ã€?/p> <p>˜q™ä¸ªä¼°ç®—建立在对™å¹ç›®çš„初步了(ji¨£n)解上åQŒä¸»è¦ä¾èµ–项目经理的¾léªŒã€‚有偏差åQŸæ²¡å…³ç³»ã€‚接下来通过˜q­ä»£æ¥æ±‚¾_¾ã€‚先来实现显½Cºæ¨¡å—,如果事实上花费了(ji¨£n)12人天åQŒé‚£ä¹ˆæ ¹æ®æ¯”例关¾p»ï¼Œå‰©ä½™å†…容的估½Ž—大¾U¦å°±æ˜?2人天ã€?/p> <p>当然åQŒæ¯”例关¾pÖM¹Ÿä¸æ˜¯ä¸€æˆä¸å˜çš„。随着模块的逐个完成åQŒé¡¹ç›®ç»ç†å¯¹™å¹ç›®çš„认识也在加深,他可以再调整剩余模块的相对分倹{€?/p> <p>在实际操作中åQŒé¡¹ç›®ç»ç†é¦–先按照优先çñ”排列功能模块。然后把高优先çñ”的模块尽可能地细分,再选择分值最ž®çš„æ¨¡å—开始开发。统计æ€Õd·¥ä½œé‡æ—Óž¼ŒæŒ‰æ¯”例篏加其他模块的工作量,òq¶åŠ ä¸€å®šçš„è°ƒæ•´¾pÀL•°åQŒå› ä¸ºæ¨¡å—的复杂度不是线性增长的。每‹Æ¡è„P代开发完成后åQŒé€æ­¥é™ä½Žè°ƒæ•´¾pÀL•°ã€‚通常4~5‹Æ¡è„P代后åQŒå¯ä»¥å°†è°ƒæ•´¾pÀL•°å½’é›¶ã€?/p> <p>在上面的例子中,½W¬ä¸€‹Æ¡ä¼°½Ž—的初步¾l“æžœæ˜?5人天åQŒå› ä¸ºå®Œå…¨æ˜¯å‡­ç»éªŒï¼Œå› æ­¤è¦ç»™è¾ƒå¤§çš„调整系敎ͼŒæ¯”如è¯?.4åQŒå› æ­¤ç»™å‡ºçš„ä¼°ç®—å·¥ä½œé‡åŒºé—´äØ“(f¨´)[45*0.6,45*1.4],å?7åˆ?3äººå¤©ä¹‹é—´ã€‚äØ“(f¨´)保险赯‚§åQŒé¡¹ç›®ç»ç†ä¸ŠæŠ¥çš„å·¥ä½œé‡äØ“(f¨´)70人天ã€?/p> <p>½W¬äºŒ‹Æ¡ä¼°½Ž—,剩余内容的初步估½Ž—䨓(f¨´)42åQŒè°ƒæ•´ç³»æ•îC¸‹é™äØ“(f¨´)0.3åQŒå› æ­¤ç»™å‡ÞZ¼°½Ž—åŒºé—´äØ“(f¨´)30åˆ?0人天之间。依此类推,通过不断˜q­ä»£åQŒå¯¹å‰©ä½™å·¥ä½œé‡çš„ä¼°ç®—ž®†è¶Šæ¥è¶Š¾_„¡¡®ã€?/p> <p><strong>˜q™æ ·ä¼°ç®—的好处在哪里åQ?/strong> </p> <p>首先åQŒå·¥ä½œé‡å˜é‡çš„很大一部分因素åQŒå­˜åœ¨äºŽéžåŠŸèƒ½éœ€æ±‚ï¼Œä¾‹å¦‚ç•Œé¢çš„ç¾Žè§‚ç¨‹åº¦ã€‚è€ŒåŒä¸€™å¹ç›®çš„不同模块之é—ß_(d¨¢)¼ŒéžåŠŸèƒ½éœ€æ±‚å¾€å¾€æ˜¯ä¸€è‡´çš„åQŒç›¸å¯¹ä¼°½Ž—法˜q‡æ×o(h¨´)äº?ji¨£n)这一层复杂度。团队能力这一变量因素也是如此。当ç„?d¨°ng)ž¼Œéšç€™å¹ç›®çš„进展,成员的开发能力应该有一定的上升åQŒä½†éšç€åŠ ç­å‡ºå·®½{‰å› ç´ ï¼ŒæŠ•å…¥½E‹åº¦ä¹Ÿå¯èƒ½ä¸‹é™ï¼Œå› è€Œä¼š(x¨¬)ç›æ€º’抉|¶ˆã€‚æ€ÖM¹‹åœ¨å‘¨æœ?个月以内的项目中åQŒå¾ˆž®‘出现团队工作能力戏剧性变化的情åŞ。因此相对估½Ž—也˜q‡æ×o(h¨´)äº?ji¨£n)这个复杂度ã€?/p> <p>其次åQŒè„P代求¾_„¡š„方式让项目经理对估算旉™—´æ›´æœ‰æŠŠæ¡ã€‚最初出现偏差是必然的,但只要团队稳定,没有大的需求变动,估算范围ž®†è¿…速收¾~©ã€‚这比一‹Æ¡æ€§æŠ¥æ•°æ›´å‡†ç¡®ã€?/p> <p>它的额外好处是,敏捷开发是遵åó@优先¾U§çš„åQŒå³ä½¿å¯¹å‰©ä½™æ—‰™—´åQˆå³ä½Žä¼˜å…ˆçñ”模块的开发时é—ß_(d¨¢)¼‰(j¨ª)的估½Ž—不十分准确åQŒåª„(ji¨£ng)响也不是非常大ã€?</p> <p>å¯ÒŽ(gu¨©)¯”一下甘特图方式åQŒåœ¨å¼€å‘初期就要把各个模块的开发时间估½Ž—出来以¾lŸè®¡æ€»é‡åQŒè¿™ž®±æ˜¯ç€‘布开发的模式ã€?</p> <p>˜q›åº¦é—®é¢˜çš„另一斚w¢åQŒæ˜¯™å¹ç›®¾lç†å¦‚何äº?ji¨£n)解团队以å?qi¨¢ng)每个开发äh员的开发速度。当ä»ÕdŠ¡åˆ†é…ä¹‹åŽåQŒé¡¹ç›®ç»ç†å¦‚何做到心(j¨©)中有敎ͼŒä¼°ç®—ä»ÕdŠ¡å®žé™…å®Œæˆæ—‰™—´ã€?/p> <p>敏捷开发过½E‹ä¸­åQŒç”±å¼€å‘äh员自己来估算完成该ä“Q务所需要的旉™—´ã€‚当ç„?d¨°ng)ž¼Œæ¯ä¸ªäººçš„能力不同åQ›æ¯ä¸ªäh的心(j¨©)态也不同åQŒæœ‰çš„äh保守åQŒæœ‰çš„äh乐观。没关系åQŒè¿˜æ˜¯é ˜q­ä»£æ¥é€æ­¥æ±‚ç²¾ã€?/p> <p>在每天的例会(x¨¬)上,开发äh员被要求对当前ä“Q务的剩余开发时间做重估。不同于Project ¾lŸè®¡æ¯äh每天在ä“Q务中èŠÞp´¹äº?ji¨£n)多ž®‘æ—¶é—ß_(d¨¢)¼Œæ•æ·æ–¹å¼åªå…³å¿?j¨©)è¿™™å¹ä“Q务还需要多ž®‘时间去完成åQŒç›´åˆ°å½’é›Óž¼Œç„¶åŽå†æ¥¾lŸè®¡å®žé™…的工作时间ã€?/p> <p>ä¸ÞZ»€ä¹ˆï¼Ÿå› äØ“(f¨´)¾lŸè®¡å¼€å‘过½E‹ä¸­çš„花è´ÒŽ(gu¨©)—¶é—´æ˜¯æ¯«æ— æ„ä¹‰çš„。这和搬砖头不同åQŒä¹Ÿè®¸æ˜¨å¤©ç”¨äº?个小时没有一点进展,今天一旦想通了(ji¨£n)ž®×ƒº‹åŠåŠŸå€ã€‚æˆ‘ä»¬çœŸæ­£å…³å¿?j¨©)çš„åQŒå°±æ˜¯åˆ°åº•还需要多ž®‘时间来完成ä»ÕdŠ¡åQŒè€Œä¸æ˜¯å·²¾lèбè´ÒŽ(gu¨©)Ž‰ä¸å¯æ¢å¤çš„æ—¶é—´æˆæœ¬ã€?/p> <p>在每天例ä¼?x¨¬)中åQŒé¡¹ç›®ç»ç†éœ€è¦æ³¨æ„æ—¶é—´æ›²¾U¿ä¿æŒæ°´òq³çš„æˆå‘˜åQŒä»–是不是遇到瓶颈了(ji¨£n)åQŒæ˜¯å¦éœ€æ±‚帮助?也要留意旉™—´æ›²çº¿ä¸‹é™òq…度˜q‡å¤§çš„æˆå‘˜ï¼Œä»–发çŽîCº†(ji¨£n)什么好的办法,有没有低估需求?˜q™æ ·åQŒé¡¹ç›®ç»ç†ä¼š(x¨¬)更面向结果,只要按计划保证质量完成ä“Q务就行,成员到底èŠ×ƒº†(ji¨£n)多少旉™—´æ˜¯ä¸ªäººçš„事。传¾lŸåšæ³•记录每个äh每天的工作内容,½W¬ä¸€æ˜¯å› ¾Jçè€Œå¤±çœŸã€‚å…¶‹Æ¡ï¼Œä¸€æ—¦ä¸Š¾U§å‘现某人工作时间不够(即便他完成了(ji¨£n)ä»ÕdŠ¡åQ‰ï¼Œå¿ä¸ä½ä¼š(x¨¬)‹z¾æ–°ä»ÕdŠ¡åQŒä»Žè€Œé€ æˆ­‘Šå¹²‹z»è¶Šå¤šï¼Œåè¿‡æ¥æ‰“å‡È¨‹åºå‘˜çš„积极性ã€?/p> <p>敏捷估算的关键之处,是把成员能力˜q™ä¸ªå˜é‡çš„ä¼°½Ž—,交给最合适的人去做,即程序员本äh。然后通过比较历次˜q­ä»£æ—¶çš„预估和实际时é—ß_(d¨¢)¼Œ¾l™å‡ºæ ¡æ­£¾pÀL•°åQŒä»¥é¿å…½E‹åºå‘˜è¿‡äºŽä¿å®ˆæˆ–˜q‡äºŽä¹è§‚。这肯定不是¾lå¯¹å‡†ç¡®çš„,但效果往往比项目经理自己拍脑袋估算åQŒç„¶åŽå¼ºè¡ŒæŒ‡å®šdeadline 要好得多ã€?/p> <p>在敏捷开发中åQŒåšè®¡åˆ’比计划本íw«æ›´é‡è¦ã€‚项目经理需要时åˆÕd‘前考虑åQŒè€ƒè™‘各种动态因素,而不是死报着计划本èín。在˜q›åº¦ä¼°ç®—的时候,™å¹ç›®¾lç†åº”该在不同阶ŒDµï¼Œæ ÒŽ(gu¨©)®å®žé™…情况åQŒç»™å‡ºåˆä¹Žæƒ…理的回答ã€?/p> 转蝲自:(x¨¬)http://yale.javaeye.com/blog/966689 <img src ="http://www.aygfsteel.com/freeman1984/aggbug/346861.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/freeman1984/" target="_blank">@joe</a> 2011-03-23 15:43 <a href="http://www.aygfsteel.com/freeman1984/archive/2011/03/23/346861.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>我的创业体会(x¨¬)和大公司的做事比è¾?/title><link>http://www.aygfsteel.com/freeman1984/archive/2010/10/01/333604.html</link><dc:creator>@joe</dc:creator><author>@joe</author><pubDate>Fri, 01 Oct 2010 03:09:00 GMT</pubDate><guid>http://www.aygfsteel.com/freeman1984/archive/2010/10/01/333604.html</guid><wfw:comment>http://www.aygfsteel.com/freeman1984/comments/333604.html</wfw:comment><comments>http://www.aygfsteel.com/freeman1984/archive/2010/10/01/333604.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/freeman1984/comments/commentRss/333604.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/freeman1984/services/trackbacks/333604.html</trackback:ping><description><![CDATA[<p>文章转蝲自:(x¨¬)http://www.javaeye.com/topic/646406<br /> <br /> <br /> </p> 工作五年åQŒä¸€æ™ƒå·²òq´è¿‡ä¸‰åäº?ji¨£n)。读研时åQŒç‹¬ç«‹åš™å¹ç›®åQŒæ¯•业头三年åQŒä¸»è¦åœ¨å¤§å…¬å¸å·¥ä½œï¼ŒåŽæ¥åQŒä¹Ÿž®±æ˜¯08òqß_(d¨¢)¼ŒåŠåˆ›ä¸šã€‚具体点åQŒåˆä¼™äh吧,自己负责IT部门åQŒåˆ°çŽ°åœ¨6人,公司æ€Õd…±20来ähåQŒæ—…æ¸æ€¸šã€‚这两年严酷的创业经历,让我­‘Šå‘觉得½Ž¡ç†(做事)åQŒä»¥å?qi¨¢ng)领å?带äh、待人,不是½Ž¡äh)的重要性。因为,随着¾l„ç»‡çš„æ‰©å¤§ï¼Œæ··äØ•åº¦æ— å½¢ä¸­ž®×ƒ¼š(x¨¬)增大åQŒç®¡ç†å’Œé¢†å¯¼åQŒå°±æ˜¯è®©˜q™ç§æ··äؕ重归有序åQŒé‡å½’单äºÞZ½œæˆ˜é‚£¿Uæ„å›‘Ö’Œè¡ŒåŠ¨çš„é«˜åº¦ç»Ÿä¸€ã€?<br /> <br />     说得功利点吧åQŒä¸€ä¸ªäh的胦(ch¨³)富和其媄(ji¨£ng)响力是成正比的。媄(ji¨£ng)响力本质上就是对他ähçš„ä­h(hu¨¢n)倹{€‚比如,郎_xian_评的出场费一天超˜q?5万。作为技术äh员,如果我们只能影响周边几个人,那么我们凭什么拿那么高的报酬åQŒé™¤éžæˆ‘们做的事情媄(ji¨£ng)响了(ji¨£n)很多人,比如杨勃的豆瓣网。所以,我还是觉得,技术äh员往高处发展åQŒé€æ¸åº”该有管理意识、培养自å·Þqš„½Ž¡ç†èƒ½åŠ›ã€‚æŠ€æœ¯ä»Žä¹¦æœ¬ä¸Šå¯ä»¥å­¦åˆ°å¾ˆå¤šï¼Œ½Ž¡ç†˜q˜çœŸå¾—实践,书上看到的,你觉得很弱智的问题,比如盲目扩张åQŒè‡ªå·×ƒº²íw«ç»åŽ†æ—¶åQŒä¸€æ ·ä¼š(x¨¬)犯,也许是行ä¸ÞZ¹ (f¨¤n)惯在起作用,看书不èƒö以改变行为ã€?<br /> <br />     回到正题上ã€?<br />     也许是自己曾¾låœ¨è¾ƒå¤§å…¬å¸æˆ–团队的做事ä¹?f¨¤n)惯和视野,刚创业时åQŒç”¨åœ¨è¿™¿Uå°å›¢é˜Ÿçš„商业项目开发上åQŒå‡ ä¹Žæƒ¨è´¥ã€?<br />     先说™å¹ç›®å¼€å‘这块吧ã€?<br />     大家知道åQŒé¡¹ç›®ç®¡ç†å’Œ˜q‡ç¨‹½Ž¡ç†æ˜¯ä¸¤ç äº‹åQŒå‰è€…关注目标和˜q›åº¦åQŒæˆæœ¬å’Œæ”¶ç›ŠåQ›åŽè€…关注做事流½E‹ã€æ–¹æ³•ã€?<br />     ™å¹ç›®½Ž¡ç†åQŒä½“ä¼?x¨¬)最æ·Þqš„åQŒå°±æ˜¯ç›®æ ‡å’Œä»ÕdŠ¡åˆ†è§£ã€è¿›åº¦æŽ§åˆÓž¼Œä»¥åŠ(qi¨¢ng)沟通ã€?<br /> <br />     <strong>™å¹ç›®½Ž¡ç†è½¯äšg</strong> <br />     从大公司出来的ähåQŒæˆ‘æƒÏxœ€å–œæ¬¢çŽ©çš„åQŒå°±æ˜¯å€ŸåŠ©äºŽé¡¹ç›®ç®¡ç†èÊYä»?核心(j¨©)是甘特图)。市(j¨¬ng)面上的大多数知名的项目管理èÊYä»Óž¼Œæ— è®ºæ˜¯æ¡Œé¢ç‰ˆ˜q˜æ˜¯¾|‘页版的åQŒæˆ‘都试˜q‡ã€‚当然最后也选择äº?ji¨£n)一‹Æ¾ï¼š(x¨¬)ConceptDraw ProjectåQŒç”¨äº?ji¨£n)一òq´å¤šåQŒä¹Ÿå¤šå°‘有些用。但最后还是发玎ͼŒå®ƒå…¶å®žå¯¹™å¹ç›®˜q›åº¦å’Œè´¨é‡å…³¾pÕdƈ不大。也许,一个Excel表格更实用ã€?<br />      ™å¹ç›®½Ž¡ç†è½¯äšgåQŒæœ¬è´¨ä¸Šæ˜¯è§£å†³ä¸€¿Uæ²Ÿé€šå’ŒèŒè´£åˆ†é…çš„问题。比如,一个项目,折叠成一个三层树(w¨¨i)形结构,老板只关å¿?j¨©)第一层,也就是整体进度;中间是项目经理关注的功能层,最后一层,也就是具体的ä»ÕdŠ¡åQŒæ˜¯å¼€å‘äh员关注的。想惻I¼Œå¦‚果没有˜q™çŽ©æ„ï¼Œä½ æ€Žä¹ˆå‘Šè¯‰å…¶å®ƒ™å¹ç›®òq²ç³»äºø™¿›åº¦ï¼Ÿä½†åˆå¼•出几个问题åQ?<br />     靠文档来沟通,˜q˜æ˜¯é ä¿¡ä»? å¤ªåœ¨ä¹Žæ–‡æ¡£ï¼Œå¾€å¾€å¯ÆD‡´æ¯å¤©åŽÕd…³æ³¨æ–‡æ¡£å¦‚何漂亮、有说服力,òq¶äØ“(f¨´)此花大量旉™—´åQŒè€Œä¸æ˜¯é¡¹ç›®å¦‚何漂亮。另外,是否有文档就可以防止扯皮、兑现承诺?我们是关于项目目标,˜q˜æ˜¯å…Ïx³¨å½¼æ­¤çš„博弈? <br /> <br />     ˜q›åº¦åå·® 创业型项目,往往都是以前没有接触˜q‡ï¼Œå…¶è¿›åº¦è¯„估往往有很大误差,比如业务需求的挖掘和变化,技术难点,开发äh员素质。我们是å…Ïx³¨˜q›åº¦åQŒè¿˜æ˜¯å…³æ³¨é¡¹ç›®æœ¬íw«çš„质量åQŸä¸¤è€…都要,但如何兼™å¾ï¼Ÿè™½ç„¶æœ‰æ–¹æ³•å­¦åQŒæ¯”如砍掉优先çñ”低的åQŒä½†ä½ æ€Žä¹ˆè®©è€æ¿ç›æ€¿¡æŸä¸ªæ ¸å¿ƒ(j¨©)功能ž®±å¾—四天旉™—´ã€?<br />     在我们的˜q›åº¦è®¾è®¡ä¸åˆç†æƒ…况下åQŒæ˜¯å¦å¼€å‘äh员完成甘特图(WBS)下的ä»ÕdŠ¡ž®±okåQŸè¿œ˜qœä¸å¤Ÿï¼Œä»ÕdŠ¡åˆ†å¾—å¤ªç»†åQŒå¾€å¾€é™åˆ¶äº?ji¨£n)开发äh员的创造性和自我评估能力åQŒå¦‚果提前两天完成呢åQ?<br />     我们现在是以™å¹ç›®½Ž¡ç†è½¯äšg䏸™¾…åQŒä“Q务的下达主要以邮件传达,每周一上午的周例会(x¨¬)ä¼?x¨¬)白板宣布。我发现白板比投å½×ƒ?n¨¨i)APPT好用ã€?<br /> <br />    <strong>关于规范</strong> <br />    ˜q™ä¹Ÿæ˜¯å¤§å…¬å¸ç‰¹åˆ«å–œæ¬¢çŽ©çš„ã€?<br />    也许我们前期ä¼?x¨¬)制定一个的架构、设计文档,代码规范åQŒè¿™æœ‰ä¸€ä¸ªè§„范徏立的旉™—´æˆæœ¬ä»¥åŠ(qi¨¢ng)规范本书的合理性,再说如果一个开发äh员,特别是高手,如果不认同你的设计和规范åQŒä½ è¦å¼ºæŽ¨ï¼Œä»–è¦ä¹ˆèµ°äºø™¦ä¹ˆæ€ å·¥ã€‚è§„èŒƒçš„æœ¬è´¨æ˜¯äØ“(f¨´)äº?ji¨£n)协作和后期可维护,如果只有两个人或一个äh写某个模块,你觉得有˜q™ä¸ªå¿…要吗?规范整洁的代码,在项目初期,对用æˆïL(f¨¥ng)š„价值关¾pÕd¾ˆž®ï¼Œä½ ä¼š(x¨¬)å…›_¿ƒ(j¨©)豆瓣¾|‘çš„js代码写得很漂亮吗åQŸæˆ‘们应该关注代码的健壮性而不是可¾l´æŠ¤æ€§ï¼Œæˆ‘们不是在开发Windowsã€?<br /> <br />     <strong>人适应™å¹ç›®åQŒè¿˜æ˜¯é¡¹ç›®é€‚应äº?/strong> <br />     大公司,往往是来äº?ji¨£n)一个项目,赶快招ähåQŒäh来适应™å¹ç›®ã€‚小公司呢,我现在的看法是,™å¹ç›®é€‚应人。小公司åQŒå¾€å¾€ä¸€ä¸ªé¡¹ç›®åšç ¸ï¼Œå…¬å¸ž®±é¢ä¸´è§£æ•£ã€‚所以,我认为,最好还是按照开发äh员的擅长åQŒä¿è¯åŠŸèƒ½è´¨é‡ï¼Œæœ€å¿«çš„é€Ÿåº¦ä¸Šçº¿ã€‚å¦å¤–ï¼Œä¸ÞZº†(ji¨£n)达成˜q›åº¦åQŒå¯ä»¥åœ¨ä¸Šçº¿åˆæœŸç æŽ‰ä¸å¤ªé‡è¦çš„æ ç›®æˆ–功能ã€?<br />     我在˜q™ä¸ªä¸Šé¢æ ½è¿‡è·Ÿå¤´çš„。比如开发äh员的擅长åQŒå¦‚果他擅长jsp开发模式,而不是Hibernate+Spring的分层开发,ž®Þp®©ä»–按自己的意思做吧。因为,创业型项目都不会(x¨¬)太大åQ›å³ä½¿æŠ€æœ¯å®žçŽîC½ æ„Ÿè§‰å®Œç¾Žäº?ji¨£n),用户可能感觉不爽åQ›å†è¯ß_(d¨¢)¼Œ™å¹ç›®å¼€å‘,涉及(qi¨¢ng)åˆîC¸šåŠ¡è°ƒç ”ã€éœ€æ±‚åˆ†æžã€åŽŸåž‹ç•Œé¢ã€æž¶æž„ã€å¼€å‘ã€éƒ¨¾|ŒÓ€æŽ¨òqѝ€‚开发,也就是代码实玎ͼŒå åŽ»™å¹ç›®æ—‰™—´åQŒä¹Ÿè®æ€¸åˆ?0%。项目如果证实有商业前景åQŒä»£ç é‡æ–°å®žçŽîC¸€éï¼ŒèŠ×ƒ¸äº?ji¨£n)多ž®‘æ—¶é—´ã€?<br />     但我也深深地意识到我们项目管理的¾U§åˆ«åQŒå°±å¦‚同CMM1到CMM4。但我还是觉得目前是最好的选择ã€?<br />     如果最低层‹Æ¡çš„用户需求目标都达不刎ͼŒç›´æŽ¥è€ƒè™‘代码怎么有可扩展性、可¾l´æŠ¤æ€§ï¼Œå¯¹äºŽž®å…¬å¸å°±æ˜¯æ‰¾æ­…R€?<br />     另外åQŒå°Šé‡å’Œä¿¡ä“Q、支持开发äh员的技术选择åQŒå¾€å¾€æ˜¯ä¸€¿Uæ¿€åŠ±ã€å¢žå¼ºå›¢é˜Ÿå‡èšåŠ›çš„æ–¹å¼ã€‚ä¸‡ä¼—ä¸€å¿?j¨©),比什么目标、进度更有效、实际ã€?<br />     我们应该培养一¿Uå›¢é˜Ÿæˆå‘˜çš„内部创业å¿?j¨©)态,而不只是敬业ã€?<br /> <br />     在进度把控上åQŒæˆ‘现在更們֐‘于强调我们的™å¹ç›®ç›®æ ‡å’Œç´§˜q«æ€§ï¼Œè€Œä¸æ˜¯ä»–们的ä»ÕdŠ¡ã€‚å› ä¸ºæˆ‘å¸Œæœ›å¤§å®¶çš„å…³æ³¨ç‚¹æ˜¯é¡¹ç›®ï¼Œè€Œä¸æ˜¯ä»–çš„ä¸Š¾U§ï¼Œä»–应该对™å¹ç›®è´Ÿè´£åQŒè€Œä¸åªæ˜¯å¯¹ä¸Š¾U§è´Ÿè´£ã€?<br /> <br />     <strong>说说沟é€?/strong> <br />     ™å¹ç›®½Ž¡ç†ä¸­æœ€éš‘Ö¤„理好的,ž®±æ˜¯æ²Ÿé€šã€‚以前,我比较关注于工具åQŒå¦‚é‚®äšg、文档、ppt讲稿ä¼?x¨¬)è®®åQŒé€æ¸æˆ‘关注效率和效能åQŒç‰¹åˆ«æ˜¯æ€åº¦ã€‚沟通最基础的就是态度。如果网站上¾U¿åŽåQŒè®¢å•提交出çŽîC¸€ä¸ªæ ¸å¿?j¨©)bugåQŒä½ æ˜¯ç›´æŽ¥æ‰¾å¼€å‘äh员问责;˜q˜æ˜¯å‘Šè¯‰ä»–哪儿出äº?ji¨£n)问题,˜q™ä¸ªé—®é¢˜çš„严重,òq¶ä¸”自己反省åQŒæ¯”如测试流½E‹å‡ºäº?ji¨£n)问题。出现这¿Uäº‹æƒ…,也许需要负责ähä¸ùN‡è‹¥è½»çš„æ°”åº¦ã€‚ä½†æ›´æ·±å±‚æ¬¡çš„ï¼Œå¦‚æžœè´Ÿè´£äºø™ƒ½å¤ŸåŸ¹å…Õd…¶å‘˜å·¥è´¨é‡æ„è¯†åQŒå±æœºæ„è¯†ï¼Œæ‰æ˜¯æ²ÀLœ¬ã€‚å› ä¸ÞZ¸€ä¸ªæœ‰å¼ºçƒˆè´¨é‡æ„è¯†çš„团队,他自然会(x¨¬)åŽÕd¯¹ä»£ç å¥å£®æ€§ã€åŠŸèƒ½æ˜“ç”¨æ€§ç²¾ç›Šæ±‚¾_¾ï¼Œè‡ªç„¶ä¼?x¨¬)去配合‹¹‹è¯•‹¹ç¨‹ã€?<br />    刚才那个沟通问题,对开发äh员的态度åQŒå‰è€…是负面åQŒåŽè€…是中立。那么前者,开发äh员的反应是如何不让领å¯ég¸‹‹Æ¡è´£æ€ªè‡ªå·±ï¼Œæ¯”如只做领导安排的事情;后者的反应是怎么åŽÀL”¹˜q›ï¼Œä¸è®©˜q™æ ·çš„事情发生ã€?<br />    如果你认可创新就可能出错åQŒå¦‚果你认可开发äh员都是想做好的。那么所有的事情åQŒæœæ­£å‘发展˜qˆå‡ºäº?ji¨£n)最军_®šæ€§çš„½W¬ä¸€æ­¥ã€?<br /> <br />    <strong>沟é€?命ä×o(h¨´)式还是征询式</strong> <br />    在沟通,特别是下达ä“Q务或做决½{–è¿™¾cÖMº‹æƒ…上。应该说中国¾lå¤§å¤šå°‘½Ž¡ç†è€…都是用命ä×o(h¨´)式。我˜q‡åŽ»¾lå¸¸åœ¨ç”¨åQŒä½†ä¸€ç›´åœ¨è¯•图æ”ÒŽ(gu¨©)­£åQŒæ”¹ç”¨å¾è®®å¼å’Œå¾è¯¢å¼ã€‚管理者最需要、最隑ּ€å£çš„一句话是:(x¨¬)Do you think soåQŸå‘½ä»¤çš„æ–¹å¼åQŒç»å¸¸å‡ºçŽîC¸‹¾U§ä¸èƒ½ç†è§£ä¸Š¾U§çš„æ„å›¾åQŒä¸¥é‡çš„出现抵触。每个ähåQŒå…¶å®žéƒ½å–œæ¬¢åˆ«äh按自å·Þqš„æƒÏx³•做事åQŒä½†ä½ æ€Žä¹ˆçŸ¥é“自己的想法或决策是对或不是偏颇的åQŒæ€Žä¹ˆè®©å›¢é˜Ÿæ„¿æ„åŽ»æ‰§è¡ŒåQŸåŽ»å¾è¯¢å›¢é˜Ÿå…¶ä»–æˆå‘˜çš„æ„è§ï¼Œè®©ä»–ä»¬å‚ä¸Žï¼Œå¾€å¾€èƒ½å¤ŸåŸ¹å…»å…¶ä¸»äººç¿æ„è¯†ã€è´£ä»ÀL„Ÿã€å‘å¿?j¨©)力åQŒè¿˜èƒ½å¤Ÿå®Œå–„自己的想法。但要将员工参与意识åQŒè{åŒ–äØ“(f¨´)一¿Uä¹ (f¨¤n)惯,太难ã€?<br />     当大安™ƒ½æ²¡æœ‰ä¸»è§æ—Óž¼Œéœ€è¦é¢†å¯ÆD€…的果断、魄力和强势åQŒä½†˜q™ç§æœÞZ¼š(x¨¬)òq¶ä¸å¤šï¼Œè€Œä¸”˜q™ç§æƒ…况åQŒéœ€è¦å›¢é˜Ÿæˆå‘˜å¯¹é¢†å¯¼è€…的信ä“Qã€?<br />     <br />     <strong>遵守制度åQŒè¿˜æ˜¯å¾ç«‹ä¿¡ä»?/strong> <br />      在大公司åQŒå¾€å¾€æ˜¯å‘Šè¯‰ä½ æ€Žä¹ˆåŽ»éµå®ˆå…¬å¸åˆ¶åº¦ã€‚åœ¨ž®å…¬å¸ï¼Œæˆ‘认为最基础、最核心(j¨©)的一件事åQŒå°±æ˜¯å¾ç«‹ä¿¡ä»»ï¼Œè®©å›¢é˜Ÿä¿¡ä»ÖM½ çš„ähå“?说到做到)åQŒä¿¡ä»ÖM½ çš„能åŠ?能够把大家带åˆîC¸€ä¸ªæ–°çš„高åº?。徏立了(ji¨£n)ä¿¡ä“Q后,下一步的核心(j¨©)工作åQŒæ€Žä¹ˆž®†ä½ çš„个人目标,也就是团队目标,转化为每个成员的个äh目标ã€?<br />     有了(ji¨£n)ä¿¡ä“Q˜q™ä¸ªåŸºç¡€åQŒæ‰ä¼?x¨¬)有了(ji¨£n)团队徏讄¡š„½W¬äºŒä¸ªæ ¸å¿?j¨©)ï¼?x¨¬)‹È€åбã€?<br />     是激励,而不是约束、监督,让团队有战斗力。但大公司往往喜欢后者。也许,大公叔Rƒ½æ˜¯èŒä¸šç»ç†ähåQŒåæ­£æ˜¯æ‰“å·¥åQŒå¤ªå…Ïx³¨äºŽäº‹ã€‚如果说有个所谓的中国式领å¯û|¼Œæˆ‘觉得就是以äºÞZØ“(f¨´)本,对äh的尊重。äh的关¾pÕd¤„理好äº?ji¨£n),事情ž®±å¥½åšã€?<br />     加班、考勤、上¾|‘监控,˜q™ç±»å¯¹ä¿¡ä»…R€æ¿€åŠ±æžå…ïL(f¨¥ng) ´ååŠ›çš„è¡Œä¸ºï¼Œä¹Ÿè®¸æ˜¯å·¥ä¸šåž‹½C¾ä¼š(x¨¬)å¯ÒŽ(gu¨©)ˆ‘们这个思考性创造性行业的侵蚀。知识型力_Š¨è€…ï¼Œéœ€è¦ä¸€¿Uä¸Žä½“力型劳动者完全不同的½Ž¡ç†æ¨¡å¼åQŒè¿™¿Uæ¨¡å¼ä¹Ÿè®?d¨¡ng)Rœ€è¦ä¸€ä¸ªä»ŽèŒèŠ½ã€ç”Ÿé•¿åˆ°æˆç†ŸæœŸã€‚çŽ°åœ¨åœ¨ç›®å‰çš„ä¸­å›½ï¼Œ˜q˜åªæ˜¯åˆšèµ°å‡ºèŒèŠ½æœŸã€?<br />     <br />     以前完整看过余世¾l´çš„11套视频,˜q˜çœ‹˜q‡å‡ éã€‚他那种人本理念我还是很认同åQŒåªæ˜¯ï¼Œä»–在大公司、规范公司的做事情方法和风格åQŒå®Œå…¨ç…§æ¬æ‹¿åˆ°å°å…¬å¸åQŒéžå¸¸å±é™©ã€‚你能够拿幼儿园那种教育æ–ÒŽ(gu¨©)³•来教育成òq´äh吗?ž®å…¬åæ€¸å…·å¤‡å¤§å…¬å”R‚£¿UèŒä¸šåŒ–的环境,也不具备大公司在行业中的å¸?j¨¬ng)场åœîC½å?qi¨¢ng)资金实力ã€?<br />     如果说大公司讲究做事æ–ÒŽ(gu¨©)³•、流½E‹ï¼Œå¦‚SWOT分析法、BCG矩阵åQŒå°å…¬å¸æ›´çœ‹é‡çµ‹zÀL€§ã€å¸‚(j¨¬ng)场适应性。小公司应该适当短视、急功˜q‘利åQŒå¦åˆ™åœ¨ä½ å®žæ–½ä¸€ä¸ªä¸‰òq´è®¡åˆ’æ—¶åQŒç¬¬äºŒå¹´˜q˜ä¸èµšé’±å¯èƒ½ž®±æ’‘不下厅R€?<br />     所以我觉得åQŒåœ¨è·¨å›½å¤§ä¼ä¸šå‘†æƒ¯äº†(ji¨£n)åQŒå‡ºæ¥åˆ›ä¸šå¾ˆå±é™©ã€‚一个是做事æ–ÒŽ(gu¨©)³•不适应åQŒå¦å¤–一个就是没有åã^台。如果要出来创业åQŒä»¥å‰é‚£¿Uå¤§ä¼ä¸šçš„经历可能更是一¿UåŠ£åŠÑ€?也许有一¿Uæƒ…况,你是大公司的高官åQŒæ‹¿åˆîC¸€½W”很大的风险投资åQŒç„¶åŽå‡ºæ¥åˆ›ä¸šã€?<br />      <br />     <strong>äºÞZº‹æ‹›è˜ </strong><br />      <strong>薪水</strong>  如果公司¾l™å¾—èµøP¼Œòq¶ä¸”应聘者能力差不多ã€?ž®×ƒ¸è¦å¤ªåœ¨ä¹Žé‚?00ã€?00。虽然说臛_°‘要不低于行业òq›_‡å€û|¼ˆIT人员是IT行业òq›_‡å€û|¼Œè€Œä¸æ˜¯æœ¬å…¬å¸æ‰€åœ¨çš„行业òq›_‡å€û|¼‰(j¨ª)åQŒä½†æœ€é‡è¦çš„,˜q˜æ˜¯ä¸è¦ä½ŽäºŽå½“事人的期望å€û|¼Œå› äØ“(f¨´)最核心(j¨©)的是满意度,而满意度军_®šäºŽæœŸæœ›å€¼å’Œå®žé™…值的差距。对于小公司åQŒå¾€å¾€ä¸€ä¸ªäh技术äh员的成本和收益,和其工资差距非常大,有可èƒ?0倍。所以,我们的关注点åQŒåº”该是怎么一开始留住这位ähæ‰ã€‚ç„¶åŽï¼Œæ€Žä¹ˆè®©å…¶å……åˆ†å‘æŒ¥æ½œåŠ›ã€‚å°å…¬å¸å¾€å¾€ä¸æ˜¯å› äØ“(f¨´)节省那几千几万的工资成本æ­ÀLŽ‰çš„ï¼Œè€Œæ˜¯å……åˆ†åˆ©ç”¨˜q™ä½äººæ‰æ‰æ´»ä¸‹åŽ»äº?ji¨£n)ã€?<br /> <br />      另外åQŒä¸è¦ä»¥ä¸ºæœ‰å¤šå°‘人才选择的机ä¼?x¨¬),ž®å…¬å¸å¾€å¾€ä¸å—高çñ”人才的青睐。太高çñ”çš„äh才,可能å…ÖM¸èµøP¼Œè€Œä¸”往往太有个性,很难合作愉快åQŒé™¤éžåœ¨æ¥å…¬å¸å‰æœ‰å¾ˆé•¿æ—¶é—´çš„äº?ji¨£n)è§£ã€?<br />      招聘到合适äh才后åQŒåº”该让其忘掉薪æ°ß_(d¨¢)¼Œä¸“注于工作,å¯ÀL‰¾å·¥ä½œæœ¬èín的乐­‘£ã€‚当ç„?d¨°ng)ž¼Œè¦åšåˆ°è®©å…¶åœ¨è–ªæ°´ä¸Šæœ‰ä¼˜è¶Šæ„Ÿï¼Œä¹Ÿè®¸æ˜¯é¡¹ç›®å¾ˆç›ˆåˆ©çš„那一天,开始时很难ã€?<br /> <br />      <strong>人才标准</strong> 如果其能力和你预期相差不大的话,更应该考虑其态度、做事风æ û|¼Œç”šè‡³æ˜¯ä­h(hu¨¢n)倯D§‚。因为其能力的发挥,和这个环境,特别是他的直接利益相兌™€…,也就是上司,关系太大。如果配合得好,一个äh可以™å¶ä¸‰ä¸ªã€‚否则,那种内耗导致的˜q›åº¦å»¶æœŸåQŒç”±æ­¤å¼•èµïL(f¨¥ng)š„å¸?j¨¬ng)场æœÞZ¼š(x¨¬)丧失åQŒå…¬å¸èƒ¦(ch¨³)力无法支撑,往往是致命的。因ä¸ÞZ¸€ä¸ªå‡ äººçš„IT团队åQŒæ¯ä¸€ä¸ªäh的职责就如同那木桶的一块板åQŒç¼ºäº?ji¨£n)那块都存不了(ji¨£n)æ°´ã€?<br />      比如关于质量åQŒæ›´¼‹®åˆ‡è¯´æ˜¯å†…容质量åQŒæˆ‘们目前做旅游ç”?sh¨´)子商务åQŒæˆ‘è®¤äØ“(f¨´)内容质量很核å¿?j¨©)。但你招˜q›æ¥çš„åŒäº‹ï¼Œå§‹ç»ˆè®¤äØ“(f¨´)å…ˆè¦é‡ï¼Œä»€ä¹ˆéƒ½å¯ä»¥æŠ„ï¼Œè€Œæˆ‘å¼ø™°ƒè´¨ï¼ŒåŽŸåˆ›ã€åŠåŽŸåˆ›åQŒå¯ä»¥å°‘而精åQŒè€Œä¸èƒ½å¤šè€Œäؕ。除开™å¹ç›®˜q›åº¦åQŒæ€Žä¹ˆåŽÀL²Ÿé€šï¼Ÿæœ€å¥½ä¸¤ä¸ªäh一开始都认同原创的力量ã€?<br /> <br />      提升一个äh的技能不难,但改变一个äh的态度比较难,改变一个ähçš„ä­h(hu¨¢n)倯D§‚几乎不现实。所以先扑ֿ—同道合的人吧ã€?nbsp;    <br />      别期望äh才是可替代的。我们不是大公司åQŒæˆ‘们缺äº?ji¨£n)谁åQŒé‚£ä¸€å—就不è{ã€?<br />      大家都知道,松耦合要付å‡ÞZ»£ä»øP¼Œæ¯”如SOAP协议的低性能åQŒAMF¿Uæœ‰åè®®çš„高性能。创业期åQŒä¸è¦å¤ªå¤šè€ƒè™‘人才替换åQŒè€Œæ˜¯å…Ïx³¨æ€Žä¹ˆå‘挥人的潜力åQŒç•™ä½ähåQŒå°½å¿«é«˜è´¨é‡å®Œæˆ™å¹ç›®ã€‚äh才替换的一个假设,可能是你对自å·Þq®¡ç†çš„ä¸è‡ªä¿¡ï¼Œå› äØ“(f¨´)ä½ ä¸ç›æ€¿¡è‡ªå·±èƒ½å¤Ÿç•™ä½äººã€?<br />      <br />      ˜q™æ¬¡ž®±å†™˜q™ä¹ˆå¤šå§ã€?<br />      我似乎有˜q™ç§ä½“会(x¨¬)åQŒè€ƒå¤§å­¦ã€å››å…­çñ”˜q™ç±»èµ„æ ¼ã€è¯ä¹¦ç±»è€ƒè¯•æœ€å¥½æØœåQŒå› ä¸ºåªè¦å‹¤å¥‹å°±å¯ä»¥åQŒå†åŠ ç‚¹æ–ÒŽ(gu¨©)³•ž®±å¯ä»¥å‡º¾cÀL‹”萃了(ji¨£n)ã€?nbsp; ä¸Šç­ä¹Ÿæ¯”è¾ƒå¥½æ·øP¼Œè¯´æ‰¾å·¥ä½œå§ï¼Œåƒæˆ‘搞技术的åQŒæœ¬íw«å¯¹æŠ€æœ¯å¾ˆç‹‚热åQŒæ ¹æœ¬å°±ä¸æ„æ‰¾ä¸åˆ°å·¥ä½œï¼Œå› äØ“(f¨´)面试时我觉得那家伙应该比我牛åQŒæ­£å¥½å¯ä»¥åˆ‡¼‚‹åˆ‡¼‚‹ï¼Œæ²¡æƒ³å¤ªå¤šæ‰€ä»¥æ²¡å•¥æ€¯åœºæˆ–不自信。工作吧åQŒå¦‚果是技术类åQŒç‰¹åˆ«æ˜¯å•†ä¸šè½¯äšgåQŒæŠ€æœ¯éš¾åº¦éƒ½ä¸å¤§åQŒæŒ‰ä¸Šå¸æ„æ€æ¥åQŒå¾ˆå®ÒŽ(gu¨©)˜“搞定。创业呢åQŒè‡ªå·Þp¦åšå•†ä¸šåˆ¤æ–­ã€ä¸šåС决½{–,˜q˜è¦åè°ƒè‹¥å¹²äººçš„工作(协调的本质是协调利益)。做事和½Ž¡äº‹åQŒå®Œå…¨æ˜¯ä¸¤ç äº‹ï¼Œæœ‰äº›éš¾ã€‚不˜q‡ï¼Œåˆ›ä¸š˜q˜æ˜¯å¾ˆæœ‰æ„æ€ï¼Œå› äØ“(f¨´)你可以按自己的意愿去工作åŽÈ”Ÿ‹z»ï¼Œå½“然也是受限环境的自由ã€?<br /> <br /> <br /> 我将我的一个回复放在这个地方,特示警醒åQ?<br /> <br /> <div id="wmqeeuq" class="quote_title">引用</div> <div id="wmqeeuq" class="quote_div">告诫各位处于开发第一¾U¿çš„æœ‹å‹åQŒåƒä¸‡ä¸è¦å—本文的误å¯û|¼ŒæŠŠè§„范和设计文档不当回事ã€?<br /> <br /> 我的看法åQ?<br /> 1、文档的多少和深度决定于™å¹ç›®çŽ¯å¢ƒã€?<br />     如果是大™å¹ç›®åQŒæ¯”如二三十开发äh员,架构文档、需求文档、代码规范等都是必须åQŒå¦åˆ™å¼€å‘äh员不能迅速了(ji¨£n)解项目技术和业务特点åQŒä»Žè€Œæ— æ³•快速开发,也即是规范可以降低培训成本和团队沟通;另外åQŒé¡¹ç›®å¼€å‘中后期可能æ ÒŽ(gu¨©)œ¬ä¸å¯æŽ§ï¼Œè°éƒ½çœ‹ä¸æ‡‚其它äh的代码。部¾|²æ—¶çœ‹åˆ°çš„一些bug无法å?qi¨¢ng)时修复åQŒå› ä¸ºåˆ°å¤„都有地雗÷€‚我以前¾låކ˜q‡è¿™æ ïL(f¨¥ng)š„™å¹ç›®åQŒæœ€åŽåŠ ç­éƒ½æ²¡ç”¨ã€?<br /> <br />     如果是äñ”品型åQŒè§„范更重要。当然我说的产品可能æ˜?.0ç‰ˆä»¥åŽï¼Œå› äØ“(f¨´)˜q™æ—¶å€™çš„产品基本得到äº?ji¨£n)å¸?j¨¬ng)场的认可。而在初版æ—Óž¼Œä»£ç å†™å¾—烂都没关¾p»ï¼Œå› äØ“(f¨´)你不不知道用户会(x¨¬)不会(x¨¬)买单åQŒä¹Ÿä¸çŸ¥é“能否按˜q›åº¦å¼€å‘完成。而在后箋版本åQŒå¦‚果没有规范文档,¾l´æŠ¤çš„æˆæœ¬éƒ½ä¸äºšäºŽé‡æ–°å¼€å‘。特别是处于一¾U¿çš„开发äh员会(x¨¬)怨声载道åQšäØ“(f¨´)什么要我来收拾ŒD‹å±€åQŸé‚£ä¹ˆï¼Œ˜q™æ ·çš„士气,开发效率怎么ä¼?x¨¬)高åQŒé¡¹ç›®è´¨é‡æ€Žä¹ˆä¼?x¨¬)高åQ?<br /> <br /> 2、成熟型大公叔R‚£å¥—做事流½E‹ï¼Œå¯èƒ½é«˜æ‰‹å—不äº?ji¨£n),但可能是最优的æ–ÒŽ(gu¨©)¡ˆã€‚因为,到项目后期维护,往往只是一些业务功能的删减改进åQŒä¸éœ€è¦æŠ€æœ¯é«˜æ‰‹ï¼Œ˜q™ä¸ª˜q‡ç¨‹å¯èƒ½æ¼«æ˜O几年åQŒé¡¹ç›®ç»´æŠ¤æˆæœ¬ä¼š(x¨¬)非常高,雇䄦高手一来他不愿意干二来也不需要这¿UähåQŒå¦‚果项目代码还¾l´æŒåœ¨ä¸€¿U?#8220;¿U©åº”åQŒåˆä¸­çñ”开发äh员就可以胜ä“QåQŒæœ‰ä»€ä¹ˆä¸å¥½å‘¢åQ?<br />    ™å¹ç›®ä¸Šçº¿æ—Óž¼Œæ˜¯äØ“(f¨´)äº?ji¨£n)追求利润。项目维护期åQŒæ˜¯ä¸ÞZº†(ji¨£n)省成本ã€?<br /> <br /> 3、刚入道的朋友,最好是按规范来åQŒå°±åƒå­¦æ­¦æœ¯åQŒå…ˆè¦å­¦å¥—èµ\。否则,å…ÀLˆçš„ç¼–½E‹åä¹?f¨¤n)惯åQŒæ¯”如文件名叫Aaa1.javaåQŒä»£ç æ²¡æœ‰ç¾ƒ˜q›ã€‚过几年非常难改。而好的编½E‹ä¹ (f¨¤n)惯,可以提升开发效率,˜q˜èƒ½è®©è‡ªå·±æ€ç»´æ¸…æ™°ã€?<br />    学技术阶ŒDµï¼Œä¸€å®šè¦æ³¨æ„ä»£ç çš„可¾l´æŠ¤æ€§ã€å¥å£®æ€§åŠ(qi¨¢ng)灉|´»æ€§ï¼Œåªæœ‰å…ÀLˆå¯¹ä»£ç ç²¾ç›Šæ±‚¾_„¡š„态度åQŒä½ æ‰å¯èƒ½æˆä¸ºæŠ€æœ¯é«˜æ‰‹ã€‚技术学好,做技术管理就有了(ji¨£n)基础åQŒè€Œä¸”别äh也会(x¨¬)服你ã€?/div> <img src ="http://www.aygfsteel.com/freeman1984/aggbug/333604.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/freeman1984/" target="_blank">@joe</a> 2010-10-01 11:09 <a href="http://www.aygfsteel.com/freeman1984/archive/2010/10/01/333604.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>¾l™æ•æ·å›¢é˜Ÿä¸­çš„æž¶æž„师çš?0个徏è®?/title><link>http://www.aygfsteel.com/freeman1984/archive/2010/09/24/332754.html</link><dc:creator>@joe</dc:creator><author>@joe</author><pubDate>Fri, 24 Sep 2010 05:13:00 GMT</pubDate><guid>http://www.aygfsteel.com/freeman1984/archive/2010/09/24/332754.html</guid><wfw:comment>http://www.aygfsteel.com/freeman1984/comments/332754.html</wfw:comment><comments>http://www.aygfsteel.com/freeman1984/archive/2010/09/24/332754.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/freeman1984/comments/commentRss/332754.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/freeman1984/services/trackbacks/332754.html</trackback:ping><description><![CDATA[<p>å¾®èÊYæ¾›_¤§åˆ©äºšçš„è§£å†Ïx–¹æ¡ˆæž¶æž„师Tom HollanderåQŒåœ¨TechEd Australia大会(x¨¬)上ä‹D行了(ji¨£n)一场题ä¸?#8220;<a id="xgik" title="敏捷团队中的架构师角è‰? >敏捷团队中的架构师角è‰?/a>”的演讌Ӏ‚在演讲中,他讨è®ÞZº†(ji¨£n)他作为领导敏捷团队的架构师所做的工作ã€?/p> <p>在谈到架构师的角色时åQŒHollander指的æ˜?#8220;解决æ–ÒŽ(gu¨©)¡ˆæž¶æž„å¸?#8221;或者应用架构师。他不是指企业架构师或者其他的专业人士åQˆä¸“¾_¾äºŽç‰¹å®šçš„领域,例如消息或基¼‹€è®¾æ–½åQ‰ã€?/p> <p>Hollander的团队采¾U³äº†(ji¨£n)ç”?周è„P代以å?qi¨¢ng)最后的½E›_®šé˜¶æ®µåQˆå‡ å¤©ä»£ç å†»¾l“的旉™—´åQ‰ç»„成的‹¹ç¨‹åQŒå®žæ–½äº†(ji¨£n)每日站立ä¼?x¨¬)议、每日构å»ÞZ¸Žè‡ªåŠ¨åŒ–æµ‹è¯•çš„æŒç®‹é›†æˆ½{‰å®žè·µï¼Œòq‰™‡‡ç”¨äº†(ji¨£n)许多角色åQ?</p> <ul> <li><strong>PjM</strong>——项目经理,¾cÖM¼¼äºŽScrum MasteråQŒç¡®ä¿å›¢é˜Ÿéµå¾ªäº†(ji¨£n)‹¹ç¨‹ <li><strong>PdM</strong>——äñ”品经理,也被¿UîCØ“(f¨´)客户或Product OwneråQŒå†³å®šäñ”品应该是什么样å­? <li><strong>æž¶æž„å¸?/strong>——解å†Ïx–¹æ¡?应用架构å¸? <li><strong>开发ähå‘?/strong>——开发团é˜? <li><strong>‹¹‹è¯•人员</strong>——测试团é˜? <li><strong>用户体验设计人员</strong>åQ?strong>UX</strong>åQ‰â€”—用户体验团é˜? <li><strong>发布人员</strong>——承担构建和发布的职责,负责¾l´æŠ¤æž„徏的流½E?</li> </ul> <p>Hollander针对解决æ–ÒŽ(gu¨©)¡ˆæž¶æž„师如何在敏捷团队中取得成功,提出äº?ji¨£n)最重要的十件事情:(x¨¬)</p> <ol> <li><strong>“正好­‘›_¤Ÿ”的预先设è®?/strong>——除äº?ji¨£n)非常简单的™å¹ç›®åQŒä¸€å®šæ—¶é—´çš„预先设计åQˆä¾‹å¦‚,1åˆ?周)(j¨ª)是绝对必要的åQŒå…¶æ—‰™—´é•¿çŸ­ä¼?x¨¬)取决于应用的类型——网¾lœåº”用程序、智能客æˆïL(f¨¥ng)«¯åQˆsmart clientåQ‰ã€ç§»åŠ¨æˆ–æ‰¹å¤„ç†ï¼ŒåŸºæœ¬çš„åŠŸèƒ½éœ€æ±‚æ˜¯ä»€ä¹ˆï¼Œæ˜¯é•¿æœŸçš„è§£å†³æ–ÒŽ(gu¨©)¡ˆæŠ‘或是折è¡ïL(f¨¥ng)š„、暂时的æ–ÒŽ(gu¨©)¡ˆåQŒéƒ½è¦å¼„清楚。预先设计的目的是要军_®šåQšä‹É用什么技术——例如,ASP.NET或MVCåQŒåº”用程序是什么类型—â€?层ã€?层抑或是面向服务的应用,如何讉K—®æ•°æ®åº“——存储过½E‹ã€å®žä½“框架、LINQ、依赖注入(DIåQ‰ã€‚一½‹‡ç®€çŸ­çš„æ–‡æ¡£ž®±å¯ä»¥åŒ…含所有这些信息以供大家参考ã€? <li><strong>从垂直分片开å§?/strong>——是指从一ž®å—功能开始(例如ç™Õd½•™åµé¢åQ‰ï¼Œž®½å¯èƒ½åœ°åœ¨åž‚ç›´æ–¹å‘æŠŠå®ƒåˆ‡åˆ†äØ“(f¨´)很多层,从而把前一阶段所军_®šçš„æ‰€æœ‰æŠ€æœ¯ç»“合在一赗÷€‚è¿™ž®†éªŒè¯è®¾è®¡å†³½{–的正确性,而且所有的技术可以一起工作,òq¶ä¸”ž®†å‘开发者展½Cºåœ¨å¼€å‘新代码时可以遵循的模式。如果发现最初的设计决策不当åQŒæ­¤æ—¶æ˜¯ä¸€ä¸ªåˆé€‚的修改旉™—´ã€? <li><strong>在每‹Æ¡è„P代中的Just-in-time设计</strong>——在每个4周è„P代的中段åQŒé¡¹ç›®ç»ç†ã€äñ”品经理和架构师应该聚在一赯‚®¨è®ºåœ¨ä¸‹ä¸€ä¸ªè„P代中要完成的需求,¼‹®ä¿ä»–们每一位都同意˜q™äº›éœ€æ±‚,重要性更高的事情攑֜¨äº?ji¨£n)前面处理,而且每个人对一切事情都非常清楚。这些讨论在当前˜q­ä»£ä¸­ä¼š(x¨¬)以不太明昄¡š„方式延箋一个星期。接下来的一周,也即当前˜q­ä»£çš„æœ€åŽä¸€å‘¨ï¼Œæž¶æž„师复审下一‹Æ¡è„P代的需求,作出必要的设计决½{–,以便团队可以在下一个星期基于这些决½{–开展工作。如果需求与以往相当不同åQŒé‚£ä¹ˆï¼Œæž¶æž„师会(x¨¬)开发一些原型,¾~–写一些代码来证明概念åQŒç»˜åˆ¶ä¸€äº›å›¾è¡¨ï¼Œç„¶åŽæŠŠæ‰€æœ‰è¿™äº›ä¸œè¥‰K›†¾~–䨓(f¨´)5™å늚„æ–‡äšg以供参考。这不是ä¸ÞZº†(ji¨£n)制定出有利于开发äh员的详细设计æ–ÒŽ(gu¨©)¡ˆåQŒè€Œæ˜¯è¦ç¡®ä¿æ–°çš„需求满­‘›_…¨å±€çš„要求ã€? <li><strong>ä¿¡ä“Q你的团队...但要跟他们在一èµ?/strong>——这关乎架构师与开发äh员的关系。架构师需要确保他没有逾越自己的角è‰ÔŒ¼Œæ²¡æœ‰ç‹¬å æ‰€æœ?#8220;做决å®?#8221;的乐­‘£ï¼Œä½¿å¾—开发äh员的工作变得无聊。与此同æ—Óž¼Œæž¶æž„师需要给团队提供指导åQŒè§£å†³é‚£äº›å¯èƒ½ä¼š(x¨¬)坯D‡´å¼€å‘äh员停™å¿çš„困难问题。架构师每天都应该与每位开发äh员接触,èŽäh‚‰ä»–们在做什么,òq¶ä¸”在他们遇上编½E‹é—®é¢˜çš„æ—¶å€™ç»™äºˆå¸®åŠ©ã€‚ç‰¹åˆ«æ˜¯å½“å¼€å‘äh员不喜欢å¯ÀL±‚帮助åQŒè¯•图花上整整一个礼拜的旉™—´æ¥è‡ªè¡Œè§£å†³é—®é¢˜çš„æ—¶å€™ï¼Œ˜q™ç§å¸®åŠ©ž®¤äØ“(f¨´)需要。这¿Uå…³¾pÖM¹Ÿé€‚用于PjM和测è¯?构徏/发布团队ã€? <li><strong>¾~–写代码åQ?/strong>——架构师应该知道代码的质量如何,˜q™æ ·æ‰ä¼š(x¨¬)对他做出的决定所产生的媄(ji¨£ng)响有更好的理解。他也可以整明白何时重构是必™åȝš„ã€?¾~–写代码的架构师在开发团队中有更好的声誉。也ž®±æ˜¯è¯ß_(d¨¢)¼ŒHollanderòq¶ä¸è®¤åŒåQˆè®¾è®¡å’Œå¼€å‘)(j¨ª)职责的æ‰m渭分明。他˜q˜è®¤ä¸ºï¼Œæž¶æž„师仍然是架构师,他不一定要像普通的开发äh员一æ äh“…长于¾~–写代码ã€? <li><strong>参与一åˆ?/strong>——架构师参与所有与™å¹ç›®æœ‰å…³çš„会(x¨¬)议:(x¨¬)设计、开发、代码评审、需求规划等åQŒè¿™æ˜¯æœ‰å¥½å¤„çš„ï¼Œå› äØ“(f¨´)他能够以更广阔、更清晰的视角看待正在发生的事情åQŒè€Œä¸”他能够通过告知产品¾lç†å…¶å†³å®šçš„æ½œåœ¨åŽæžœåQŒä»Žè€Œå¸®åЩ他/奚w¿å…åœ¨æ—©æœŸé˜¶æ®µåšå‡ºé”™è¯¯çš„决定ã€? <li><strong>推动质量文化</strong>——一个成功的团队åQŒä¸€ä¸ªäh人都æƒÏxˆä¸ºå…¶ä¸­ä¸€åˆ†å­çš„团队,是徏立在质量文化之上的:(x¨¬)没有人偷工减料;没有人提交拙劣代码;如果设计中有一个重大的¾~ºé™·åQŒå®ƒ¾lä¸ä¼?x¨¬)不知不觉地淯‚¿‡å…»I¼›æ‰€æœ‰äh都是诚实和开攄¡š„åQŒå¯»æ±‚整个团队达到最佳的¾l“果。Hollander承认åQŒå¾ç«‹è¿™æ ·ä¸€ä¸ªå›¢é˜Ÿå¾ˆéš¾ï¼Œä½†åƈ非不可能。首先,架构师应该在一开始就创徏一些规则,˜q™äº›è§„则不会(x¨¬)因䨓(f¨´)开发äh员不喜欢ž®±éšç€æ—‰™—´è€Œæ”¹å˜ã€‚比如决定编写单元测试,再比如在每次提交以前都要˜q›è¡Œä»£ç è¯„审åQŒåŒ…括由架构师提交的代码。如果评审äh员(可以是团队中的ä“Q意一位)(j¨ª)不认可代码,代码ž®×ƒ¸èƒ½æäº¤ã€? <li><strong>知道何时需要改å?/strong>——架构师应该非常灉|´»åQŒéšæ—¶å‡†å¤‡å¥½åœ¨è®¾è®¡éœ€è¦æ”¹å˜çš„æ—¶å€™åŽ»æ”¹å˜è®¾è®¡ã€‚æ—©æœŸçš„è§£å†³æ–ÒŽ(gu¨©)¡ˆä¹Ÿè®¸ä¸å†é€‚合åQŒæŠ‘或是新的需求需要不同的æ–ÒŽ(gu¨©)³•ã€? <li><strong>å±è”½æ¥è‡ªå¤–éƒ¨çš„éšæœø™¯·æ±?/strong>——虽然这通常是项目经ç?Scrum master的职责,但架构师可以保护团队不受外部è¯äh±‚的媄(ji¨£ng)响,˜q™äº›å½±å“å¾€å¾€ä¼?x¨¬)分散团队的¾_‘ÖŠ›å’Œæµªè´¹çœŸæ­£å·¥ä½œçš„æ—‰™—´ã€‚ä‹D个例子:(x¨¬)业务团队可能惌™¦ä»¥æŸ¿Uç‰¹å®šçš„æ–¹å¼å®ŒæˆæŸäº›ç‰¹å®šçš„事情,而他们的è¯äh±‚òq¶ä¸å…¨ç„¶åˆç†åQŒä¹Ÿòq¶ä¸æ˜¯å¿…™åÕd®žçްã€?nbsp; <li><strong>撰写文档...但只有当有äh需要阅è¯Õd®ƒä»¬çš„æ—¶å€?/strong>——Hollanderòq¶ä¸æå€¡è®°å½•一切,也不提倡根本不撰写ä»ÖM½•æ–‡æ¡£ã€‚ä»–è®¤äØ“(f¨´)有必要取得一个åã^衡——只¾~–写一定数目真正有帮助的、有äºÞZ¼š(x¨¬)去阅è¯Èš„文档。文档在记录详细设计的决定(比如数据模型åQ‰æ–¹é¢æ˜¯å¾ˆå¥½çš„蝲体。è„P代的设计军_®šåQŒè™½ç„¶å®ƒä»¬ç”±æ•´ä¸ªå›¢é˜Ÿåœ¨è„P代开始之初讨论得出,但我们仍然徏议将它们记录åœ?™å늚„文档之中åQŒä»¥å¤‡å¼€å‘äh员日后不记得架构师言论的时候进行查阅。而当最开始的开发äh员和架构师离开™å¹ç›®ã€åŠ å…¥å…¶ä»–é¡¹ç›®ä¹‹åŽï¼Œæ–°åŠ å…¥é¡¹ç›®å·¥ä½œçš„äºÞZ¹Ÿèƒ½å€ŸåŠ©äºŽè¿™äº›æ–‡æ¡£ç†è§£æŸäº›å†³å®šçš„æ¥é¾™åŽ»è„‰ã€?nbsp; </li> </ol> <p>¾lég¸Šæ‰€˜qŽÍ¼ŒHollander指出åQŒæž¶æž„师应该¼‹®ä¿ä»–从理论上和实践上都是团队的一分子。架构师不应该编写所有的代码åQŒè€Œåªæ˜¯å…¶ä¸­ä¸€ž®éƒ¨åˆ†ï¼Œä»–不åŽÀLµ‹è¯•或部çÖv˜q™äº›ä»£ç åQŒä½†ä»–要¼‹®ä¿æ•´ä¸ª‹¹ç¨‹çš„顺利进行ã€?br /> 转蝲自:(x¨¬)http://www.infoq.com/cn/news/2010/09/Tips-Architect-Agile-Team</p> <img src ="http://www.aygfsteel.com/freeman1984/aggbug/332754.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/freeman1984/" target="_blank">@joe</a> 2010-09-24 13:13 <a href="http://www.aygfsteel.com/freeman1984/archive/2010/09/24/332754.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>敏捷开发中¾~–写高质量Java代码http://www.aygfsteel.com/freeman1984/archive/2010/09/05/331072.html@joe@joeSun, 05 Sep 2010 04:20:00 GMThttp://www.aygfsteel.com/freeman1984/archive/2010/09/05/331072.htmlhttp://www.aygfsteel.com/freeman1984/comments/331072.htmlhttp://www.aygfsteel.com/freeman1984/archive/2010/09/05/331072.html#Feedback0http://www.aygfsteel.com/freeman1984/comments/commentRss/331072.htmlhttp://www.aygfsteel.com/freeman1984/services/trackbacks/331072.html转蝲自:(x¨¬)csdn http://sd.csdn.net/a/20100308/259219.html
敏捷开发的理念已经‹¹è¡Œäº?ji¨£n)很长的旉™—´åQŒåœ¨æ•æ·å¼€å‘中的开发è„P代阶ŒDµä¸­åQŒæˆ‘们可以通过五个步骤åQŒæ¥æœ‰æ•ˆçš„æé«˜æ•´ä¸ªé¡¹ç›®çš„代码质量ã€?/p>

Java™å¹ç›®å¼€å‘过½E‹ä¸­åQŒç”±äºŽå¼€å‘äh员的¾léªŒã€Java代码¾~–写ä¹?f¨¤n)惯åQŒä»¥å?qi¨¢ng)缺乏统一的标准和½Ž¡ç†‹¹ç¨‹åQŒå¾€å¾€å¯ÆD‡´æ•´ä¸ª™å¹ç›®çš„代码质量较差,难于¾l?护,需要较大的‹¹‹è¯•投入和周期等问题。这些问题在一个项目组初徏、需求和设计均具有不完全可预期性和完备性的全新™å¹ç›®ä¸­å°†ž®¤äØ“(f¨´)½Hå‡ºã€?/p>

如图1所½Cºï¼Œæ•æ·å¼€å‘过½E‹ç»åŽ†éœ€æ±‚è°ƒç ”ï¼Œç”¨ä¾‹åˆ†æžå’Œç”¨ä¾‹åˆ†è§£ï¼Œ˜q›å…¥å¼€å‘è„P代阶ŒDüc(di¨£n)€‚在每个˜q­ä»£˜q‡ç¨‹ä¸­ï¼Œå¯ä»¥é‡‡ç”¨ä»¥ä¸‹æ­¥éª¤æ¥ä¿è¯å’Œæé«˜æ•´ä¸ª™å¹ç›®çš„代 码质量:(x¨¬)¾lŸä¸€¾~–码规范、代码样å¼?é?r¨´n)态代码分æž?staticcodereview);单元‹¹‹è¯•;持箋集成;代码评审和重æž?(Review&Refactor)。下文将针对每个步骤和其所使用的工兗÷€æ–¹æ³•进行详¾l†æ˜q°ã€?/p>

敏捷开发中的Java代码质量保证步骤

�.敏捷开发中的Java代码质量保证步骤

步骤一åQšç»Ÿä¸€¾~–码规范、代码样å¼?/strong>

规范¾lŸä¸€çš„编码会(x¨¬)增加™å¹ç›®ä»£ç çš„可è¯ÀL€§å’Œå¯ç»´æŠ¤æ€§ï¼Œä½†å®žé™…情况往往是项目组内的Java代码开发äh员的¾~–码风格常常各不相同åQŒè¿™å¯èƒ½æ˜¯ç”±äºŽä¸å?的经验习(f¨¤n)惯或者缺乏编码规范方面的学习(f¨¤n)造成的。这样一来,其他™å¹ç›®æˆå‘˜æˆ–者维护äh员在阅读™å¹ç›®ä»£ç æ—¶å°±éœ€è¦èбè´ÒŽ(gu¨©)›´å¤šçš„æ—‰™—´æ¥ç†è§£ä»£ç ä½œè€…的意图åQŒæ‰€ä»¥åˆ¶å®?òq‰™‡‡å–统一的编码规范就昑־—很重要。编码规范主要应包含以下几个斚w¢åQ?/p>

◆一般规则和格式规范。例如代码羃˜q›ã€ç¨‹åºå—规范、每行最大代码长度等ã€?/p>

◆命名规则。例如包名、类名、变量、方法、接口、参数等命名规范

◆文档规范。例如类文äšg头声明、类注释、成员变量和æ–ÒŽ(gu¨©)³•注释½{‰è§„范ã€?/p>

◆编½E‹è§„èŒƒã€‚ä¾‹å¦‚å¼‚å¸¸ã€åÆˆå‘ã€å¤š¾U¿ç¨‹½{‰æ–¹é¢çš„处理方式ã€?/p>

◆其他规范。例如日志格式、属性文件格式,˜q”回值和消息格式ã€?/p>

™å¹ç›®çš„编码规范可以参考已有的一些Java¾~–程规范书籍和其他相兌™µ„æ–™åÆˆ¾l“合™å¹ç›®çš„æœ¬íw«æ¥åˆ¶å®šåQŒå¯ä¾›å‚考的书籍有《Java¾~–程风格ã€?英文ä¹?åäØ“(f¨´)åQšTheElementsofJavaStyle)。编码规范要形成文档åQŒè€Œä¸”要简‹zæ˜Žäº?ji¨£n),òq¶ç»„¾l‡é¡¹ç›®æˆå‘˜ä¸€èµ·å­¦ä¹?f¨¤n),¼‹®ä¿æ‰€æœ‰æˆå‘˜æ­£¼‹®ç†è§£æ‰€æœ‰æ¡ç›®ã€?/p>

一旦编码规范确定,ž®±å¯ä»¥åˆ©ç”¨Eclipse自èín提供的功能来控制代码样式和格式。具体做法是åQŒç‚¹å‡»Eclipseçš?Windows->Preference菜单™å¹ï¼Œåœ¨æ‰“开的Preferences对话框的左侧栏中扑ֈ°Java节点下的子项CodeStyle(如图2)åQŒè¯¥™å?和它的子™å¹å…è®¸æ?zh¨¨n)¨å¯¹Java代码的样式进行控制ã€?/p>

Eclipse代码样式讄¡½®½H—口

å›?.Eclipse代码样式讄¡½®½H—口

例如åQŒäØ“(f¨´)äº?ji¨£n)ä‹É用自动格式化工具åQŒå¯ä»¥åœ¨Eclipse提供的默认代码格式配¾|®çš„基础上徏立自定义的格式。在Formatter面板中,点击 NewåQŒè¾“å…¥æ–°çš„åå­—åÆˆé€‰æ‹©ä¸€ä¸ªé»˜è®¤çš„é…ç½®ä½œäØ“(f¨´)初始化格式,如图3所½Cºã€?/p>

创徏新的代码格式配置

�.创徏新的代码格式配置

单击OK后就可以在新打开的窗口中˜q›è¡Œä¿®æ”¹å®šåˆ¶è‡ªå·±éœ€è¦çš„æ ¼å¼ã€‚如å›?所½Cºã€?/p>

创徏新的代码格式配置

�.创徏新的代码格式配置

修改完成后点击Apply保存所作修攏V€‚同时可以点击Exportž®†å½“前的格式定义导出成一个XMLæ–‡äšgåQŒè¿™æ ·é¡¹ç›®ç»„的其他成员就可以很方侉K€?˜q‡ç‚¹å‡Õd›¾3中的Import按钮来导入该XMLæ–‡äšg来ä‹É用同一个代码格式定义ã€?/p>

˜q™æ ·æ¯æ¬¡åœ¨æäº¤ä»£ç åˆ°ç‰ˆæœ¬æŽ§åˆ¶æœåŠ¡å™?/span>前就可以通过Eclipse界面里的Source->Format菜单来对代码˜q›è¡Œæ ¼å¼åŒ–,从è€?使整个项目的代码å…ähœ‰ç›¸åŒçš„æ ¼å¼ã€‚同样可以通过对CodeStyle下的其他™å¹ç›®˜q›è¡Œè®„¡½®æ¥å¸®åЩ坹Java代码的样式进行控制。将所有这些样式文件导出成 XMLæ–‡äšg后,同编码规范一起归档,供所有项目成员ä‹É用ã€?/p>

步骤二:(x¨¬)é?r¨´n)态代码分æž?/strong>

在完成源代码的开发以后,下面要进行的工作ž®±æ˜¯å®¡è§†å’Œæµ‹è¯•代码。除äº?ji¨£n)通过˜qè¡Œ‹¹‹è¯•代码来检查功能之外,˜q˜èƒ½åˆ©ç”¨ä¸€äº›é™(r¨´n)态分析工å…äh¥å¿«é€Ÿã€ç›´æŽ¥åœ° 提高代码质量。静(r¨´n)æ€ä»£ç åˆ†æžå·¥å…·åÆˆä¸éœ€è¦è¿è¡Œä»£ç ï¼Œå¯ä»¥ç›´æŽ¥å¯¹Javaæ–‡äšgå’ŒClassæ–‡äšg˜q›è¡Œåˆ†æžåQŒé€šè¿‡ä¸€äº›æ£€æŸ¥æ¡ä»¶çš„讄¡½®åQŒå¿«é€Ÿæ‰¾åˆîC»£ç ä¸­çš„错误和æ½?在缺陗÷€‚现在的é?r¨´n)态分析工具很多,有FindBugs、PMD、IBMRationalToolåQŒç­‰½{‰ã€‚在˜q™é‡ŒåQŒé€‰æ‹©FindBugsä½œäØ“(f¨´)é?r¨´n)态代码分析工 å…—÷€‚FindBugs可以和日常开发工具Eclipse˜q›è¡Œé›†æˆåQŒåœ¨å¼€å‘过½E‹ä¸­åQŒå°±å¯ä»¥æ–¹ä¾¿çš„开始静(r¨´n)态代码的‹‚€(g¨¨)查。通过‹‚€(g¨¨)查Classæ–‡äšg或者JARæ–?ä»Óž¼Œž®†å­—节码和一¾l„缺é™äh¨¡å¼è¿›è¡Œå¯¹æ¯”,来发现可能存在的代码问题。在Eclipse的开发环境中åQŒç”¨æ’äšg安装的方式安装了(ji¨£n)Findbugs后,åœ?Eclipse的配¾|®é€‰é¡¹ä¸­å°±ä¼?x¨¬)多出来FindBugs的配¾|®é€‰é¡¹ã€‚可以对自己的项目进行配¾|®ï¼Œé€‰æ‹©éœ€è¦çš„Detector‹‚€(g¨¨)查代码ã€?/p>

FindBugs的配¾|®é€‰é¡¹

å›?.FindBugs的配¾|®é€‰é¡¹

讄¡½®å¥½è‡ªå·Þqš„规则后,在需要检查的代码文äšg夹上点击右键åQŒå°±å¯ä»¥å¯åЍFindBugs‹‚€(g¨¨)查。代码可以是一个项目,也可以只是几个文件ã€?/p>

˜qè¡ŒFindBugs

å›?.˜qè¡ŒFindBugs

‹‚€(g¨¨)查完毕后åQŒä¼š(x¨¬)出现FindBugs视图åQŒæŠŠæ‰€æœ‰æ£€æŸ¥çš„¾l“æžœæ ÒŽ(gu¨©)®é”™è¯¯åˆ†ç»„展示。点å‡È»“果里面的每一个错误,ä¼?x¨¬)自动打开对应的代码。当æ ÒŽ(gu¨©)®è§„则æ”?正了(ji¨£n)所有的错误åQŒæˆ–者说潜在错误åQŒè¿™äº›ä»£ç ä¹Ÿž®±é€šè¿‡äº?ji¨£n)é?r¨´n)态代码检查。FindBugs的检查结果可以是XMLæ–‡äšgåQŒä¹Ÿå¯ä»¥æ˜¯æ–‡æœ¬æ–‡ä»Óž¼Œä¾¿äºŽ™å¹ç›®çš„集成管ç?和检查保存ã€?/p>

FindBugs‹‚€(g¨¨)查结æž? src=

å›?.FindBugs‹‚€(g¨¨)查结æž?/p>

步骤三:(x¨¬)单元‹¹‹è¯•

单元‹¹‹è¯•用例设计和评å®?/strong>

单元‹¹‹è¯•是èÊY件开发过½E‹ä¸­é‡è¦çš„质量保证环节,在此环节中,设计和评审对于保证整个单元测试过½E‹çš„完整性和有效性来说十分重要。设计阶ŒDµéœ€è¦å…· 体考虑要对哪些代码单元˜q›è¡Œ‹¹‹è¯•åQŒè¢«‹¹‹å•元之间的关系åQŒæµ‹è¯•策略,以及(qi¨¢ng)单元‹¹‹è¯•用例设计½{‰ï¼Œòq¶æœ€¾lˆè¾“出《单元测试用例设计》文档,用来指导具体的单元测è¯?执行。在用例设计中,通过对代码单元输入和期待输出的定义来保证该单元的功能正确性,边界值的‹¹‹è¯•和异常测试非帔R‡è¦ã€‚同时也配合‹¹‹è¯•用例和功能块的匹é…?æ–ÒŽ(gu¨©)³•来衡量用例设计的完整性ã€?/p>

在用例设计完成之后,下一步的工作ž®±æ˜¯˜q›è¡Œ‹¹‹è¯•用例的评审。个人的理解和经验始¾lˆæ˜¯æœ‰é™çš„,用例评审可以借集体之力,对用例设计进入查漏补¾~ºï¼Œ ˜q›ä¸€æ­¥ä¿è¯æµ‹è¯•用例的有效性。由于单元测试属于白盒测试范ç•ß_(d¨¢)¼Œå®ƒä¸»è¦é€šè¿‡å¯¹ä»£ç çš„逻辑¾l“æž„˜q›è¡Œåˆ†æžæ¥è®¾è®¡æµ‹è¯•用例,因此åQŒè¯„审员的选择最好以理解代码逻辑 ¾l“构为前提,如果评审员来自相å…?a class="fllink" target="_blank">模块åQŒè¿˜èƒ½å¤Ÿæœ‰æ•ˆçš„发现模块相å…Ïx€§å’Œä¾èµ–性所带来的问题ã€?/p>

模拟对象技�/strong>

在实际项目中åQŒå¼€å‘äh员自å·Þqš„代码往往需要和其他的代码模块或¾pȝ»Ÿ˜q›è¡Œäº¤äº’åQŒä½†åœ¨æµ‹è¯•çš„˜q‡ç¨‹ä¸­ï¼Œ˜q™äº›éœ€è¦è¢«è°ƒç”¨çš„真实对象常常很难被实例化,æˆ?者这些对象在某些情况下无法被用来‹¹‹è¯•åQŒä¾‹å¦‚,真实对象的行为无法预‹¹‹ï¼ŒçœŸå®žå¯¹è±¡çš„行为难以触发,或者真实对象的˜qè¡Œé€Ÿåº¦å¾ˆæ…¢ã€‚这时候,ž®±éœ€è¦ä‹É用模拟对 象技æœ?Mock)åQŒåˆ©ç”¨ä¸€ä¸ªæ¨¡æ‹Ÿå¯¹è±¡æ¥æ¨¡æ‹Ÿæˆ‘们的代码所依赖的真实对象,来帮助完成测试,提高?g¨°u)¹‹è¯•覆盖率,从而提高代码质量。模拟对象技术利用了(ji¨£n)在面å?接口的编½E‹ä¸­åQŒç”±äºŽä»£ç ç›´æŽ¥å¯¹æŽ¥å£˜q›è¡Œè°ƒç”¨åQŒæ‰€ä»¥ä»£ç åƈ不知道引用的是真实对象还是模拟对象,˜q™æ ·ž®±å¯ä»¥é¡ºåˆ©çš„完成对代码的‹¹‹è¯•åQŒæ¨¡æ‹ŸæŠ€æœ¯æœ‰å¾ˆå¤š¿Uï¼Œå¦?jMockåQŒEasyMockåQŒMockitoåQŒPowerMock½{‰ç­‰ã€‚其中Mockito消除äº?ji¨£n)对期望行äØ?f¨´)的需求,避免äº?ji¨£n)这些代码的大量初始化ã€?/p>

Mockito½CÞZ¾‹

å›?.Mockito½CÞZ¾‹

在模拟对象过½E‹ä¸­åQŒå…ˆæ¨¡æ‹Ÿä¸€ä¸ªéœ€è¦è°ƒç”¨çš„List对象LinkedListåQŒå†è®‘Ö®š˜q™ä¸ªå¯¹è±¡çš„行为,当调用get(0)的时候,˜q?å›?#8221;first”ã€‚è¿™æ øP¼Œ‹¹‹è¯•代码ž®±å¯ä»¥åˆ©ç”¨è¿™ä¸ªå¯¹è±¡æ¥‹¹‹è¯•我们的功能代码,需要调用和˜q”回值的时候,可以™åºåˆ©çš„得到模拟对象的˜q”回倹{€‚也需要对模拟对象 ˜q›è¡Œé”™è¯¯æƒ…况的模拟,保证代码寚w”™è¯¯çš„处理的正¼‹®æ€§ã€?/p>

‹¹‹è¯•覆盖率分æž?/strong>

ä¸ÞZº†(ji¨£n)衡量单元‹¹‹è¯•的质量和覆盖的范å›ß_(d¨¢)¼Œéœ€è¦å¯¹å•å…ƒ‹¹‹è¯•的代码进行测试覆盖分析。常用的衡量‹¹‹è¯•覆盖率的指标主要有语句覆盖率、分支覆盖率、èµ\å¾?覆盖率、条件覆盖率和方法覆盖率½{‰ã€‚具体采用哪些指标可以根据项目的实际情况来定åQŒä»¥é¿å…å› è¿‡é«˜çš„æŒ‡æ ‡å¢žåŠ äº?ji¨£n)代码开发äh员的工作量而媄(ji¨£ng)响了(ji¨£n)™å¹ç›®æ•´ä½“的进 度ã€?/p>

EMMA是一‹Æ¾æ¯”较流行的开源Java‹¹‹è¯•è¦†ç›–çŽ‡åˆ†æžå·¥å…øP¼Œæ”¯æŒ¾c…R€æ–¹æ³•、代码行、基本代码块½{‰å¤š¿Uç±»åž‹çš„‹¹‹è¯•覆盖率分析,支持ž®†è¦†ç›–率分析¾l?果导å‡ÞZØ“(f¨´)多种格式的报告,òq‰™‡‡ç”¨å¤š¿Ué¢œè‰²æ¥é«˜äº®æ˜„¡¤ºä¸åŒçš„覆盖率状态。EclEmma是一‹Æ‘ÖŸºäºŽEMMAçš„Eclipse插äšgåQŒæ–¹ä¾¿åœ¨ EclipseIDE中进行测试覆盖率分析。如å›?åQŒåœ¨‹¹‹è¯•用例写好后,可以在右键点å‡?y¨¢n)Lµ‹è¯•ç±»åQŒé€‰æ‹©CoverageAs->JUnitTestã€?/p>

˜qè¡Œ‹¹‹è¯•覆盖分析

å›?.˜qè¡Œ‹¹‹è¯•覆盖分析

单元‹¹‹è¯•跑完后,Coverage视图中会(x¨¬)昄¡¤ºæ‰€é€‰æ‹©çš„æµ‹è¯•的覆盖率。双å‡?y¨¢n)L‰“开某一具体的类后,可以看到高亮昄¡¤ºçš„覆盖分析结果,如图10所 ½Cºã€‚红色代表测试没有覆盖到该行åQŒé»„色表½Cºéƒ¨åˆ†è¦†ç›–,¾l¿è‰²çš„行表示该行在本‹Æ¡æµ‹è¯•中被覆盖到ã€?/p>

查看‹¹‹è¯•覆盖分析¾l“æžœ

å›?0.查看‹¹‹è¯•覆盖分析¾l“æžœ

在Coverage视图中可以通过点击鼠标右键ž®†æµ‹è¯•覆盖分析的¾l“果导出成需要的格式åQŒä¾‹å¦‚HTMLã€?/p>

导出‹¹‹è¯•覆盖分析¾l“æžœ

å›?1.导出‹¹‹è¯•覆盖分析¾l“æžœ

å›?2昄¡¤ºäº?ji¨£n)导出的reportã€?/p>

‹¹‹è¯•覆盖分析报告

å›?2.‹¹‹è¯•覆盖分析报告

ä¸ÞZº†(ji¨£n)保证单元‹¹‹è¯•的有效性和质量åQŒå¯ä»¥è§„定一个测试覆盖率的下限,例如所有的包和¾cȝš„覆盖率必™å»è¾¾åˆ?0%以上。不˜q‡å€¼å¾—注意的是åQŒä¸è¦å•¾U¯è¿½ 求高覆盖率,要同时注意测试用例的质量åQŒå¦‚果测试用例本íw«å°±å†™çš„æœ‰é”™è¯¯ï¼Œé‚£ä¹ˆå³ä‹É‹¹‹è¯•覆盖率很高也没有意义ã€?/p>

步骤四:(x¨¬)持箋集成

持箋集成(ContinuousIntegration)是利用一¾pÕdˆ—çš„å·¥å…øP¼Œæ–ÒŽ(gu¨©)³•和规则,做到快速的构徏开发代码,自动的测试化åQŒæ¥æé«˜å¼€å?ä»£ç çš„æ•ˆçŽ‡å’Œè´¨é‡ã€‚åˆ©ç”¨è‡ªåŠ¨æž„å»ºå·¥å…øP¼Œéšæ—¶éƒ½èƒ½æŠŠæäº¤çš„代码构徏出来åQŒæä¾›ä¸€ä¸ªå¯ä»¥æµ‹è¯•ä‹É用的版本åQŒè®©ç”¨æˆ·å’Œå¼€å‘äh员同时看到相同的功能åQŒå°½æ—©çš„发现问题 和错误,也可以尽快的得到‹¹‹è¯•人员和用æˆïL(f¨¥ng)š„反馈ã€?/p>

要做到持¾l­é›†æˆï¼Œž®Þp¦åˆ©ç”¨ä¸€¾pÕdˆ—工具åQŒæŠŠå¼€å‘过½E‹ä¸­çš„重复工ä½?a class="fllink" target="_blank">自动åŒ?/a>ã€‚æ­å»ø™‡ªåŠ¨çš„æž„å¾æœåŠ¡å™?/a>åQ?è‡ªåŠ¨çš„è¿›è¡Œå•å…ƒæµ‹è¯•å’Œå‘å¸ƒæ–°ç‰ˆæœ¬ï¼Œä¸€ä¸ªé›†æˆçš„æœåŠ¡å™¨å¯ä»¥æä¾›æž„å»ø™¿‡½E‹çš„¾l“果报告åQŒè‡ªåŠ¨é€šçŸ¥å¼€å‘äh员构建结果,òq¶ä¸”保存历史数据ã€?IBMRationalTeamConcert(RTC)可以提供工作ä»ÕdŠ¡çš„ç®¡ç†ï¼Œ™å¹ç›®è®¡åˆ’的安排,代码版本½Ž¡ç†æŽ§åˆ¶åQŒè‡ªåŠ¨æž„å»ºå¯ç”¨ç‰ˆæœ¬ï¼Œç”Ÿæˆæž„å¾¾l“æžœæŠ?告。这些过½E‹æž„成了(ji¨£n)™å¹ç›®çš„æŒ¾l­é›†æˆè¿‡½E‹ï¼Œå…¶ä¸­åQŒç‰ˆæœ¬çš„自动构徏和代码的自动单元‹¹‹è¯•是持¾l­é›†æˆçš„关键˜q‡ç¨‹åQŒRTC在这些过½E‹ä¸Šæä¾›äº?ji¨£n)有力的支持ã€?/p>

自动构徏

RTC提供äº?ji¨£n)buildengine来负责构建buildåQŒé¦–选,启动buildengineåQŒåƈ和RTC服务器徏立了(ji¨£n)˜qžæŽ¥ã€‚再创徏™å¹ç›®çš?build定义。在˜q™ä¸ªå®šä¹‰ä¸­ï¼Œéœ€è¦è®¾å®šç¼–译哪äº?a class="fllink" target="_blank">模块的代码,需要蟩动哪个ANTæ–‡äšg来启动编译,和一些编译过½E‹ä¸­çš„参数的è®?定。当˜q™äº›éƒ½å‡†å¤‡å¥½äº?ji¨£n),¾~–译对于™å¹ç›®è€Œè¨€åQŒå°±å˜æˆä¸€ä¸ªç®€å•的事情ã€?/p>

可以看到åQŒé€šè¿‡åœ¨build定义上,点击è¯äh±‚构徏åQŒå°±å¯ä»¥è§¦å‘一‹Æ¡æž„廸™¿‡½E‹ã€‚选择需要的构徏参数åQŒè¿™ä¸ªè¿‡½E‹å°±ä¼?x¨¬)在后台˜qè¡Œã€‚每一个开发äh员,å?äº?ji¨£n)ç¨è®¸çš„ä»£ç æ”¹å˜å’Œæäº¤ï¼Œéƒ½å¯ä»¥è§¦å‘æ–°çš„æž„å»ø™¿‡½E‹ï¼Œæ¥ä¿è¯æˆ‘们代码的有效性。申请一个新的构建的˜q‡ç¨‹å¦‚图13、图14所½Cºã€?/p>

甌™¯·ä¸€ä¸ªæ–°çš„æž„å»? src=

å›?3.甌™¯·ä¸€ä¸ªæ–°çš„æž„å»?/p>

构徏甌™¯·ç•Œé¢

å›?4.构徏甌™¯·ç•Œé¢

当构建结束后。RTC服务器会(x¨¬)提供构徏¾l“果报告。开发äh员可以查询到˜q™æ¬¡æž„徏的详¾l†ä¿¡æ¯ã€?/p>

构徏¾l“æžœ

å›?5.构徏¾l“æžœ

整个开发过½E‹ä¸­åQŒæž„建版本的˜q‡ç¨‹åº”该是无数次的,通过每次构徏åQŒéƒ½å¯ä»¥å¾—到当时代码的编译情况,òq¶ä¸”可以得到一个可˜qè¡Œçš„èÊY件版本。在构徏定义 上,RTC支持讄¡½®æž„徏计划。定时自动的触发一‹Æ¡æž„建ã€?/p>

构徏定义

�6.构徏定义

自动单元‹¹‹è¯•

构徏可以自动äº?ji¨£n),重点提高代码质量的单元测试呢åQŸå¦‚果每一天的代码åQŒæ¯ä¸€ä¸ªç‰ˆæœ¬çš„代码åQŒéƒ½å·²ç»é€šè¿‡äº?ji¨£n)我们的单元‹¹‹è¯•åQŒè¿™æ ähˆ‘们就能对代码的质é‡?有了(ji¨£n)基本的保证。在构徏脚本的自动调用过½E‹ä¸­åQŒé€šè¿‡ANT的脚本,可以加上JUnitåQŒEMMAåQŒFindBugsçš„ANT脚本调用åQŒæ¯ä¸€‹Æ¡çš„æž„徏åQŒéƒ½å?以把˜q™äº›‹‚€(g¨¨)查工作自动的˜q›è¡Œä¸€éæµ‹è¯•。这些测试都要生成测试结果报告,RTC不能提供˜q™äº›æŠ¥å‘Šçš„展½Cºï¼Œž®±å¯ä»¥åˆ©ç”¨Hudson˜q™ä¸ªå¼€æºå·¥å…øP¼Œé›†æˆ‹¹‹è¯•报告 来方便查阅ã€?/p>

自动‹¹‹è¯•报告

å›?7.自动‹¹‹è¯•报告

步骤五:(x¨¬)代码评审和重æž?/strong>

代码评审(CodeReview)是Java™å¹ç›®å¼€å‘过½E‹ä¸­çš„一个重要步骤,代码评审可以帮助发现é?r¨´n)态代码分析过½E‹ä¸­æ— æ³•发现的一些问题,例如 代码的编写是否符合编码规范,代码在逻辑上或者功能上是否存在错误åQŒä»£ç åœ¨æ‰§è¡Œæ•ˆçŽ‡å’Œæ€§èƒ½ä¸Šæ˜¯å¦æœ‰éœ€è¦æ”¹˜q›çš„地方åQŒä»£ç çš„æ³¨é‡Šæ˜¯å¦å®Œæ•´æ­£ç¡®åQŒä»£ç æ˜¯å¦å­˜åœ?冗余和重复。代码评审还可以帮助新进入项目组的成员快速学ä¹?f¨¤n)和了(ji¨£n)è§£™å¹ç›®åQŒä¿ƒ(j¨©)˜q›ç»éªŒåˆ†äº«ï¼ŒåŒæ—¶ä¹Ÿèƒ½ä¿è¯™å¹ç›®æˆå‘˜çš„良好沟通。代码评审主要包括两¿UåŞ式,同çñ” 评审(PeerReview)和小¾l„评å®?GroupReview)。同¾U§è¯„审主要指™å¹ç›®æˆå‘˜é—´çš„互相评审åQŒå°¾l„评审是指通过召开评审ä¼?x¨¬)è®®åQŒé¡¹ç›®æˆå‘˜ä¸€èµ?寚w¡¹ç›®ä»£ç è¿›è¡Œè¯„审ã€?/p>

ä¸ÞZº†(ji¨£n)提高代码评审的有效性和效率åQŒå¯ä»¥å€ŸåŠ©ä¸€äº›å¤–éƒ¨å·¥å…øP¼Œæ¯”较常用的代码评审工å…ähœ‰Jupiterå’ŒCodeStriker。Jupiteræ˜?一‹Æ‘Ö¼€æºçš„Eclipse插äšgåQŒå…è®¸æˆå‘˜å°†è¯„审意见定位到真实代码的具体行,ç”׃ºŽä»£ç è¯„审的结果以XMLæ–‡äšgçš„åŞ式保存,所以可以把¾l“果提交到版本管ç?a class="fllink" target="_blank">服务å™?/a>˜q?行共享。图18昄¡¤ºäº?ji¨£n)ä‹É用Jupiter˜q›è¡Œä»£ç è¯„审的界面ã€?/p>

Jupiter代码评审界面

�8.Jupiter代码评审界面

在代码评审ä“Q务创建后åQŒJupiterž®†ä»£ç è¯„审分成三个阶ŒDµï¼Œä¸ªäh评审阶段(IndividualPhase)、团队评审阶ŒD?(TeamPhase)和问题修复阶ŒD?ReworkPhase)。在个äh评审阶段åQŒè¯„审成员将发现的代码问题或者缺陯‚®°å½•下来,每个问题都会(x¨¬)ä½œäØ“(f¨´)一个记 录保存在评审表格中。在团队评审阶段åQŒå›¢é˜Ÿçš„全部或者部分成员会(x¨¬)一起对个äh评审阶段发现的问题进行定性,如果问题¼‹®å®žå­˜åœ¨åQŒå°±ž®†è¯¥é—®é¢˜åˆ†é…¾l™æŸä¸ªæˆå‘˜åŽ»è§?冻I¼Œòq¶åœ¨Jupiter中将该问题设¾|®æˆç›¸åº”的状态。在问题修复阶段åQŒå›¢é˜Ÿæˆå‘˜ä¼š(x¨¬)修复属于自己的问题,òq¶å°†ç›¸åº”的记录设¾|®æˆå·²è§£å†³ç­‰æ­£ç¡®çš„状态ã€?/p>

Codestriker是一‹Æ‘ÖŸºäºŽWebçš„å¸¸ç”¨ä»£ç è¯„å®¡å·¥å…øP¼Œå¯¹ä»£ç çš„评审可以针对某一具体行,也可以针å¯ÒŽ(gu¨©)•´ä¸ªä»£ç æ–‡ä»Óž¼Œè¯„审意见ä¼?x¨¬)被保存å?a class="fllink" target="_blank">数据åº?/a>中。评审äh员可以同时看到其他äh的评论,代码作者也可以针对某一具体的评 论回复。Codestriker支持邮äšg通知åQŒè¿˜å¯ä»¥åŒç‰ˆæœ¬æŽ§åˆ¶æœåС噍˜q›è¡Œé›†æˆåQŒä»¥è·Ÿè¸ªå’Œæ˜¾½Cºæ–‡ä»¶å†…容的改变。图19昄¡¤ºäº?ji¨£n)Codestriker的界 面ã€?/p>

Codestriker报告界面

�9.Codestriker报告界面

在实践中å¯ÒŽ(gu¨©)‰€æœ‰ä»£ç è¿›è¡Œå°¾l„评审会(x¨¬)比较è´ÒŽ(gu¨©)—¶åQŒæ‰€ä»¥å¯ä»¥æ ¹æ®å®žé™…情冉|¥æŒ‘选一些核å¿?j¨©)代码进行小¾l„评审,或者在™å¹ç›®çš„前期安排较多的ž®ç»„评审åQŒç­‰™å?目组的成员对代码评审的标准和要求有较好的理解åQŒè¿›è¡Œä»£ç è¯„审的¾léªŒæé«˜åŽï¼Œž®±å¯ä»¥é€æ¸å‡å°‘ž®ç»„评审的次敎ͼŒä»Žè€Œè¾¾åˆ°å¤§éƒ¨åˆ†ä»£ç å³ä‹É只进行同¾U§è¯„审也能保 证很好的质量ã€?/p>

通过代码评审发现的问题要通过代码重构å?qi¨¢ng)时解决掉,较小的不涉å?qi¨¢ng)多äh代码的重构可以由™å¹ç›®æˆå‘˜è‡ªå·±å€ŸåŠ©Eclipse的重构功能完成,不同™å¹ç›® 成员写的实现相同功能的不同代码要通过讨论整合成公å…Þqš„¾cÀLˆ–者方法。比较复杂的或者比较高层次的重构工作,例如整个™å¹ç›®å±‚面的代码组¾l‡åŞ式的改变需要由æ•?个项目组共同讨论完成ã€?/p>

¾l“论

软äšg开发没有一成不变、万能通用的流½E‹å’Œæ–ÒŽ(gu¨©)³•åQŒå¸Œæœ›å¤§å®¶èƒ½ä»Žæœ¬æ–‡å¾—到启发和收益åQŒç»“合æ?zh¨¨n)¨çš„实际项目特点,实践以上步骤和方法,òq¶åŠ ä»¥å®Œå–„å’Œæ”?˜q›ï¼Œå…±åŒæ‰“造高效高质量的Java代码åQŒäØ“(f¨´)æ‚(zh¨¨n)¨çš„™å¹ç›®æˆåŠŸå¥ å®šåšå®žçš„åŸº¼‹€ã€?/p>

]]>
IT™å¹ç›®½Ž¡ç†çš„å…­¿Ué”™è¯¯æ€ç»´http://www.aygfsteel.com/freeman1984/archive/2010/09/05/331071.html@joe@joeSun, 05 Sep 2010 04:15:00 GMThttp://www.aygfsteel.com/freeman1984/archive/2010/09/05/331071.htmlhttp://www.aygfsteel.com/freeman1984/comments/331071.htmlhttp://www.aygfsteel.com/freeman1984/archive/2010/09/05/331071.html#Feedback0http://www.aygfsteel.com/freeman1984/comments/commentRss/331071.htmlhttp://www.aygfsteel.com/freeman1984/services/trackbacks/331071.html

错误一åQšé”™è¯¯çš„需求调研阶ŒDµï¼Œå¯ÆD‡´å¾ˆå¤š™å¹ç›®æ°¸è¿œæ— æ³•¾l“束!

在èÊY件行业,在界面设计没有正式展现给客户之前åQŒæ‰€æœ‰çš„工作都处于需求调研阶ŒDüc(di¨£n)€‚其实徏½{‘行业已¾lç»™æˆ‘们做好äº?ji¨£n)先例ï¼?x¨¬)客户买房子之前是先要看看æ äh¿ 房和模型的,什么都看不到这房子你敢ä¹îC¹ˆ?除非你不是自å·×ƒ½!

而在我们所学的软äšg工程概念模型中,˜q™æ˜¯ä¸‰ä¸ªé˜¶æ®µåQšéœ€æ±‚调研、需求分析、概要设计ã€?/p>

在客æˆähŠŠä»–ä»¬æƒŒ™¦½Ž¡ç†çš„业务模块以å?qi¨¢ng)与之相关的业务数据åQŒæµ½E‹ï¼Œè¡¨å•交付你的时候,你千万不要把˜q™ä¸ªé˜¶æ®µå®šæ€§äØ“(f¨´)éœ€è¦è°ƒç ”ç»“æŸï¼Œå†™å‡ºã€Šéœ€è¦è§„æ ÆD¯´æ˜?书》就可以äº?ji¨£n)。大量的实践证明åQŒåœ¨æ¦‚要设计阶段所衍生出来的需求工作量是之前的5~10倍,甚至更多åQŒå› ä¸ø™¿™è¦çœ‹è®¾è®¡äººå‘˜çš„业务沟通能力和建模水åã^ã€?/p>

有实施经验比较丰富的™å¹ç›®½Ž¡ç†äººå‘˜æ€È»“è¯ß_(d¨¢)¼Œåœ¨ä¸­å›½å®žæ–½èÊY仉™¡¹ç›®ï¼Œå¿…须以咨询方式展开åQšè¦æŽ¨å‡ºè‡ªå·±çš„æ–¹æ¡ˆï¼Œè€Œä¸èƒ½å®Œå…¨æŒ‰ç…§å®¢æˆäh¥æéœ€æ±‚作™å¹ç›®ã€‚这是一 ¿Uå¾ˆå¥½çš„解决思èµ\åQŒä½†æ— æ³•解决所有实施项目的éšùN¢˜ã€‚è¿™¿Uè§£å†Ïx–¹æ¡ˆçš„前提åQŒè¦ä¹ˆé¡¹ç›®å®žæ–½è€…有成熟的业务模型,要么有成熟的产品(包含äº?ji¨£n)成熟的业务模åž?åQŒå¦ 则是不可能做到的。但如果没有3~5òq´åœ¨åŒä¸€è¡Œä¸šåQŒåŒä¸€é¢†åŸŸçš„实施经验和理论æ€È»“åQŒæ²¡æœ‰å“ªå®¶IT企业能达到这æ ïL(f¨¥ng)š„前提要求ã€?/p>

其实得出˜q™æ ·¾l“论的深层原因,是因为国内多æ•îC¼ä¸šç®¡ç†æ€æƒ³ä¸æˆç†Ÿï¼Œæ›´è°ˆä¸ä¸Šå®Œå–„的业务模型,所以客æˆïL(f¨¥ng)š„æ€ç»´ä¸€å®šç¨‹åº¦æ˜¯å‘散的,˜q˜æœªå½¢æˆ¾pȝ»Ÿã€‚甚臌™¿˜ 有些客户的领å¯û|¼Œè„‘子中有很多新鲜的点子,他都有可能想在企业信息化的实施过½E‹ä¸­åŠ è¿›æ¥ï¼Œ˜q™å¯¹æŠŠæŽ§™å¹ç›®èŒƒå›´å’Œé¡¹ç›®å®žæ–½æ•ˆæžœæ¥è¯ß_(d¨¢)¼Œéƒ½å¯èƒ½æ˜¯çùNš¾çš„开始ã€?/p>

所以,要做好实施项目,实施者必™åÀLœ‰å¾ˆå¥½çš„业务徏模能力,快速的¾l™å®¢æˆ·å±•½Cºåˆç†çš„软äšg原型软äšgDemoã€?/p>

误‚®°ä½ï¼š(x¨¬)软äšg实施™å¹ç›®åQŒä¸€å®šè¦¾l™ç”¨æˆïL(f¨¥ng)œ‹åˆ°æ ·æ¿æˆ¿è½¯äšgDemoåQŒæ‰½Ž—需求调研结æ?

错误二:(x¨¬)IT技术äh员不需要掌握项目管ç?/strong>

有这¿Uçœ‹æ³•çš„äºÞZ¸åœ¨å°‘数。根据观察,之所以åŞ成这¿Uçœ‹æ³•,一是对™å¹ç›®çš„真正概念不清晰åQŒäºŒæ˜¯å¯¹½Ž¡ç†çš„æ¦‚å¿ëŠ¥žè¯äº†(ji¨£n)åQŒæŠŠ½Ž¡ç†ç†è§£æˆäº†(ji¨£n)高深莫测åQŒéžä¸€èˆ¬äh 能做的事情。首先有必要普及(qi¨¢ng)一下项目的概念ã€?/p>

寚w¡¹ç›®æœ‰å¾ˆå¤šäºÞZ¸‹˜q‡å®šä¹‰ï¼Œ™å¹ç›®½Ž¡ç†åœ£ç»PMBOK½W¬ä¸‰ç‰?2004ç‰?的定义是åQšäØ“(f¨´)创造某个独特的产品或服务,或完成某独特的ä“Q务所做的临时性努 力。围¾l•这句话PMBOK做了(ji¨£n)详细的解释和举例说明åQŒå¾ˆä¸¥è°}åQŒæƒ³äº?ji¨£n)解的请学ä¹?f¨¤n)PMBOK。因为都是翻译过来的定义åQŒç¿»è¯‘å¾—˜q‡äºŽæœ¯è¯­åŒ–很å®ÒŽ(gu¨©)˜“把äh¾l•进去,åœ?国内不排除已¾læ‹¿åˆ°PMP认证证书的专业äh士还搞不清楚™å¹ç›®½I¶ç«Ÿæ˜¯ä»€ä¹ˆã€‚笔者在˜q™é‡Œåªæƒ³ç”¨æ±‰è¯­æœ€é€šä¿—的语­a€æ¥è¯´æ˜Žä»€ä¹ˆæ˜¯™å¹ç›®å’Œé¡¹ç›®ç®¡ç†ã€?/p>

™å¹ç›®åQŒå°±æ˜¯åœ¨é™å®šçš„æ—¶é—´è¦äººå®Œæˆçš„事。记住三个关键字卛_¯æŠŠæ¡åQšäh、时、事ã€?/p>

™å¹ç›®½Ž¡ç†ž®±æ˜¯å‚与者用什ä¹?知识、技能、工兗÷€æ–¹æ³?来圆满地òq²å¥½˜q™äšg事ã€?/p>

明白äº?ji¨£n)这些,你就会(x¨¬)明白从日常生活的吃喝拉撒到国家½Ž¡ç†åQŒå¤„处都是项目,处处都需要项目管理,也就能明白每个äh都需要项目管理,也就能理解学ä¼?x¨¬)äº?ji¨£n)™å?目管理将ä¼?x¨¬)多么受益无½IøP¼Œå¨´ç†Ÿ˜qç”¨™å¹ç›®½Ž¡ç†æ€ç»´ž®†æ— å¾€ä¸èƒœ!

但需要提醒大家一点,现在的PMBOK是把传统刉™€ è¡Œä¸šã€å¾½{‘行业、IT行业½{‰å¤šä¸ªè¡Œä¸šé¢†åŸŸçš„™å¹ç›®½Ž¡ç†çŸ¥è¯†¾p…合åˆîCº†(ji¨£n)ä¸€èµøP¼Œå¤§è€Œå…¨åQŒä½†é’ˆå¯¹æ€§ä¸å¤Ÿå¥½åQ?所以很多äh觉得PMBOK理论化太强,学完äº?ji¨£n)觉得很多东西没用。现在国际知名的另外一套项目管理认证,IPMP是按照工作岗位能力进行了(ji¨£n)分çñ”åQŒä¹Ÿæ²¡æœ‰é’ˆå¯¹ 行业˜q›è¡Œåˆ†è§£ã€‚所以,无论拿到PMP或者IPMPåQŒå¾ˆå¤šäh都会(x¨¬)有同æ ïL(f¨¥ng)š„困惑。据äº?ji¨£n)è§£åQŒPMI已经准备做这æ ïL(f¨¥ng)š„æ”¹è¿›åQŒè¿™æ˜¯ä¸€ä¸ªå¾ˆå¥½çš„æ¶ˆæ¯ã€?/p>

错误三:(x¨¬)忘记™å¹ç›®ç›®æ ‡

你看到这个题目什么感è§?很多äºÞZ¼š(x¨¬)觉得˜q™æ ·çš„错误怎么ä¼?x¨¬)发ç?几乎没有äºÞZ¼š(x¨¬)è®¤äØ“(f¨´)自己犯这个错è¯?忘记™å¹ç›®ç›®æ ‡æœ‰ä¸¤¿Uæƒ…形:(x¨¬)一是从开始接手项目就没弄 清楚™å¹ç›®çš„目标是什ä¹?二是虽然清楚™å¹ç›®çš„目标是什么,但却òq²ç€è·Ÿå®Œæˆé¡¹ç›®ç›®æ ‡æ— å…Ÿë€ç”šè‡Ïxœ‰å®³çš„事ã€?/p>

时刻铭记™å¹ç›®ç›®æ ‡æ˜¯é¡¹ç›®ç®¡ç†å¾ˆé‡è¦çš„一个思维åQŒé¡¹ç›®æ‰€æœ‰çš„‹zÕdŠ¨éƒ½å›´¾l•这个展开。可是随着™å¹ç›®çš„逐步开展,ž®¤å…¶æ˜¯å¤æ‚项目:(x¨¬)人多、事多、周期长åQŒå¾ˆå¤?™å¹ç›®¾lç†ä¼?x¨¬)é€æ¸å› äØ“(f¨´)个äh喜好而忘è®îCº†(ji¨£n)™å¹ç›®çš„大目标åQŒæ¯”较典型的有:(x¨¬)技术出íw«çš„™å¹ç›®¾lç†ä¼?x¨¬)沉˜q·äºŽæŠ€æœ¯ç»†èŠ‚ï¼Œå¤§é‡æ—‰™—´èŠ±åœ¨å­¦ä¹ (f¨¤n)新技术或者一头闷在解å†ÏxŠ€æœ¯éš¾é¢?ä¸?脾气火爆的项目经理会(x¨¬)因䨓(f¨´)很多不值当的事情大发脾气,把团队搞得乌烟瘴æ°?ž®å¿ƒ(j¨©)眹{€çˆ±é¢å­çš„项目经理会(x¨¬)因䨓(f¨´)某个¾l„员无意的顶撞而怀恨在å¿?j¨©),从此æ€È»™å…?½I¿å°éž‹ï¼Œæžå¾—团队拉帮¾l“æ´¾åQŒæ¯«ä¸å›¢¾l?˜q˜æœ‰æ›´ç³Ÿ¾p•çš„åQŒæ¯”如爱玩游戏的åQŒçˆ±å–å°é…’çš„½{‰ç­‰ã€‚所有这些,无论原因是自íw«ä¸æˆç†ŸåQŒè¿˜æ˜¯ç®¡ç†ç»éªŒã€ç®¡ç†èƒ½åŠ›ä¸­‘»I¼Œ¾l?æžœéƒ½ä¸€æ øP¼Œé‚£å°±æ˜¯é¡¹ç›®å‡ºé—®é¢˜åQŒç”šè‡›_¤±è´¥ã€?/p>

™å¹ç›®¾lç†æœ€é‡è¦çš„一™å¹ä“Q务就是跟ítªä¸ŽæŽ§åˆ¶åQŒæ—¶åˆÀLŠŠæ¡é¡¹ç›®æ–¹å‘ï¼Œä¿è¯™å¹ç›®è®¡åˆ’得以™åºåˆ©æ‰§è¡ŒåQŒåå·®æŽ§åˆ¶åœ¨å¯æŽ§é£Žé™©èŒƒå›´å†…。但™å¹ç›®æ€ÀL˜¯æœ‰å¤ªå¤šæ„å¤–因素,ž®?其是周期长的™å¹ç›®åQŒäh们常用夜长梦多来形容风险ä¼?x¨¬)随旉™—´çš„åšg长而增加,所以项目经理一定时刻都要保持头脑清醒,寚w¡¹ç›®æ— ç›Šçš„事情不做åQŒå¯¹™å¹ç›®æœ‰é£Žé™©çš„事情 更不能做ã€?/p>

ä»ÖM½•™å¹ç›®åœ¨å¼€å±•过½E‹ä¸­éƒ½ä¼š(x¨¬)不断面对æœÞZ¼š(x¨¬)和诱惑,™å¹ç›®¾lç†ä¸€å®šè¦èƒ½æ˜Ž¼‹®é¡¹ç›®å¤§ç›®æ ‡åQŒæ‰èƒ½æ¸…晰地识别哪些是ä‹É™å¹ç›®æˆåŠŸçš„æœºä¼?x¨¬),哪些是ä¼?x¨¬)¾l™é¡¹ç›®å¸¦æ¥é£Žé™©çš„ 诱惑åQŒæ‰ä¼?x¨¬)少走弯路,早日成功。项目管理者联盟,™å¹ç›®½Ž¡ç†é—®é¢˜ã€?/p>

人是需要不断被提醒的,˜q™ç”±äººæ€§å†³å®šã€‚æ™ºæ…§çš„äºø™ƒ½å¤Ÿä¸æ–­çš„反省从而自我提醒,愚笨的ähä¼?x¨¬)被挫折、外界的警示不断提醒åQŒè¿™ž®±åŞ成了(ji¨£n)成功与失败的差异ã€?/p>

错误四:(x¨¬)计划不能å?/strong>

怎样才能保证™å¹ç›®æˆåŠŸ?计划åQŒè®¡åˆ’,再计划,˜q™æ˜¯™å¹ç›®½Ž¡ç†çš„æœ€ä½?j¨©ng)_®žè·?所以,做项目管理的一般都知道如何¾~–制™å¹ç›®è®¡åˆ’åQŒåƈ且很多äh能熟¾lƒçš„使用 Project工具åQŒçŸ¥é?0ž®æ—¶æˆ–è€?0ž®æ—¶æ³•则、WBS和关键èµ\径的概念。每个项目经理都ä¼?x¨¬)记住计划一旦åŞ成,ž®×ƒ¸¥æ ¼æŒ‰ç…§è®¡åˆ’去执行åQŒè€Œä¸å—某个ähã€?某äšg事的影响˜q™ä¸ªåŽŸåˆ™åQŒä¹Ÿæ˜Žç™½˜q™æ ·åšä¸ä»…能够减ž®‘大量资源的‹¹ªè´¹åQŒäñ”品的质量也能得到保障。所以,很多™å¹ç›®¾lç†æŽ’æ–¥åQŒç”šè‡Ïx‹’¾læ”¹å˜è®¡åˆ’。坚持原则,˜q™è²Œä¼?没什么错åQŒä½†çœŸçš„˜q™æ ·ä¹?

要弄清楚一件事是否有必要做åQŒé¦–先就得弄清楚两个问题åQšä¸€ã€è¿™ä»¶äº‹ä¸ÞZ»€ä¹ˆè¦å?二、做äº?ji¨£n)有什么好å¤?

那我们首先问一下编制计划的目的是什ä¹?我们知道计划是项目管理的最ä½?j¨©ng)_®žè·µï¼Œè®¡åˆ’是保证项目成功的一¿Uæ‰‹ŒDµå’Œæ–ÒŽ(gu¨©)³•åQŒåš˜q™äšgäº‹åªæœ‰ä¸€ä¸ªç›®çš„ï¼Œé‚£å°±æ˜¯äØ“(f¨´) äº?ji¨£n)保证项目成功,但前提是åQŒè¿™ä»½è®¡åˆ’是周密的、可行的。严格执行一份周密可行的™å¹ç›®è®¡åˆ’才能保证™å¹ç›®æˆåŠŸã€‚å¾ˆå¤šé¡¹ç›®ç»ç†è®°ä½äº†(ji¨£n)上面的严格执行原则,但忘è®?äº?ji¨£n)这个大前提ã€?/p>

½W¬äºŒä¸ªé—®é¢˜ï¼Œè®¡åˆ’有什么好å¤?™å¹ç›®½Ž¡ç†çš„计划方法,把项目活动、持¾l­æ—¶é—´ã€æ‰€éœ€èµ„æºæœ‰æœºåœ°ç»“åˆåœ¨ä¸€èµøP¼Œòq¶ä¸”有严格的先后‹Æ¡åºã€é‡Œ½E‹ç¢‘和关键èµ\径,å?以清晰地提醒™å¹ç›®æ‰€æœ‰æˆå‘˜åœ¨ä»€ä¹ˆæ—¶é—ß_(d¨¢)¼Œåšä»€ä¹ˆäº‹æƒ…,保证每个™å¹ç›®ä»ÕdŠ¡éƒ½å¾—ä»¥æ‰§è¡?通过对计划的执行跟踪åQŒé¡¹ç›®ç»ç†å¯ä»¥æ¸…晰地äº?ji¨£n)è§£™å¹ç›®˜q›å±•情况和偏差情况, 评估òq¶åŠ(qi¨¢ng)时有效的控制™å¹ç›®é£Žé™©åQŒä»Žè€Œä¿è¯é¡¹ç›®çš„æˆåŠŸã€?/p>

明白äº?ji¨£n)这两点åQŒæˆ‘们再来看IT™å¹ç›®ã€‚对多数IT™å¹ç›®åQŒå°¤å…¶æ˜¯è½¯äšg实施™å¹ç›®åQŒå¯åŠ¨æ—¶éƒ½å­˜åœ¨èŒƒå›´ä¸å¤Ÿæ˜Žæ™ŽÍ¼Œéœ€æ±‚不¼‹®å®šçš„æƒ…å†üc(di¨£n)€‚只有到软äšgDemo产生åQ?才可能需求清晎ͼŒèŒƒå›´¼‹®å®šåQŒè¿™äº›æƒ…况就军_®šäº?ji¨£n)IT™å¹ç›®è®¡åˆ’需要根据项目的实际情况å?qi¨¢ng)æ—¶˜q›è¡Œä¿®æ­£ã€‚如何压¾~©èŒƒå›´ç¡®å®šçš„æ—‰™—´åQŒæ—©æ—¥åˆ¶å®šå‡ºå‘¨å¯†å¯è¡Œçš„计划,是èÊY 仉™¡¹ç›®çš„一个重要课题ã€?/p>

制定一份周密可行的计划是项目经理优¿U€èƒ½åŠ›çš„ä½“çŽŽÍ¼Œž®¤å…¶æ˜¯WBS的制定,对复杂项目有很大隑ֺ¦ã€‚在è°?008奥运™å¹ç›®çš„管理体ä¼?x¨¬)æ—¶åQŒé¡¹ç›®ä¸“家曹蕑ְ± 提到奥运ä¼?x¨¬)项目最隄¡š„一点就是WBS的制å®?参见PMU¾|‘ç«™å¯?008奥运™å¹ç›®çš„访è°?。要保证™å¹ç›®çš„æˆåŠŸï¼Œž®Þp¦ä¿è¯™å¹ç›®çš„æ¯ä¸ªæ´»åŠ¨éƒ½èƒ½å¾—ä»¥é¡ºåˆ©æ‰§è¡Œã€‚æ‰€ 以,在项目情况发生变化,在原有的计划基础上有需求变更时åQŒå°±è¦æŠŠæ–°çš„ä»ÕdŠ¡è¡¥å……åˆ°è®¡åˆ’ä¸­åQŒä¿®æ­£è®¡åˆ’,¼‹®ä¿WBS的完æ•ß_(d¨¢)¼Œ¼‹®ä¿è®¡åˆ’周密可行åQŒä¹‹åŽçš„工作才是 严格执行ã€?/p>

™åÞZ¾¿æä¸€å¥ï¼Œæœ‰äº›™å¹ç›®¾lç†ä¼?x¨¬)走另外一个极端:(x¨¬)因䨓(f¨´)需求不¼‹®å®šåQŒæ‰€ä»¥ä¸åˆ¶å®š™å¹ç›®è®¡åˆ’。这同样是对计划的错误理解。即使计划不够周密,但它可以提醒我们 ™å¹ç›®çš„大目标是什么,保证™å¹ç›®å›¢é˜Ÿæ‰€é‡‡å–的行动不偏离大方向。ä“Q何一™å¹å¤§çš„项目,都可以拆分成很多ž®é¡¹ç›®ï¼ŒW(xu¨¦)BS的渐˜q›æ˜Ž¾l†ï¼Œä¹Ÿæ˜¯™å¹ç›®å¿…须完成的ä“Q务之 一åQŒæ‰€æœ‰ä“Q务的持箋旉™—´éƒ½æ˜¯è¦ä¼°½Ž—çš„åQŒå³ä½¿ä¸å¤Ÿå‡†¼‹®ï¼Œè‡›_°‘å¯ä»¥ä½œäØ“(f¨´)¾léªŒç´¯ç§¯åQŒäØ“(f¨´)今后的准¼‹®ä¼°½Ž—做äº?ji¨£n)准备。因此,™å¹ç›®çš„ä“Q何阶ŒDµéƒ½ä¸€å®šè¦æœ‰è®¡åˆ’ã€?/p>

错误五:(x¨¬)™å¹ç›®ä¸€å®šè¦ç›ˆåˆ©

™å¹ç›®ä¸€å®šè¦ç›ˆåˆ©åQŒè¿™å¥è¯è¢«æ— æ•°IT™å¹ç›®¾lç†å¥‰äØ“(f¨´)真理åQŒä¹Ÿž®±æ³¨å®šäº†(ji¨£n)要创造很多æ?zh¨¨n)²å?ä¸ÞZº†(ji¨£n)辑ֈ°˜q™ä¸ªç›®çš„åQŒå¾ˆå¤šIT™å¹ç›®¾lç†ç”šè‡³éƒ½åœ¨æ‚(zh¨¨n)‰å¿ƒ(j¨©)研究厚黑学,学习(f¨¤n) 用什么办法把ž®å¼Ÿæžå¾—热情高涨åQŒæ¯”民工累,从而用最低的成本创造最大的利润ã€?/p>

™å¹ç›®½Ž¡ç†ä½œäØ“(f¨´)战术层次的管理手ŒDµï¼Œä¸€å®šè¦æœåŠ¡äºŽæˆ˜ç•¥å±‚‹Æ¡çš„大方向。商场如战场åQŒæœ‰èƒœåˆ©ž®×ƒ¼š(x¨¬)æœ‰å¤±è´¥ã€‚äØ“(f¨´)äº?ji¨£n)战略胜利,很多战役要诱敌深入,必须打èÓ|ä»—ã€?败仗不要紧,关键要弄清楚败到什么层‹Æ¡ï¼ŒæŸå¤±åˆîC½•¿Uåœ°æ­¥ï¼Œæ˜Žç¡®æœ¬æ¬¡æˆ˜å½¹çš„真实目标,再去打这场战役,ž®×ƒ¼š(x¨¬)做到驾轻ž®Þq†ŸåQŒä»Žè€Œä¸è‡³äºŽåˆ°æœ€åŽåŞ成不仅损光|Š˜ ž®†ï¼Œ˜q˜æœªèƒ½è¯±æ•Œæ·±å…¥çš„局面ã€?/p>

开拓市(j¨¬ng)场、占领市(j¨¬ng)场、站½E›_¸‚(j¨¬ng)场、挖掘市(j¨¬ng)场,˜q™æ˜¯æ¯ä¸ªå…¬å¸å‘å±•å¿…ä¸å¯å°‘çš„æ­¥éª¤ã€‚å¾ˆå¤šé¡¹ç›®ï¼Œå¯¹å…¬å¸æ¥è¯´éƒ½æ˜¯äØ“(f¨´)äº?ji¨£n)占领å¸?j¨¬ng)场,甚至虎口夺食。这æ ïL(f¨¥ng)š„™å¹ç›®åQŒå…¬ åæ€»Žæˆ˜ç•¥å±‚面首先要求的绝对不是盈利,而是如何能把å¸?j¨¬ng)场占领åQŒç‘ô而站½E»I¼Œ™å¹ç›®¾lç†å¿…须明白˜q™ä¸ªæˆ˜ç•¥æ„å›¾ã€?/p>

òqŒ™¡¡æ˜¯é¡¹ç›®ç®¡ç†æœ€ä¸ºé‡è¦çš„一个思想åQŒä»Ž˜q‡åŽ»çš„åšå¥½è´¨é‡ã€æ—¶é—´ã€æˆæœ¬é¡¹ç›®ä¸‰è¦ç´ çš„åã^衡,到现在满­‘³ç›¸å…›_¹²¾pÖMh的需求,所有的最ä½?j¨©ng)_®žè·µå’Œç†è®ºç ”究成果åQ?都绝不会(x¨¬)提倡走极端åQŒæ€æœºå–å?利润只是™å¹ç›®çš„一个目标,òq¶ä¸”一定要明白有短期利润和长期利润之分åQŒè¿‡åˆ†å•一˜q½æ±‚利润的项目注定要å¤ÞpÓ|åQŒè¿‡åˆ†è¿½æ±‚利润的å…?åæ€¹Ÿä¸ä¼š(x¨¬)é•¿ä¹…ã€?/p>

该花的钱不能省,不该èŠÞqš„é’׃¸€åˆ†ä¹Ÿä¸è¦èŠ±ï¼Œ™å¹ç›®¾lç†æŠŠæˆæœ¬æŽ§åˆ¶åœ¨åˆç†çš„预½Ž—范围内åQŒå°±æ˜¯æˆæœ¬æŽ§åˆ¶çš„æˆåŠŸã€‚ä¸‡ä¸‡ä¸å¯äØ“(f¨´)äº?ji¨£n)把一个注定要赔钱的项目做得盈 利而想ž®½åŠžæ³•ã€ç»žž®½è„‘汁压¾~©æˆæœ¬ï¼Œä»Žè€Œè®©¾l„员加班加点åQŒçީ命干‹z»ï¼Œåˆ°æœ€åŽï¼Œ™å¹ç›®òq²å®Œäº?ji¨£n),äºÞZ¹Ÿèµ°å…‰äº?ji¨£n),˜q˜æžæœ‰å¯èƒ½å› ä¸ø™µ¶å·¥å¯¼è‡´é¡¹ç›®è´¨é‡ä¸åˆæ ¼åQŒå®¢æˆ·ä¸æ»¡æ„åQ?那就真的赔了(ji¨£n)夫äh又折å…?

™å¹ç›®¾l„要能保持激情高效,不能懒散拖沓åQŒé¡¹ç›®ç»ç†ä¸€å®šè¦æŠŠæ¡å¥½è¿™ä¸ªåº¦åQŒç»ä¸èƒ½èµ°æžç«¯ã€‚åã^衡是一门艺术,也是展示™å¹ç›®¾lç†èƒ½åŠ›æ°´åã^的一个重要标ž®?

错误六:(x¨¬)è®îC½äº?ji¨£n)科学,忘记了(ji¨£n)有æ?/strong>

学以致用åQŒå°±æ€•äØ•ç”¨ã€‚æ— è®ºæ˜¯äº§å“ã€æŠ€æœ¯è¿˜æ˜¯ç®¡ç†æ–¹æ³•ï¼Œéƒ½å­˜åœ¨äØ“(f¨´)äº?ji¨£n)更先进、更¿U‘学而罔™å„¡Ž°å®žï¼Œç›²ç›®ä¹Þq”¨çš„现象,¾l“果先进和科学的技术、工具不仅未提高 生äñ”效率åQŒå´æˆäº†(ji¨£n)累赘åQŒè¿™æ ïL(f¨¥ng)š„æƒ…况到处都是åQŒåœ¨IT™å¹ç›®ä¸­ä¹Ÿä¸ºæ•°ä¸å°‘ã€?/p>

国内大量å¤ÞpÓ|çš„ERP™å¹ç›®ž®±æ˜¯˜q™ç±»é”™è¯¯çš„典型。有人把ERP™å¹ç›®å½’结ä¸ÞZ¸€æŠŠæ‰‹å·¥ç¨‹åQŒæ„æ€æ˜¯åªæœ‰é¢†å¯¼é‡è§†òq¶æŽ¨åŠ¨æ‰èƒ½æˆåŠŸã€‚é¢†å¯¼æ”¯æŒæ˜¯™å¹ç›®æˆåŠŸå¾ˆé‡è¦çš„ 一个条ä»Óž¼Œä½†ç»ä¸æ˜¯æœ‰é¢†å¯¼æ”¯æŒå°±ä¸€å®šèƒ½å¤ŸæˆåŠŸã€‚æœ‰äº›é¡¹ç›®å°±æ˜¯é¢†å¯¼å†³½{–失误盲目上的,从开始就注定™å¹ç›®è¦å¤±è´¥ã€‚一个信息化™å¹ç›®çš„实施,对很多企业来说就是一 场大的改革,å¯ÒŽ(gu¨©)‰€æœ‰å‘˜å·¥ä»Žæ€ç»´ã€æŠ€èƒ½åˆ°å·¥ä½œä¹?f¨¤n)惯½{‰å¤šæ–šw¢éƒ½éœ€è¦è¿›è¡Œè°ƒæ•´ã€‚如果企业的员工素质不能跟上åQŒçºµç„¶æœ‰å„种各样的培训,但不™å‘Ö‘˜å·¥åŸº¼‹€å’Œå­¦ä¹?f¨¤n)曲¾U¿ï¼Œ 用户不能真正掌握全新的系¾lŸï¼Œ¾l“æžœž®±åªèƒ½å¢žåŠ ç”¨æˆ¯‚´Ÿæ‹…,而äñ”生不äº?ji¨£n)期望的效果ã€?/p>

很多IT™å¹ç›®¾lç†åœ¨å­¦ä¹?f¨¤n)äº?ji¨£n)一些新的技术后åQŒæ€ÀLƒ³ç«‹åˆ»åœ¨é¡¹ç›®ä¸­å®žè·µåQŒè€Œä¸åŽÖM»”¾l†åˆ†æžè¿™äº›æŠ€æœ¯åœ¨˜q™ä¸ª™å¹ç›®ä¸­æ˜¯å¦éœ€è¦ï¼Œæ˜¯å¦é€‚合。IT技术日新月异,不断 æœ‰æ–°çš„ç†è®ø™¢«æå‡ºæ¥ï¼Œè¢«ç¿»è¯‘引˜q›åˆ°å›½å†…。有些项目经理在一知半解,对这些技术还不是很熟æ‚(zh¨¨n)‰çš„æƒ…况下,ž®±æ•¢å‘äh吹嘘他所掌握技术的¿U‘学性、先˜q›æ€§ï¼Œ˜q›è€Œå¼ºåˆ?要求在项目中实践。这可能是甲方的™å¹ç›®¾lç†åQŒä¹Ÿå¯èƒ½æ˜¯ä¹™æ–¹çš„™å¹ç›®¾lç†ã€‚å› ä¸ºæŠ€æœ¯é€‰æ‹©é”™è¯¯å¯ÆD‡´™å¹ç›®å¤ÞpÓ|的例子在国内˜q‡åŽ»æœ‰ï¼ŒçŽ°åœ¨ä¹Ÿè¿˜æœ?¾lå¯¹ä¸å¯å‡†å¤‡ä¸èƒöåQ?大范围引入全新的技术,待到™å¹ç›®æ—‰™—´˜q‡åŽ»ä¸€åŠäº†(ji¨£n)åQŒæ‰å‘现选择的技术不适用åQŒé‚£æ—¶å€™ä¸€åˆ‡éƒ½æ™šäº†(ji¨£n)。掌握ä“Q何新东西都有学习(f¨¤n)曲线åQŒé¡¹ç›®çš„æ—‰™—´é™åˆ¶æ˜¯é¡¹ç›®ç»ç†å¿…™å?时刻牢记的要素,把握不好ž®×ƒ¼š(x¨¬)¾l™é¡¹ç›®å¸¦æ¥æžå¤§é£Žé™©ã€?/p>

涉及(qi¨¢ng)到具体的IT™å¹ç›®½Ž¡ç†åQŒPMBOK的知识体¾pÕd¯è°“博大,˜q˜æœ‰ä¸€äº›å…¶ä»–æ–°çš„é¡¹ç›®ç®¡ç†å·¥å…øP¼Œä¸èƒ½è¯´ä¸å…ˆè¿›åQŒä½†æ˜¯å“ªäº›çŸ¥è¯†ã€å·¥å…—÷€æ–¹æ³•适合本项目,需 要项目经理根据实情,认真分析后进行筛选ä‹É用ã€?/p>

¿U‘学、先˜q›ã€å¥½ç”¨ç­‰½{‰ä¿®é¥°å¤´è¡”这些都不是要选择的首要理由,需要、适用和有效才是首要考虑的事情。很多IT™å¹ç›®¾lç†å› äØ“(f¨´)òq´è½»åQŒåˆç”Ÿç‰›çŠŠä¸æ€•è™ŽåQŒèƒ†é‡?大,勇气­‘»I¼Œæ•¢äºŽåœ¨å®žè·µä¸­å¼•入新的工具、方法。敢于尝试不是坏事,但试验的风险一定要控制好。对于项目经理来è¯ß_(d¨¢)¼Œæ‰€æœ‰çš„决策都要围绕™å¹ç›®ç›®æ ‡˜q›è¡Œã€‚项目经 理的首要ä»ÕdŠ¡æ˜¯ä¿è¯é¡¹ç›®æˆåŠŸï¼Œå¦‚æžœåŒæ—¶èƒ½å¼•å…¥æ–°çš„æŠ€æœ¯ã€å·¥å…øP¼Œå¢žåŠ ¾l„员的知识技能,提升™å¹ç›®¾l„工作效率,提高产品的质量和可靠性,¾lå¯¹æ˜¯é”¦ä¸Šæ·»èŠ±ï¼Œä½†ç»å¯?不能ä¸ÞZº†(ji¨£n)锦上添花而导致项目失控甚臛_¤±è´¥ï¼Œæ¡äº†(ji¨£n)芝麻åQŒä¸¢äº?ji¨£n)西ç?


转蝲自:(x¨¬)csdn http://java.csdn.net/a/20100127/258541.html


]]>
Ö÷Õ¾Ö©Öë³ØÄ£°å£º ·îÐÂÏØ| µü²¿ÏØ| Õã½­Ê¡| ÃÖ¶ÉÏØ| ¶«Ïç| ¶¨½áÏØ| Ú¯°²ÏØ| ÆÕÍÓÇø| ÎäÐûÏØ| ǨÎ÷ÏØ| Ðí²ýÏØ| µ¾³ÇÏØ| ½­´ïÏØ| ÌÆº£ÏØ| ̨¶«ÊÐ| ÕØÖÝÏØ| ¿¦À®| ¶¼°²| Ò˾ýÏØ| ºâÄÏÏØ| ÎÐÑôÏØ| ÑÓ±ß| ³Î½­ÏØ| É̺ÓÏØ| º¼½õÆì| Ë®¸»ÏØ| èϳÇÏØ| ÏĽòÏØ| ÑÎÉ½ÏØ| Ôö³ÇÊÐ| ½ðºþÏØ| Î×ÏªÏØ| ²©¿Í| ÌÒÔ´ÏØ| »áÄþÏØ| Èð½ðÊÐ| Ë®³ÇÏØ| ÊÓÆµ| ̫ԭÊÐ| ÀÖ°²ÏØ| ½ðÏçÏØ|