📄 为什么我们的项目老在reschedule.htm
字号:
<P align=center><FONT color=#ff0000>调查:[</FONT><A href="http://21icbbs.com/club/vote/showvote.asp?id=98" target=_blank><U><FONT color=#ff0000>您认为《匠人的百宝箱》如何?</FONT></U></A><FONT color=#ff0000>] [</FONT><A href="http://21icbbs.com/club/vote/showvote.asp?id=129" target=_blank><U><FONT color=#ff0000>您最喜欢《匠人的百宝箱》中哪个栏目?</FONT></U></A><FONT color=#ff0000>] [</FONT><A href="http://blog.21ic.com/more.asp?name=cxjr&id=18993"><U><FONT color=#ff0000>请网友来评选最佳队员专栏</FONT></U></A><FONT color=#ff0000>]</FONT> </P></TD></TR></TBODY></TABLE></P></TD></TR></TBODY></TABLE></P>
<P align=left>
<TABLE style="TABLE-LAYOUT: fixed; WORD-BREAK: break-all" cellSpacing=1 cellPadding=3 width="100%" bgColor=#cccccc border=0>
<TBODY>
<TR bgColor=#f8f8f8>
<TD>
<P align=left><FONT color=#ff0000 size=4><STRONG><img src=images/face/1.gif ><a href=blog.asp?name=cxjr&subjectid=356>[网络酷文]<a href=more.asp?name=cxjr&id=6787>为什么我们的项目老在reschedule?</a></STRONG></FONT><BR>程序匠人 2005-12-5 21:53:00 <a href=more.asp?name=cxjr&id=6787>阅读全文(620)</a> | <a href=more.asp?name=cxjr&id=6787#comment>回复(0)</a> | <a href=showtb.asp?id=6787 target=_blank>引用(0)</a><BR><FONT face=宋体 size=4><STRONG>[</STRONG></FONT><A href="http://blog.21ic.org/more.asp?name=cxjr&id=6250" target=_blank><FONT face=宋体 color=#ff0000 size=4><STRONG>广告8号位</STRONG></FONT></A><FONT face=宋体 size=4><STRONG>] [</STRONG></FONT><A href="http://blog.21ic.org/more.asp?name=cxjr&id=7705"><U><FONT style="BACKGROUND-COLOR: #000000" face=宋体 color=#ffffff size=4><STRONG>免责声明</STRONG></FONT></U></A><FONT face=宋体 size=4><STRONG>] [</STRONG><A href="http://blog.21ic.com/more.asp?name=cxjr&id=18993"><U><FONT style="BACKGROUND-COLOR: #ffff00" color=#ff0000 size=3><STRONG>请网友来评选最佳队员专栏!</STRONG></FONT></U></A><STRONG>]</STRONG></FONT></P></TD></TR>
<TR bgColor=#ffffff>
<TD height=0>
<DIV align=left><P>为什么我们的项目老在reschedule?<BR>类别: 生活工作- hawk @ 10:20 am <BR>昨天开了一个PM(Project Manager)会议,讨论项目为什么会老是reschedule的问题。大家都很踊跃,也说出了不少问题,大概归纳了一下,有一下几点: </P>
<P>CBD(code base delivery, 一种不记在项目任务内的递交,一般由于US PM做出要求或者修改Bug引起)递交比较多</P>
<P>Rush and small requirements 比较多</P>
<P>用到别的项目组的库不够稳定</P>
<P>还有与客户同步开发修改用户提出的bug很费时间</P>
<P>QA测试不够充分</P>
<P>从上面的这些归纳,感觉所有项目delay或者reschedule都是因为其他人造成了。讨论这个话题的会议开过几次,每次都我们总能将项目的责任推到这些外因上面去,很少有人能够想到自身的问题。不得不承认上面列出的这些问题也是影响项目schedule的因素,甚至还有很多其他的外部因素也在影响项目的进展(比如设备问题等等)。但这些外因是影响项目进展的主要因素吗?</P>
<P>回答这个问题之前,我们来看看现在schedule的制定:为了尽可能减小一些外部因素或者意外情况对项目的影响,我们在feature评估的时候会留一些“buffer”来解决这些问题,buffer一般在20%左右。如果我们将导致项目delay的主要原因归咎于外部因素,那是不是意味着我们的项目有超过20%的时间被其他因素影响,我相信会存在这种项目,但如果大部分项目都是这样的话,我们大部分计划制定出来之日也决定了它必须被schedule,那我们是不是在整体上来考虑我们的项目计划是否合理了?</P>
<P>我个人更偏向内因是影响项目进展的主要原因。“Schedule是PM对大家的承诺”,这是Van去年跟我说过的一句话,给我的印象比较深刻,那么从某种意义上来说,schedule也可以认为是人的诚信问题。记得我曾经说过一句话“如果项目失败,PM有着不可推卸的责任”,这句话其实是一句废话,负责项目的保质保量完成是项目经理的职责。如果感到委屈,不防回答一下下面几个问题:</P>
<P>1、 你接手项目的时候知道这个项目要到达的目标吗(比如达到怎样的性能,内存使用情况怎么样)?</P>
<P>2、 你详细了解并掌握了spec的定义吗?如果不清楚,你是否在计划阶段与US PM讨论过,并确保项目开始前有比较明确的spec?</P>
<P>3、 工作量评估的时候,你跟相关开发人员讨论过每个任务,并让他们自己评估工作量,还是根据自己的“直觉”填写MD?</P>
<P>4、 并了解每个模块怎么实现吗?</P>
<P>5、 你能把握项目的整体框架吗?你怎么控制保证开发人员的编码不偏离你的设计?你一直在跟踪着开发工作吗?还是有些模块你根本不知道怎么回事情?</P>
<P>6、 你每天分发了开发人员比较明确的任务,并在每天结束后来验证过这些任务吗?</P>
<P>7、 对于US PM的要求说过“不”吗?还是来者不拒?</P>
<P>8、 当你发现某一个设计有严重错误的时候,你是否能预知到其可能存在的风险,并及时与总监沟通调整计划吗;还是心存侥幸,希望加紧其他的开发进度以后再来弥补这个设计的缺陷。</P>
<P>9、 在每次递交当天的早上,你与所有开发人员开过会议,明确每个人的递交任务了吗?</P>
<P>10、 你是否忙得连管递交的时间都没有?</P>
<P>11、 你在为提高工作效率和避免让开发人员加班而努力吗?还是对此抱无所谓态度。</P>
<P>12、 你在乎项目的进展吗?项目的reschedule会给你压力感吗?</P>
<P>作为PM,你说这么多,那你做能做到这些吗?<BR>我想过去做好这些,至于能否做到,跟个人能力也有关系。<BR></P></DIV></TD></TR></TBODY></TABLE><FONT color=#ff0000></FONT>
<P align=right><A href="http://blog.21ic.org/blog.asp?name=cxjr" target=_blank><FONT color=#ff0000>如果你的‘芯’是一座作坊,我愿做那不知疲倦的程序匠。打造一流博客,我们每天在努力!</FONT></A></P><A href="http://blog.21ic.org/blog.asp?name=cxjr" target=_blank><FONT color=#ff0000></FONT></A><br><a name='comment'></a><table width='90%' border='0' align='center' cellspacing='0' cellpadding='0'> <tr> <td><strong>发表评论:</strong></tr></td></table>
<table width='90%' border='0' align='center' cellspacing='0' cellpadding='0'> <tr> <td><table align='left' width='100%' border='0' cellspacing='0' cellpadding='0'>
<form action='more.asp?name=cxjr&id=6787&action=addcomment_ic' method='post' name='commentform' onSubmit='return Verifycomment()'>
<tr><td height='25' align='left'>昵称:<input name='UserName' type='text' id='UserName' size='15' maxlength='20' value=''></td></tr>
<tr><td height='25' align='left'>密码:<input name='Password' type='password' id='Password' size='15' maxlength='20' value=''> (游客无须输入密码)</td></tr>
<tr ><td height='25' align='left' >验证码:<input name='GetCode' type='text' id='GetCode' size='12' maxlength='20' /> <img src='inc/code.asp' width='40' height='10' border='0' /><td></tr><tr ><td height='25' align='left' >主页:<input name='homepage' type='text' id='homepage' size='42' maxlength='50' value='http://'><td></tr><tr ><td height='25' align='left' >标题:<input name='commenttopic' type='text' id='commenttopic' size='42' maxlength='50' value='回复:为什么我们的项目老在reschedule?'><td></tr><tr height='200'><td ><INPUT type='hidden' name='edit' id='edit' value=''>
<link rel="STYLESHEET" type="text/css" href="images/edit.css">
<Script Src="images/DhtmlEdit.js"></Script>
<table id="oblog_Container" class="oblog_Body" height=100% width=350 cellpadding=1 cellspacing=0 border=0 >
<tr>
<td height="10"> <table cellpadding=0 cellspacing=0 >
<tr class="yToolbar" ID="ExtToolbar0" >
<td> <select language="javascript" class="oblog_TBGen" id="FontSize" onchange="FormatText('fontsize',this[this.selectedIndex].value);">
<option class="heading" selected>字号
<option value="1">1
<option value="2">2
<option value="3">3
<option value="4">4
<option value="5">5
<option value="6">6
<option value="7">7</option>
</select>
<td class="oblog_Btn" TITLE="加粗" LANGUAGE="javascript" onclick="FormatText('bold', '');ondrag='return false;'" onmouseover=this.className='oblog_BtnMouseOverUp'; onmouseout=this.className='oblog_Btn'; >
<img class="oblog_Ico" src="images/bold.gif" WIDTH="16" HEIGHT="16" unselectable="on"> </td>
<td class="oblog_Btn" TITLE="斜体" LANGUAGE="javascript" onclick="FormatText('italic', '');ondrag='return false;'" onmouseover=this.className='oblog_BtnMouseOverUp'; onmouseout=this.className='oblog_Btn'; >
<img class="oblog_Ico" src="images/italic.gif" WIDTH="16" HEIGHT="16" unselectable="on"> </td>
<td class="oblog_Btn" TITLE="下划线" LANGUAGE="javascript" onclick="FormatText('underline', '');ondrag='return false;'" onmouseover=this.className='oblog_BtnMouseOverUp'; onmouseout=this.className='oblog_Btn'; >
<img class="oblog_Ico" src="images/underline.gif" WIDTH="16" HEIGHT="16" unselectable="on"> </td>
<td class="oblog_Btn" TITLE="取消格式" LANGUAGE="javascript" onclick="FormatText('RemoveFormat', '');ondrag='return false;'" onmouseover=this.className='oblog_BtnMouseOverUp'; onmouseout=this.className='oblog_Btn'; >
<img class="oblog_Ico" src="images/removeformat.gif" WIDTH="16" HEIGHT="16" unselectable="on"> </td>
<td class="oblog_Btn" TITLE="左对齐" NAME="Justify" LANGUAGE="javascript" onclick="FormatText('justifyleft', '');ondrag='return false;'" onmouseover=this.className='oblog_BtnMouseOverUp'; onmouseout=this.className='oblog_Btn'; >
<img class="oblog_Ico" src="images/aleft.gif" WIDTH="16" HEIGHT="16" unselectable="on"> </td>
<td class="oblog_Btn" TITLE="居中" NAME="Justify" LANGUAGE="javascript" onclick="FormatText('justifycenter', '');ondrag='return false;'" onmouseover=this.className='oblog_BtnMouseOverUp'; onmouseout=this.className='oblog_Btn'; >
<img class="oblog_Ico" src="images/center.gif" WIDTH="16" HEIGHT="16" unselectable="on"> </td>
<td class="oblog_Btn" TITLE="右对齐" NAME="Justify" LANGUAGE="javascript" onclick="FormatText('justifyright', '');ondrag='return false;'" onmouseover=this.className='oblog_BtnMouseOverUp'; onmouseout=this.className='oblog_Btn'; >
<img class="oblog_Ico" src="images/aright.gif" WIDTH="16" HEIGHT="16" unselectable="on"> </td>
<td class="oblog_Btn" TITLE="插入表情" LANGUAGE="javascript" onclick="oblog_foremot()" onmouseover=this.className='oblog_BtnMouseOverUp'; onmouseout=this.className='oblog_Btn'; >
<img class="oblog_Ico" src="images/smiley.gif" WIDTH="16" HEIGHT="16" unselectable="on"> </td>
<td id="forecolor" name=forecolor class="oblog_Btn" TITLE="字体颜色" LANGUAGE="javascript" onclick="oblog_foreColor();" onmouseover=this.className='oblog_BtnMouseOverUp'; onmouseout=this.className='oblog_Btn'; >
<img class="oblog_Ico" src="images/fgcolor.gif" WIDTH="16" HEIGHT="16" unselectable="on" > </td>
<td id="backcolor" class="oblog_Btn" TITLE="字体背景颜色" LANGUAGE="javascript" onclick="oblog_backColor();ondrag='return false;'" onmouseover=this.className='oblog_BtnMouseOverUp'; onmouseout=this.className='oblog_Btn';>
<img class="oblog_Ico" src="images/fbcolor.gif" WIDTH="16" HEIGHT="16" unselectable="on"> </td>
<td class="oblog_Btn" TITLE="插入超级链接" LANGUAGE="javascript" onclick="oblog_forlink();ondrag='return false;'" onmouseover=this.className='oblog_BtnMouseOverUp'; onmouseout=this.className='oblog_Btn'; >
<img class="oblog_Ico" src="images/wlink.gif" WIDTH="18" HEIGHT="18" unselectable="on"> </td>
<td class="oblog_Btn" TITLE="去掉超级链接" LANGUAGE="javascript" onclick="FormatText('Unlink');ondrag='return false;'" onmouseover=this.className='oblog_BtnMouseOverUp'; onmouseout=this.className='oblog_Btn'; >
<img class="oblog_Ico" src="images/unlink.gif" WIDTH="16" HEIGHT="16" unselectable="on"> </td>
<td class="oblog_Btn" TITLE="清理代码" LANGUAGE="javascript" onclick="oblog_CleanCode();ondrag='return false;'" onmouseover=this.className='oblog_BtnMouseOverUp'; onmouseout=this.className='oblog_Btn';>
<img class="oblog_Ico" src="images/cleancode.gif" WIDTH="16" HEIGHT="16"></td>
</tr>
</table></tr>
<tr>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -