`

《技术出身,如何做好项目经理》系列之《一个项目经理的工作日志》

 
阅读更多

《技术出身,如何做好项目经理》 系列之 《一个项目经理的工作日志》

<script type="text/javascript"><!-- google_ad_client = "pub-1926348199765453"; /* 文章底部 */ google_ad_slot = "3855136352"; google_ad_width = 336; google_ad_height = 280; // --></script><script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"></script>

这一天,我们的部门研发经理把我叫了过去,告诉我我们小组要接手一个新的项目,这个项目已经经过客户和公司两方高层的确认了,最后要求完成的时间是2个月,也就是在65日之前必须完成,合同都签署了。然后,研发经理把客户fax过来的需求交给了我。我拿过需求来一看,上面写着:

XXX机顶盒系统需求】

  1. 需要支持HTML4.0的浏览器,支持JavaScriptFlash

  2. 支持Email

  3. 支持MP3音乐格式文件的播放

  4. 支持记事本、时间安排表、待办、计算器、英汉字典、地址簿等PIM应用

  5. 视频点播系统

  6. 运行系统最终要求16M DOC32M RAM上。

因为大部分的PIMPersonal Information Manager)程序都已经写过一遍了,VOD系统又是采用合作伙伴的产品,因此我把视线集中到了如何构建一个更好的桌面系统,把应用集成到一个框架中来。

我们首先询问了客户对界面的需求,他们回复我们,需要类似Windows的桌面风格,并且Email给我们一张图片。值得庆幸的是,我们原有的界面就是这种风格的,并不需要太大的修改。我觉得这个项目问题不大,有望在2个月内完成。

我大概做了一下近期的计划,首先我们要对桌面系统和用户交互方面进行一次深入的讨论,拿出一个让我们自豪,让客户满意的方案;然后考虑采用哪些技术,并进行软件设计;最终进行编码实现。

尽管时间紧迫,我还是准备在34周之内,拿出用户交互设计的方案。这段时间中,我们不停的在开讨论会,大家提出了很多好的见解和近乎疯狂的想法,期间我们还参考了一些资料,包括计算机杂志上一篇介绍SUISocial User Interface)的文章,还有《冲破技术牢笼》(一本专门讲述交互设计的书籍)。期间,我们还讨论了要进行集成的应用程序,以及构建UI系统的方案。最终,我们决定:

  1. 采用XML作为桌面系统的配置方案,提供极强的可定制、可扩充性。

  2. 采用Netscape4.76作为我们的Browser

  3. 利用Browser实现WebMail

  4. 采用SUI的一些思想,加入一个桌面精灵程序。

  5. 为支持更好的桌面特性、以及精灵程序的需求,支持Always On Top属性。

  6. MP3VOD程序作为NetscapePlugin

然后,我大概预计了一下工作量和人力资源的安排:

1XML解析器(基于SAXXML解析): 1人月

2.窗口管理器(包括基于XML可配置、和支持总在最前): 2人月

3.桌面精灵程序: 1人月

4MP3程序: 2人周

5.系统集成: 1人周

6.系统测试:1人周

(注:在我进行估计的潜意识中,每周是工作七天的)。

但是现在我只有5个人周了,而且我现在的人手已经分配到各个项目中了。我在项目讨论会上,向事业部经理提出了我的资源和时间问题。我得到的回复是,时间不能改变了,五一加班,这样就有六周时间了;然后,把我的一个小组成员Lee从另外一个项目(周期较长)调到我这个项目中来,负责窗口管理器。

最终,我的项目小组由4人组成,一个兼职的学生John(水平不错,在我们讨论交互设计的时候,就开始准备XML解析器的前期工作了),Lee负责桌面系统的窗口管理部分,Huang负责协同合作伙伴的开发工作并进行集成VOD系统的工作,我负责桌面精灵程序以及总体系统的设计工作。然后,我们开始工作了。(这时,John已经完成了他的XML解析器。)

首先我们考查了这些功能的实现技术,大体做了设计的工作:桌面系统的构架、模块划分以及模块之间的关系(包括桌面配置和窗口管理两部分,分别由JohnLee负责);考虑了Netscape的运行方式;如何使Mp3VODNetscape相结合等问题。这时,又有1周过去了,我们还有整整5周时间。Rush

JohnLee和我在五一加班一周,期间我们在公司吃住,每天都是通宵工作,然后白天睡觉,下午还一起去打一小时台球。我们还各自换了公司里最好的显示器,这种感觉很棒。很快的,在五一假期结束后,JohnLee各自的模块编写基本完成了,我的桌面精灵程序的功能也基本实现了。

这时突然,用户由于在国外参加了一次展会,对他们原先提出的界面设计有了新的想法,并发回给我们展会上的一些图片。应该承认,国外的设计的确是优秀的。我们负责这个项目的销售人员在没有和我协商的情况下对客户做出了承诺,OK,按照这个做,只是换换图片嘛。其实,这并不是换换图片的问题,需要在桌面配置管理部分进行不小的代码改动。我想提出异议,但是已经为时已晚了。好吧,重新进行设计和编码,好在由于原来的设计灵活度比较大,没有伤筋动骨。但是,返工还是花了几天时间。

这时,意料之外的情况发生了,John由于导师布置的课题进行了调整,现在必须要花加倍的时间在他的毕业设计上了,只有晚上有几个小时可以过来、周六日可以工作。

同时,桌面系统进入整合阶段了。首先,是在整合中发现LeeJohn没有充分考虑到他们两个人的模块是工作在一个进程中的,他们原本设计的基础是两个模块是并行的,这不得不花了3天的时间,把两个人的接口重新进行了组织,程序终于可以运行了。但是,桌面系统显得非常不稳定,经常发生core dumpBug是随机出现的而且还无法确定其发生的地点,gdb报告说错误发生在glibc的内存管理部分中。这个Bug极大的困扰了我们,我们整整花了一天一夜24小时连续调试和检查代码终于发现了错误(我在后面的代码评审中会谈到这个错误)。不幸的是,在John准备备份(tar gz)的时候,由于连续作战精神恍惚,错误的删除了新修改的代码,这不得不又花费了3个小时以上的时间,在最近一次备份的基础上重新修改并验证。

在这个Bug解 决之后,我们希望把桌面系统提交系统测试部门进行测试。但是,测试部门拒绝了我们单一应用测试的请求,理由是他们只接受产品的测试,这个单一应用无法进行 系统测试,而且这个测试应该由我们自己完成。这使我大为光火,坚持认为系统测试部门应该进行单一程序的测试,这样及时发现Bug(而不要使Bug激增出现在一起)有助于我们节省开发的时间。最终,大家不欢而散。

我们把Netscape和桌面、精灵程序集成在了一起,发现了一个非常严重的问题。由于我们之前的设计(为了节约内存,同时也为了多个应用能并行执行),并不启动多个Netscape,而是采用外部控制的方式通知运行中的Netscape新建一个窗口。然而,Netscape程序本身经常由于不确切原因僵住(经常是在网络访问过程中,怀疑是Netscape程序内部关键代码区域互斥的结果,而且所有的Netscape窗口都Block),导致应用僵死、切换失效。而且,这种外部控制的方式已经硬编码在模块中了,改变这种方式将会带来大量的代码修改。我们略微修改了一下调用的逻辑关系,情况有了好转。

这期间,合作伙伴的VOD程序也早应该就位了。但是,不幸的是由于合作伙伴所在的公司发生了并购,交付的时间大大的被推迟了。Huang发现VOD程序在测试板上经常死机,Huang每天保持和合作公司的联络,终于解决了问题。

接下来是整个系统的整合,突然我们发现原来的由另一个由多媒体小组提供的Mp3播放程序使用的是WidgetXXX1.0,而我们使用的是其2.0版本,而且由于两个版本有很大的体系结构差异,加之这个Mp3程序使用了很多1.0版本中未公开的功能,移植起来非常困难。这个程序的作者也是一个兼职人员,而且已经离开了公司,我一直联系不到他,他的代码没有任何注释,而且没有留下任何有关的设计文档。不得已我们决定重写,我自己花了43夜终于完成了Mp3程序。

这时已经65日了,我们告诉事业部经理,工作已经完成了99%,只差整合了。整合的时候,也发生了一些意外情况:小系统的Shell同大系统中的B Shell是不同的,有的脚本需要调整;精灵程序运行太慢了,这跟系统资源紧张有很大的关系,最后不得不取消了这个精灵程序;Netscape在资源紧张、CPU较慢的情况下,僵死的情况又频繁发生了… …

已经612日了,整合仍然没有最终完成,我们大量的设想权益之计设法让系统基本运行正常。最终,在619日,我们把一个伤痕累累的系统提交给了系统测试部门。

系统测试部门进行了为期4天的测试,然后用了两天时间对所发现的Bug我们做了必要的修正,其余全部的作为限制型Bug,在626日把产品提交给用户了。我们惊奇的发现,原来客户对于不能在65日交付的反应并不强烈,这让我们开始怀疑65日的Dead Line是如何得来的?

客户在收到产品之后不久,就放弃了这个产品… …

分享到:
评论

相关推荐

    一个全面的项目经理工作总结

    基于“一个全面的项目经理工作总结”这一主题,我们可以提炼出以下核心知识点: ### 一、项目经理的关键素质与心态 1. **因地制宜、因势利导**:项目经理应具备灵活变通的能力,能够根据项目环境和资源状况调整...

    IT项目经理成长手记

    《IT项目经理成长手记》这本书详细介绍了一个名为小M的虚拟人物的职业成长之路,通过真实案例,向读者展示了项目管理的实战技能和经验教训,对初级项目经理和软考人员具有很大的帮助。 首先,书中提到了项目经理的...

    项目管理心得:一个项目经理的个人体会、经验总结

    感到做这个工作最要紧的就是要明白什么是因地制宜、因势利导,只有最合适的,没有什么叫对的,什么叫错的,项目经理最忌讳的就是完美主义倾向,尤其是做技术人员出身的,喜欢寻找标准答案,耽误了工作进度,也迷茫了...

    项目经理之修炼秘籍.docx

    在项目经理这一角色的...总的来说,项目经理的修炼是一个全方位的过程,涵盖技术、人际、管理等多方面能力的提升。只有通过不断学习和实践,项目经理才能在职场中脱颖而出,成功应对挑战,实现个人和项目的双重成功。

    产品经理的出身问题.docx

    产品经理的出身背景多种多样,常见的包括项目经理、技术开发和需求分析等,每种背景都有其优势和需要改进的地方。 项目经理出身的产品经理通常具备优秀的项目管理能力和协调资源的技巧,他们熟悉产品开发的各个环节...

    《项目管理实践案例(第二版)》pdf

    6. **《技术出身如何做好项目经理?》**:对于技术背景的项目经理而言,在转向管理岗位后如何平衡技术与管理之间的关系,以及如何提升自己的管理能力。 7. **《如何面对这样的软件开发项目?》**:针对软件开发项目...

    一个项目经理的一些个人体会

    不是研究机构,所以,项目经理最忌讳的就是完美主义倾向,尤其是做技术人员出身的,喜欢寻找标准答案,耽误了工作进度,也迷茫了自己。以下是本人一些做项目经理的个人体会,写出来供大家指点,在讨论过程ZG同提高...

    【原创】技术出身的我,如何做好一个管理者?.doc

    【原创】技术出身的我,如何做好一个管理者? 在IT行业,许多技术专家在职业生涯的某个阶段可能会面临从技术角色转向管理岗位的挑战。技术出身的管理者往往面临着如何有效地运用自身的技术知识和经验来领导团队的...

    谨慎:IT项目管理的六大错

    技术出身的项目经理应学会平衡技术和管理,避免过度沉迷于技术细节。同时,项目经理应保持冷静,营造良好的团队氛围,避免个人情绪影响团队凝聚力。此外,项目中的风险管理也非常重要,随着项目推进,风险会增加,...

    项目总结经验教训.doc

    2. **避免完美主义**:项目经理,特别是技术背景出身的,容易陷入寻找标准答案的陷阱,这可能会影响项目进度。项目管理更关注于实际效果和时间效率,而不是理论上的完美。 3. **工程开场阶段的重要性**:项目启动...

    软件项目管理常见问题及解决方案.docx

    软件项目管理是确保软件开发高效、质量稳定、按期交付...总之,软件项目管理是一个涉及多个层面的综合工作,需要项目经理具备全面的知识和技能。通过不断学习、改进和实践,可以有效地解决这些问题,提高项目的成功率。

    程序员与程序经理.doc

    项目经理,特别是技术出身的,应当具备深厚的技术背景,对编程有热情,且能够带领一支程序员队伍。如果忽视这些关键因素,软件项目很可能走向失败。 了解程序员的特质是管理的基础。程序员通常以诚实、追求简单实用...

    上半年信息系统项目管理师下午试题I分析与解答清华版.docx

    1. **加强角色转换训练:** 张某应该参加相关的项目管理培训课程,学习如何从一个技术专家转变为一名优秀的项目经理。 2. **明确职责分配:** 应该为团队成员明确各自的职责和任务,通过合理的分工提高团队的整体...

    2010上半年信息系统项目管理师下午试题

    张某,一位技术出身的员工,被直接任命为项目经理,负责某系统集成项目。然而,他在项目执行过程中遇到了诸多挑战,包括团队协作、技术指导、客户关系处理以及个人压力等。 #### 问题分析 1. **项目经理选拔与管理...

Global site tag (gtag.js) - Google Analytics