在开始今天的话题之前,请允许先介绍一下我们项目的情况,我们的项目是汽车电子软件开发的项目。考虑到人员的技术问题,我们采用的是异地的分布式开发,在上海团队有10人,印度的团队5人,客户有自己的相关的软硬件团队。此项目的最终客户是国内的OEM车厂。
磨刀不误砍柴工,在项目开始之前我们仔细考虑了运用什么软件开发模型和方法论。现有的方法有瀑布,v模型,敏捷开发等等。因为我们有过和国内客户的合作的经验,他们的需求变化总是很多很快。特别是我们的项目中有人机界面的部分。从最初拿到客户的产品需求文档就很笼统。人机界面部分缺少细节的描述。和客户的沟通中了解到他们是期望我们做出来一定的界面后他们再提意见。另外客户对项目的时间要求非常紧。
综上考虑我们采用的是敏捷开发方法,来应对这种频繁的需求变化。由于篇幅所限,这里不打算对敏捷开发做详细的描述。虽然我们的团队有过敏捷开发经验,但是分布式的敏捷开发还是第一次。敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。敏捷开发强调团队之间要面对面的交流。但是我们的团队组织不能满足这个要求怎么办。我们采用的方法是中国的team设定项目经理总负责两地的沟通和协调。印度team设定项目经理负责印度团队和中国的沟通。同时需求分析师放在中国这样接近客户了解需求。
异地分布软件开发面临的最大问题是交流问题。随着人员距离的增加,交流效率将大大降低同时交流成本将极大提高。很多时候客户一端团队不能把正确的需求传递到异地的一端,这直接造成需求理解的偏差和产品质量的下降。任何交流方式都比不上面对面的交流。异地开发时,异地一端很容易丢失客户一端与客户交流的信息。所以我们在项目需求和开发初期,印度团队的一名成员来上海1-2个月来做需求和架构分析。
为了保证沟通。中国的项目经理和印度的interface每天的电话会议,不需要很长时间30分钟就够了。因为印度和中国的时差2.5小时。所以每天的电话会议安排在下午1点左右,这个时间可能是我们饭后比较犯困的时候,正好安排会议。双方会介绍各自昨天的工作状况和今天的计划。印度的团队的接口,会议结束后,中国的项目经理会将双方每日的开发状态邮件汇总。发给团队的成员。每个团队自己进行每日例会,并由个项目的项目经理和需求分析人员进行另外的会议以便协调工作。每天的定时会议将成为很重要的一个很重要的交流方式。另外每周的周会项目的所有成员会参加。我们会利用公司的视频会议系统,进行可视会议,这样双方可以减少陌生感。增加信任感。
项目的管理工具方面:
1.配置管理方面在公司内网建立SVN来使用。两方的团队可建立自己单独的持续集成环境,但需要保持系统环境的一致。两方的开发人员都应该保证每日离开办公室前的提交通过集成。这样可以避免异地团队开始开发不至于被失败的集成所耽搁。
2.日常的项目管理工作中,在异地开发中,为了使得每个团队都可以了解到团队任务,可以采用在线工具帮助进行项目跟踪,我们采用在线Wiki或Microsoft
SharePoint
总结:
我觉得作为一个项目整体的项目经理,需要注意以下的事情
1)异地开发中最重要的部分还是客户端。带领团队很好的作需求分析和概要设计。这部分做好了,异地的工作就好控制。
2)异地开发的团队的负责项目经理同样非常的重要,必须具有很好的项目管理的经验。
3)本地团队和异地团队之间的最大的问题就是沟通的问题。本地的需求分析必须保证无误的传达给异地的团队。本地项目经理必须时刻了解异地团队的状况。邮件,电话会议,视频会议都可以帮助我们来沟通。
4)项目经理不要太多的涉足异地团队的管理工作。这部分工作时异地团队的项目经理工作。但是,过程是非常重要的,这个需要异地的项目经理提供相应的项目过程状况报告。并且及时地和客户端的项目经理保持沟通。
项目经理胜任力免费测评PMQ上线啦!快来测测你排多少名吧~
http://www.leadge.com/pmqhd/index.html