典型的软件团队里除了能写代码、测试代码和画图做设计的成员,还有一类角色也很重要,我们叫他们项目经理——PM。
PM的M就是Manger,但是P就有这几种:Product Manager、Project Manager/Program Manager,在不同的行业和公司,他们的作用互不相同。大部分公司的项目经理叫Project Manager,微软的经理叫Program Manager。随着软件复杂度的提高,用户需求的多样化,市场竞争的日益激烈,光有程序员和销售人员是不够的。销售人员当然可以把顾客的需求直接告诉开发人员,但是开发人员往往听不懂,我们需要专门的人来做下面的事:1.和客户交谈,阻止用户调查,发现用户需求;2.了解和比较竞争对手的产品;3.怎么让软件变得可用、有用;4.怎么改进团队的流程。PM最大、最独特的贡献是带领团队达成最重要的目标,并保持团队的平衡。PM要在整个项目的生命周期管理风险。对于软件项目来说,风险实在正常软件生命周期事间之外的、可能发生影响的成功的事件。成为一个合格的PM,需要以下几个能力:1.观察、理解和快速学习能力;2.分析管理能力;3.一定的专业能力;4.自醒的能力。在一个项目中,PM的具体任务是:1.带领团队形成团队的目标/远景,把抽象的目标转化为可执行的、具体的、优美的设计;2.管理软件的具体功能的生命周期(需求/设想/设计/实现/测试/修改/发布/升级/迁移/淘汰);3.创建并维护软件的规格说明书,让它成为开发/测试人员及时准确的指导,而不是障碍;4.代表客户和用户的利益,主动收集用户反馈,预期用户新的需求。协调并决定各种需求的优先级;5.分析并带领其他成员对缺陷/变更需求形成一致意见,并确保实施;6.带领其他成员确保项目保持功能/时间/资源的合理平衡,跟踪项目进展,确保团队发布令客户满意的软件;7.收集团队项目和软件工程的各种数据,客观分析项目实施过程中的优缺点,推动项目持续改进,从而提振士气。
软件工程值得我们用心去体会,用心去学习其中的奥义。