无论你是一名有经验的项目经理想要转型到软件行业,还是一名软件工程师想要承担管理角色,现在都是考虑软件项目管理角色的优异时期。
根据Indeed的数据,软件项目经理的平均年薪超过126,000美元。更值得注意的是,这个领域的预计就业增长率为11%,而所有管理职位的增长率为7%。
想要进入软件项目管理领域的专业人士会发现,许多适用于其他领域的项目管理原则同样适用于软件领域,美国某知名大学的教授Johan Roos如是说。
“无论行业如何,工作分解结构都是相同的。无论你的团队是在开发一个软件应用,还是一个办公大楼,”Roos说,“冲刺”是一样的——这是一个1到4周的过程,构建大项目的一部分,这个大项目最终可能需要几个月或几年来完成。“这就是你如何组织工作,如何管理人员,以及最后的交付成果。”
无论对于新手还是老练的软件项目经理,以下15条管理软件项目的提示都将在整个开发生命周期中有所裨益。
一、管理软件项目的15个建议
1.组建正确的团队
理想情况下,你将在招聘组织的软件开发团队成员时发挥作用,以确保他们的技能和经验符合你的需求。如果开发人员已经在岗,评估他们的专业能力和个人特质,以确定哪些开发人员非常适合项目的特定任务和目标。当团队成员能够专注于他们的优势时,他们将更快地完成任务,这将帮助项目经理保持工作的进度和预算。
2.定义项目范围
制定项目范围说明的过程将定义项目的业务需求,以及确定边界和约束。这确保所有主要的利益相关者对项目将要做什么以及如何构建有清晰的理解。对于开发团队来说,它降低了”范围蔓延”的可能性,即超出范围定义增加所需功能和额外工作的可能性。
3.确定截止日期和里程碑
最主要的里程碑是软件项目必须完成的日期,但从开始日期到结束日期之间有许多截止日期。软件项目经理的职责是规划出一个项目管理计划,包括截止日期和里程碑,特别关注软件的哪些特性需要依赖其他特性才能工作。聚焦开发生命周期的四个关键阶段:启动、规划、执行和结束。
特别有用的是划定哪个截止日期对应于哪个冲刺,这将有助于为每个冲刺分配资源。此外,项目经理可以识别出潜在的挑战或瓶颈,比如可能特别难构建的功能,或需要用户体验团队完成设计的功能。
4.确立个人和团队目标
软件开发团队的目标与项目的总体截止日期、里程碑和业务目标密切相关。这些将是短期目标,比如冲刺的期望产出,以及长期目标,如完成一个软件模块。清晰地传达这些目标并显著地展示出来,作为提醒团队(以及在项目开发过程中加入的新员工)整体目标的提醒。
此外,软件项目经理应为每个开发人员设定个人目标。平衡项目的业务目标和个人发展目标非常重要,比如学习一项新技能或在开发团队中承担一些领导责任。定期进行一对一会议来评估这些目标,并根据需要进行调整。
5.设定正确的基调
为软件开发项目设定正确的基调意味着告诉团队你将提供信任、支持和透明度——作为回报,团队将提供满足项目要求和质量标准的软件代码。当你在软件开发生命周期的最初几天提供这种支持和鼓励时,你为项目的整个期间的合作和高质量工作设定了基调。
6.尽早并经常进行沟通
与开发团队的沟通应以正式会议和更非正式的交流方式进行。定期会议提供了一种结构化的信息分享方式,尤其是来自项目经理代表开发团队与之交流的利益相关者的信息。同时,非正式的对话让项目经理可以提问,积极倾听团队成员,并建立良好的关系。当问题出现时,确保开发团队知道管理层或其他利益相关者会被通知。
频繁的沟通帮助开发者感到自己是更大项目团队的有价值的成员。他们可能是独立工作的,但多亏了项目经理,他们并不是孤立工作的。把它想象成指导一场戏:当每个人都按照相同的剧本阅读,每个人都有相同的提示和台词,那么对于戏剧顺利进行需要发生什么就会有更少的问题。
7.让会议有意义
每日会议,通常被称为“站立会议”,是软件开发过程中的一个关键部分。这些会议让团队有机会回顾前一天的工作,讨论当天的任务,并讨论对需求、里程碑和KPI的进展。
保持会议的简短和高效是很重要的。会议越长,软件开发团队完成任务的时间就越少。为每次会议创建议程,提前与所有与会者分享,并尽可能精确地遵守议程。
找到非常适合所有人的时间。如果你的团队在下午工作效果较好,那么在早上安排会议,这样你就不会打断他们的工作流程。如果你的团队在多个时区,考虑轮流改变会议的时间,这样一部分开发人员就不会感觉到他们被忽视了。
8.收集需求,然后让团队工作
在软件项目管理中,收集需求是最大的职责之一——了解用户希望软件能够做什么。如前所述,这意味着会见内部和外部的利益相关者,了解他们的需求,确定需要构建什么以满足这些需求。
当你有了需求,把它们交给开发团队进行反馈。经验丰富的开发者可以告诉项目经理什么是有意义的,什么需要额外的解释,或者什么根本就行不通。
一旦需求确定了,一个好的优异做法是让开发者编写代码。照顾项目的非技术和行政部分,并在需要时支持开发团队,但尽量保持干预的次数。打断、复杂化或设置复杂的流程去完成简单的任务只会导致延误。
9.确定可衡量和实用的KPI
KPI(关键绩效指标)是定义软件项目成功的度量标准。KPI会因项目而异,但在收集需求的过程中,它们通常会被讨论,它们帮助开发团队为软件应用的性能赋予一个定量值,以支持这些需求。
例如,对于一个电子商务应用来说,一个度量指标可能是能够无故障下单的在线购物者的数量。对于一个研究应用程序,可能是用户点击“提交”后检索结果所需要的秒数。
10.让团队始终了解情况
在开发团队通过Sprint的过程中,项目经理始终保持与主要内部利益相关者的联系;这些人的范围从用户体验设计师和数据分析师到销售和营销以及执行团队。此外,如果一个软件产品是为了被一个特定的客户或一组客户使用而开发的,项目经理也会频繁地与这些组织进行交谈。
这些会议帮助项目经理确保开发者的工作继续满足项目和客户的需求。例如,当利益相关者想要一个新的功能或一个不同的截止日期时,项目经理必须把这个反馈传达给开发团队,并相应地重新设定他们的优先级。
11.让你的团队成功
有效的软件项目经理了解他们的开发者的优点,并相应地给他们分配任务。你不需要对他们的技能集有深入的技术了解,但你应该知道他们最擅长什么和他们最喜欢做什么。有些项目会给你留出空间,让开发者有机会学习新的技能,而其他一些项目可能因为时间或优先级的限制,迫使你依靠一个开发者的特殊优点。
当给开发者分配工作时,试图避免任务切换;这会让团队成员难以集中注意力,可能会导致延误。另外,尽量避免在非必要的情况下给项目增加更多的人员。太多的厨师在厨房可能会破坏代码。相反,试图改变已经了解项目和其需求的团队成员的思维方式和优异实践。
12.管理风险并快速解决问题
风险是任何项目中固有的。成功的软件项目管理的关键是提前识别潜在的风险,因为这可以在应对它们时节省时间和金钱。每次你概述一个需求,设定一个里程碑,或定义一个任务时,都考虑一下可能涉及的风险——数据不足,软件中的错误,设计不完整,可能的购买者对价格的抱怨等等。
处理风险是关键,但解决问题同样重要。当开发者碰到问题时,他们需要知道他们可以立即找到支持,而不是自己处理问题。一个好的软件项目经理始终在线,随时准备帮助解决问题。
接下来,思考你和你管理的团队将如何应对每一个风险。对于风险的优先级也要有所考虑——例如,用户界面的颜色错误可能比数据库信息错误的风险小。一旦问题出现,立即解决;这减少了小问题变成大问题的风险,并允许开发团队更快地回到预定的任务中。
13.经常进行测试
在整个开发生命周期中测试软件,也称为质量保证,对项目的成功至关重要。速度慢、充满错误、不安全或难以使用的软件很难出售。至少,每到一个里程碑,软件都应该被测试。测试代码的团队应该与编写代码的团队不同。除了验证软件是否仍然满足项目需求,测试还应关注应用的稳定性、安全性和速度。任何代码的失败或问题应立即得到解决。
14.认可努力的工作
软件的设计目的就是简化复杂的任务。但达到这个目标绝非简单的过程。编写代码不仅具有挑战性——一组代码中的一个字符错误可能会导致整个应用崩溃,而理解软件程序如何解决问题或完成任务往往需要深入的分析思考。虽然销售或市场营销团队的“胜利”很容易看出来,但对于开发团队来说,这个量化可能就比较困难。
这就是为什么在整个项目过程中,重要的是要认可开发团队的成就。使用预定的会议作为一个平台,认可那些为复杂问题找到创新解决方案的团队成员。邀请他们展示他们的解决方案或讨论他们是如何处理问题的。与开发团队以外的同事分享成功的经验,向他人展示团队是如何取得进展的。
15.定期评估项目
由于软件开发生命周期是通过一系列的sprint进行的,每个sprint的完成都提供了评估项目进展的机会。观察单个Sprint以及整个项目,重点关注成功、失败和改进的领域。在你花时间评估时,与开发团队(帮助他们改善工作方式)和更大的利益相关者团体(帮助影响未来项目的开发方式)分享你的发现。
延伸阅读:软件项目管理工具盘点
1. PingCode :一站式软件研发项目管理工具,覆盖软件研发项目全流程。2021年入选36氪项目管理软件金榜-研发项目管理榜单 前二;适用于十几人到千人规模的的团队。知名客户包括小红书、商汤科技等;支持私有部署、麒麟鲲鹏等国产系统。【官方地址:https://sc.pingcode.com/lhb05】
2. Worktile :是国内市场占有率非常高的项目管理软件之一。被广泛用于电商、市场活动、律所项目、生产制造、行政、财务、设计、工程、教育、科研等几乎包含所有类型的项目。并且有许多知名客户,比如百度、招商银行、小米、旷世等等。【官方地址:https://sc.pingcode.com/v57ep】
3.Tapd:TAPD 是 Tencent Agile Product Development 的缩写,即:腾讯敏捷产品研发,是互联网高效协作专业实践,凝聚腾讯多年团队协作理念和敏捷研发精髓。TAPD 提供轻量协作、敏捷研发和 DevOps 持续交付三种解决方案。看板、文档、迭代计划/跟踪、产品需求规划、缺陷跟踪管理等丰富功能,帮助团队可视化工作进展、沉淀分享项目知识、提升团队协作效率。【官方地址:Tapd.cn】
4.Asana:在全球也算是知名的项目管理软件,从用户数量来看,Asana绝对是一款相当受欢迎的工作管理和协作平台。并且它曾经被《财富》杂志评为最佳工作软件之一,并且有许多知名的客户,如NASA, Uber, Spotify等。【官方地址:Asana.com】
5.Jira:全球最早的软件研发过程管理工具之一,被广泛应用于缺陷跟踪、客户服务、需求收集、流程审批、任务跟踪、项目跟踪和敏捷管理等工作领域。但近些年对国内用户的政策并不友好,特别是停售 Server 版,一定程度意味着对国内中小企业禁售。【官方地址:Atalassian.com】