软件项目经理的首要职责是确保项目的成功。如何保障项目的成功?有些事情和关键词对于软件项目经理来说非常重要。
不同的行业,不同的企业或组织,不同的项目,PM 的关注点可能各有不同。以下,列出一些我们认为最重要的几件事情或方面。
1. People - 人类
首先是人和。
与任何其他行业的工程项目一样,没有和谐的人际关系,软件项目也是不可能成功的。
1.1 Customers and Users - 搞好客户和用户关系
满足客户和用户的需求是第一位的。客户不满意,不高兴了,项目还有可能成功吗?
所以,自始至终地搞好客户关系和用户关系,就显得尤为重要。
很多客户并不是 IT/软件方面的行家,他们误以为软件开发和盖房子、造汽车差不多。如何更好地 Engage the customer,得到客户与用户的理解和密切配合?这是一个难题。
1.2 The Team - 团队
没有哪个 PM 不希望自己拥有一支优秀的团队。
1.3 Collaborate with Communication - 合作与沟通
完成一个项目,有时往往需要依靠外部的力量,与各方面的干系人(如其他部门和团队、供应商、合作伙伴等等)进行密切而有效的合作与沟通。
1.4 Culture, Goals and Values - 文化、目标与价值观
企业文化、团队文化非常重要。
太极软件工程认为 CMT:文化决定管理,管理决定技术。
如果所有利益攸关者都拥有共同的目标和价值观,那么项目就容易成功。
1.5 Politics and Economics - 政治经济学
正如任何企业的管理者,每个 PM 都应该懂一点政治经济学。如果 PM 缺乏政治头脑和经济头脑,那么他不可能在这个位置上坐久坐稳。
2. Reuse First - 重用(或复用)优先!
很遗憾,过去 10 多年,人们谈论了很多过程改进、流程管理与质量管理,却很少谈及系统地重用(Systematic Reuse)。
重用不是银弹,却是金弹!
如何才能让必需做的工作减到最少?
3. Process and Methodology - 选择最适合的项目过程/流程与方法论
流程管理和改进是过去 20 年来全球管理界和工程界的一个持续关注热点,软件过程也不例外。
一个软件企业、项目团队遇到的大多数问题和烦恼与 Process 问题直接或间接有关。所以,首先要把工艺流程理清楚。是重点,还是轻点?
到底软件开发的最佳流程什么样?什么是软件开发和管理的最佳方法?
我的项目团队到底应该采用什么样的过程和方法论?
4. Models and Documentation - 模型与文档
怎么才能更有效地进行沟通?
口头沟通很不可靠,最好形成书面的文档,白纸黑字,有据可查。
图形建模既是人类的一项本能,也是一种非常重要的沟通手段。
5. Risks - 风险
风险管理是软件项目管理的第一管理。
PM 具有风险意识,每周每月维护一张 Risk List,是风险管理的一种最佳实践。
6. Requirements (Functional and Non-Functional) and Scope - 需求(功能与非功能)与范围
需求(To do what)位于软件开发因果链的上游,需求定义不稳定、不全面、质量不高,往往会导致下游工作如估算和计划、设计、编程、测试等等出现一系列错误,从而导致软件项目的返工、超支和超期。
所以,PM 用心抓好需求工作这个牛鼻子,项目就已经成功一半了。
7. Plan, Review and Adapt - 计划、评审与调整
做计划,写很多的管理文档和报告,是 PM 的首要职责?
做好计划对于 PM 来说,的确是一件非常重要的工作。谁都希望料事如神,一切尽在计划、掌握和管控之中。这样的项目做起来自然很爽了。
可事实是,在复杂的软件开发项目之中,套用一句俗话:永远不变的是变化,而且宇宙定律告诉我们:运动与变化是永恒的,静止与不变是相对的。
在对待计划这个问题上,传统方法与敏捷方法有着显著不同。传统方法更强调事先完美的计划,敏捷方法更强调及时的反馈、评审和调整。把两者有机地结合起来,就能让我们立于不败之地。(太极)
8. Time (Timing), Schedule and Progress - 时间、排程与进度
天时,历来是个热点与核心问题。
客户和领导们最关心的往往是:这个系统到底什么时候才能真正交付?
目前已知最好的保证进度、确保按时交付的软件开发方法是:迭代式(Iterative)。
9. Testing and Verifying the Quality - 测试与质量
软件质量一旦出了问题,会给项目带来很大的麻烦。
10. Measurements and Metrics - 度量指标
如何减少拍脑袋决策?
量化,拿出科学数据来。
度量指标并不是越多越好,够用就好。
11. Architecture and Design - 系统/软件架构与设计
太极软件工程认为,架构设计是软件设计的主要内容和主要矛盾,架构的质量决定了软件系统的质量。
PM 应该与团队中的架构师紧密合作,尽早消除软件架构的技术风险。
12. Reduce Cost - 降低成本
项目经理一定要会算账。
时间成本是一种主要的隐性成本。
13. Optimize Management - 优化管理
何谓管理?
管理动作:Planning, Estimating,Controlling & Monitoring, Leading, Reviewing, Adapting, Coaching and Serving - 计划、估算、监控、领导、评审、调整,教练与服务 ...
不同的价值观,不同的哲学,导致不同的管理理念和方法。
14. Keep Learning, Accumulating Knowledge and Experience - 坚持知识与经验的学习和积累
一位有经验的 PM 会非常留意个人管理知识和经验的不断学习、更新与积累。
Values, Principles, Patterns and Practices (VP3) - 价值观、原则、模式与实践做法
建议参照 VP3 结构来组织知识和经验。
...
做一名普通、平凡和平庸的软件项目经理比较容易,做一名优秀的软件项目经理很难。