delphij's Chaos

选择chaos这个词是因为~~实在很难找到一个更合适的词来形容这儿了……

30 Mar 2007

立项培训

今天在公司做了一个下午的项目管理方面的培训,其实从上学的时候我就不是很能适应立项、结项等等一系列流程的做法,所以我认为参加这样的培训对我来说很重要。

说说我对项目经理这个角色的理解。其实项目经理是一个要求相当高的角色,或者,应该说项目经理是决定一个team——而不仅仅是一个或几个「英勇」的开发人员——成败的关键所在。

商业公司与开源项目的项目经理角色又有些不一样。我的理解中,类似 FreeBSD 这样的开源项目,基本上应算做「敏捷」一类,用北京话来说,这种开发十分强调「靠谱」的开发和测试人员,我个人认为在这样的过程中,项目经理扮演的更多的是架构设计师的角色——指出需求、设计大的框架、撰写文档,并组织一些人来实现设计。FreeBSD的SMPng项目中,最早的项目经理是Jason Evans (jasone@),后来是John Baldwin (jhb@)和Robert Watson (rwatson@),他们的主要角色大体如此。

而另一方面,商业公司的开发往往不仅强调品质,而且强调及时性。项目经理不仅要知道做什么,而且需要决定不做什么,什么东西应该延后,等等。FreeBSD中同样有类似的角色,这个角色主要由一个叫做Release Engineer的team来承担。

今天的培训内容很有意思,简单地说,项目经理需要面对两个客户,这两个客户自己有一些想法,但是训练本身为他们制造了一些沟通上的障碍。项目经理需要与这两位客户一起分析需求,画出客户心目中的「沙发」,向老板请求资源,并指导和监督完成最终的实现(用乐高积木搭出客户屏幕上显示的东西,并且尽可能与用户屏幕上的一样,整个过程中,项目经理不被允许看屏幕,而两个用户也不能看对方屏幕上的形状)。

今天的主要收获:

  • 事先明确收集需求的流程很重要。客户可能无法正确描述自己想要什么,良好的流程则有助于避免这个问题。
  • 作为项目经理的支持者,老板这个角色需要能够想到可能用到的资源,并将资源事先整理好,以避免出现由于资源不足导致项目推进困难的情况。
  • 项目经理需要在项目实施之前想清楚如何分解项目,以及调配什么样的资源。
  • 及时沟通。一个看得见摸的着的模型,有助于在项目实施的早期揭示问题。
  • 明确定义。在项目组内部需要有统一的描述方式,上帝击败巴贝尔塔项目的方法,就是让人们掌握不同的语言。

最后,很重要的一点,尽管掌握用户的真正需求非常重要,但这个世界是不完美的。成本高昂地完整、全面地掌握用户需求,与及时完成用户的主要需求两者之间,有时项目经理必须做出合理的抉择。