软件项目项目管理流程_软件项目管理101

软件项目项目管理流程

The statistics presented in the graph above are based on a survey of 5500 project management professionals. The survey was conducted as part of a report made by PMI. To understand the graph, let’s look at the topmost line which reflects the number of software projects between 2011 to 2018 that meet the project's original goals. In 2018, 70% of the projects succeeded to meet the business intent. Or from a different perspective, in 2018, around 30% of projects ended and didn’t provide a solution to the business needs. A huge percentage in my opinion. We can further see that more than 40% didn’t complete in the original budget and more than 45% didn’t complete on time. In this article, I give a few insights that I collected over time that will help you avoid falling into these statistics.

上图中显示的统计数据基于对5500个项目管理专业人员的调查。 该调查是PMI所做报告的一部分。 为了理解该图,让我们看一看最上面的行,该行反映了2011年至2018年之间达到项目原始目标的软件项目数量。 2018年,有70%的项目成功实现了业务意图。 或者换一个角度来看,在2018年,大约30%的项目结束了,并且没有提供满足业务需求的解决方案。 我认为这个比例很高。 我们还可以看到,超过40%的项目未按原始预算完成,超过45%的项目未按时完成。 在本文中,我将提供一些我随时间而收集的见解,这些见解将帮助您避免陷入这些统计数据中。

开发相关的东西 (Develop Something Relevant)

One of the biggest wastes of resources in software development is developing products, features, or software infrastructure that nobody needs. Ask any programmer how many times they work on something that nobody used and you will be amazed. We develop things that no one needs very often. Some of it is due to an objective uncertainty of product development, but a big portion of this waste can be avoided.

软件开发中最大的资源浪费之一就是开发没人需要的产品,功能或软件基础结构。 询问任何程序员,他们处理多少次没人使用的东西,您会感到惊讶。 我们开发出没人经常需要的东西。 部分原因是由于产品开发的客观不确定性,但是可以避免大部分浪费。

听您的潜在客户 (Listen To Your Potential Client)

Make sure you know who will use what you are going to work on before you start the actual programming. It doesn’t matter if it’s a client outside the company or someone within your company, you should make sure that they are going to use the product once you finished working on it. Here are a few questions to help you do that:

在开始实际编程之前,请确保您知道谁将使用您将要从事的工作。 不管是公司外部的客户还是公司中的某人,您都应该确保在完成产品使用后,他们将使用该产品。 这里有一些问题可以帮助您做到这一点:

  • How are they currently solving the problem? If they already have a different solution to the problem you are trying to solve then they will most likely not need your assistance.

    他们目前如何解决问题? 如果他们已经对您要解决的问题有不同的解决方案,那么他们很可能不需要您的帮助。
  • When will they start using this solution and how often? If they are not eager to start using the product then you should suspect that they might not really want it.

    他们什么时候开始使用此解决方案,以及多久使用一次? 如果他们不急于使用该产品,那么您应该怀疑他们可能不是真的想要它。
  • How many urgent or important issues are they dealing with apart from the current issue at hand? If they have a lot more urgent or important issues then they will most likely not use your product when the time comes.

    除了当前的问题,他们还处理多少个紧急或重要问题? 如果他们有很多更紧急或重要的问题,那么他们很可能在时机成熟时不使用您的产品。

The questions mentioned above, focus on the potential client's needs instead of the solution you are offering. Try to listen to what they have to say. Don't try to convince them that the problem you are trying to solve is important or that your solution is great. Check out the lean startup or the mom’s test for a much deeper understanding of this topic.

上面提到的问题集中于潜在客户的需求,而不是您提供的解决方案。 试着听他们所说的话 。 不要试图说服他们您要解决的问题很重要,或者您的解决方案很棒。 查看精益创业公司妈妈的测验 ,以更深入地了解该主题。

Image for post

通信 (Communicate)

Developing relevant software is all about communication. Communication between the team to clients, between the company’s management to the product management, and between the programmers to the product manager. Behind each feature, there is a programer that codes it. Usually, this programmer doesn’t communicate with the feature’s client regularly. To make sure that he or she doesn't work on something that no one needs, we need to constantly communicate with them and let them know what is the most relevant thing they should do. The following are some practical suggestions to implement:

开发相关软件全都与沟通有关。 团队与客户之间,公司管理层与产品管理层之间,程序员与产品经理之间的沟通。 每个功能的背后都有一个编程器对其进行编码。 通常,该程序员不会定期与功能客户端通信。 为了确保他/她不会处理任何人都不需要的事情,我们需要不断与他们沟通,并让他们知道他们应该做的最相关的事情。 以下是一些实用的实施建议:

  • Schedule periodic events to synchronize between the different roles of the organization. I think that 2 weekly meetings of half an hour with the developers will work for most cases.

    安排定期事件以在组织的不同角色之间进行同步。 我认为在大多数情况下,每周两次与开发人员进行半小时的会议是有效的。
  • Build a workflow where a task is not considered done until the project/product manager approves it.

    建立一个工作流,直到项目/产品经理批准该任务,该任务才被视为已完成。
  • Don’t let programmers be the final call on what to develop next. Programers are busy solving technical challenges. Hence, they don’t have a lot of time to understand what are the most needed features.

    不要让程序员成为下一步开发的最终决定。 程序员正忙于解决技术难题。 因此,他们没有太多时间来了解最需要的功能。
  • A good project/product manager should take part in the management program. They should be able to open it and understand what are the upcoming tasks. In my opinion, not having a project manager that constantly looks on the team tasks is a great recipe to develop something that no one needs.

    一个好的项目/产品经理应该参加管理计划。 他们应该能够打开它并了解即将执行的任务。 在我看来,没有一个项目经理经常关注团队任务是开发没人需要的东西的好方法。

按时完成开发 (Complete Development On Time)

Software development inherently has a lot of uncertainty. It is hard to estimate how much time a task will take, what tasks we don’t know about, and how future findings will change the requirements. Yet, we don’t build our product in a void, which means we have to give time estimations to our management or to our clients. How can we improve our time estimations? We need to put more time into it, but not too much time. We need to find cheap mechanisms that will allow us to better predict how much time our development will take.

软件开发固有地具有很多不确定性。 很难估计一项任务将花费多少时间,我们不知道哪些任务以及未来的发现将如何改变需求。 但是,我们不会在虚假的情况下构建产品,这意味着我们必须将时间估算给我们的管理层或客户。 我们如何改善时间估算? 我们需要花更多的时间,但不要花太多时间。 我们需要找到便宜的机制,使我们能够更好地预测我们的开发将花费多少时间。

现实点 (Be Realistic)

When asked to give time estimation, programmers often give overly optimistic estimations. Here are a few reasons why:

当要求给出时间估计时,程序员通常会给出过于乐观的估计。 原因如下:

  • Wanting to look good — Saying a task will take a long time in front of other teammates or in front of the managers can be perceived as weakness or inability to deliver.

    想要看起来不错-在其他队友面前或在经理面前说任务要花很长时间,这可能会被视为软弱或无法交付。
  • Programers are under pressure to give an unrealistic estimation. The managers often don’t believe them. When programmers say that something will take a significant amount of time they know what they are talking about. Don’t push them to say unrealistic estimations because this is what you want to hear.

    程序员承受着做出不切实际的估计的压力。 经理们通常不相信他们。 当程序员说某事将花费大量时间时,他们知道他们在说什么。 不要强迫他们说不切实际的估计,因为这是您想听到的。
  • We are not always at our best. When programmers try to estimate the time a task will take they usually think of times where they were at there best performance.

    我们并不总是处于最佳状态。 当程序员尝试估计一项任务所花费的时间时,他们通常会想到自己达到最佳性能的时间。
  • Take into consideration leave days, vacation days, training, and sick days, etc. Programmers won't do it for you so help them to think of those factors.

    考虑休假日,休假日,培训日和病假日等。程序员不会为您这么做,因此请他们考虑这些因素。

Except for the obvious solutions of considering all of the above, I want to give a rule of thumb. Multiply the time estimation by a constant number. The number changes between people but I would say to add at least 50% to the time estimation. If you don’t trust me, ask programmers in your surroundings what should be the magic number and you will be surprised by the answers.

除了考虑上述所有问题的明显解决方案外,我想给出一个经验法则。 将时间估算值乘以常数。 这个数字因人而异,但我想说要至少增加50%的时间估算。 如果您不信任我,请询问周围的程序员什么是魔幻数字,您将对答案感到惊讶。

达到要求的质量 (Meet The Required Quality)

Low-quality software is expensive. It creates endless problems, from system downtime, unworking features to a bad reputation, and much more. Creating high-quality software is challenging. It requires a lot of knowledge, time, and budget which is often limited. Sometimes it is fine to sacrifice our product quality to save time or money but we need to be very cautious about it.

低质量的软件很昂贵。 从系统停机,功能不正常到信誉不佳等等,它都会带来无尽的问题。 创建高质量的软件具有挑战性。 它需要很多知识,时间和预算,而这通常是有限的。 有时为了节省时间或金钱而牺牲我们的产品质量是很好的,但是我们对此必须非常谨慎。

Image for post
The Tradeoff Triangle — One Can’t Have Them All
权衡的三角形-一个不能全部拥有

过滤方法 (The Filter Method)

The filter method is a name I use for a basic concept — Our workflow should contain stages to improve our software quality. Each one of the stages is like a filter that prevents low-quality software from moving to the next stages of our workflow. There are many mechanisms that we can use as a “filter”, here are some:

过滤器方法是我使用的一个基本概念的名称-我们的工作流应包含改善软件质量的阶段。 每个阶段都像一个过滤器,可防止劣质软件进入工作流程的下一个阶段。 我们可以将许多机制用作“过滤器”,以下是一些机制:

  • Code Review — Letting different people in the team review the same code.

    代码审查-让团队中的不同人员审查相同的代码。
  • Define tests — Whether automatic or manual, we should test our code before releasing it to clients.

    定义测试-无论是自动还是手动,我们都应先测试代码,然后再将其发布给客户。
  • Penetrebility test — Defining the test we make to be sure that our project meets the security standards.

    渗透性测试-定义测试以确保我们的项目符合安全标准。
  • Gradual releasing — First release the product inhouse, then to beta testers and only then to the clients.

    逐步发布-首先在内部发布产品,然后发布给Beta测试人员,然后才发布给客户。
Image for post

The list I gave above is partial, but the idea is clear. We should define what our quality standards are and how we are going to meet them. Once we put our strategy on paper, then it is much easier to make sure it happens.

我在上面给出的列表是不完整的,但思路很明确。 我们应该定义什么是质量标准以及如何达到这些标准。 一旦将我们的策略付诸实践,确定它的实现就容易得多。

尽早发现问题 (Find Problems Early)

Another important concept is that you should catch your defects as soon as possible. Whether it be design problems or bugs, you want to become aware of it as soon as possible. The chart below, which was created by IBM System Sciences Institute, demonstrates this nicely:

另一个重要的概念是您应该尽快发现缺陷。 无论是设计问题还是错误,您都希望尽快意识到。 由IBM系统科学研究所创建的以下图表很好地演示了这一点:

Image for post
The Cost Of Fixing Bugs Depending On Discovery Stage
根据发现阶段修复错误的成本

According to their research, solving problems after releasing the product costs 100 times more! The message is loud and clear. Your quality strategy should focus on the early stages of the development process when it is cheap and easy to fix them.

根据他们的研究,发布产品后解决问题的成本要高出100倍! 信息是清晰的。 您的质量策略应着重于开发过程的早期阶段,即便宜且易于修复的早期阶段。

结语 (Wrapping up)

I discussed three of the main pillars of software project management — developing something relevant, doing it on time, and with high-quality. Each one of them is a whole world and I covered just a fraction of them. Yet, implementing even one of the principles I went over will improve your chances to have a successful software project. It takes time and effort to apply them, but it will be totally worth it.

我讨论了软件项目管理的三个主要Struts-开发相关的东西,按时进行并具有高质量。 他们每个人都是整个世界,而我只介绍了其中的一小部分。 但是,即使执行我所遵循的原则之一,也将增加您成功完成软件项目的机会。 应用它们需要花费时间和精力,但这是完全值得的。

翻译自: https://medium.com/swlh/software-project-management-101-3035ef521d47

软件项目项目管理流程

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目 录 导言.IT项目的生命期 第一章.IT项目的启动阶段 1.1 可行性研究报告框架 1.2 项目章程 1.3 项目整体风险水平定性分析表 1.4 多项目风险情况一览表 1.5 质量保证说明书 1.6 采购程序及准购权限表 1.7 会议议程安排表 1.8 会议预算表 1.9 会议申请审批表 1.10会议通知表 1.11会议签到表 1.12会议资料明细表 1.13会议记录表 1.14会议内容管理表 1.15会议代表通讯录 1.16会议纪要表 1.17会议决议表 1.18会议决议落实通知单 1.19会议决议跟踪表 1.20实际会议费用清单 第二章.IT项目的计划阶段 2.1 IT项目综合计划模板(1)——项目整体介绍 2.2 IT项目综合计划模板(2)——项目管理过程 2.3 IT项目综合计划模板(3)——项目组织介绍 2.4 IT项目综合计划模板(4)——工作包、进度和预算 2.5 IT项目综合计划模板(5)——技术过程介绍 2.6 项目范围说明书 2.7 软件需求调查表 2.8 需求分析说明书 2.9 系统设计任务书 2.10 工期类比估算表 2.11 项目活动计划表 2.12 项目进度计划表 2.13 里程碑计划及其跟踪表 2.14 所需资源清单及费用估算 2.15 成本类比估算表 2.16 按模块估计的成本估算表 2.17 基于费用科目的成本估算表 2.18 项目年度用款计划表 2.19 IT项目质量指标框架模板 2.20 IT项目质量保证计划模板 2.21 关键质量活动一览表 2.22 项目人员需求申请表 2.23 面试记录表 2.24 项目成员审核表 2.25 项目组工作说明书 2.26 项目成员岗位工作说明书 2.27 岗位说明书一览表 2.28 IT项目团队知识地图 2.29 项目成员责任分配矩阵 2.30 项目成员培训需求调查表 2.31 项目培训计划表 2.32 项目文档分类表 2.33 项目干系人的沟通需求分析表 2.34 项目信息接收责任明细表 2.35 项目成员联络表 2.36 单个风险损失值评估表 2.37 项目所有识别风险一览表 2.38 单个风险应对计划表 2.39 风险应对计划一览表 2.40 硬件产品请购单 2.41 软件产品请购单 2.42 项目采购计划明细表 2.43 采购招标书模板 2.44 采购投标书模板 2.45 供应商财务状况调查表 2.46 供应商评估表 2.47 采购中标通知书 2.48 采购落标通知书 第三章.IT项目的执行控制阶段 3.1 项目管理跟踪报告模板 3.2 项目变更控制表 3.3 项目变更动力、阻力分析表 3.4 项目范围变更一览表 3.5 项目变更状态跟踪一览表 3.6 范围/进度/成本/质量/采购变更一览表 3.7 工作周报 3.8 项目工作包进展报告表 3.9 项目月度进展报告表 3.10 项目月进度控制一览表 3.11 项目进度偏差控制表 3.12 某月/季项目进度汇报表 3.13 项目工作包进展抽查表 3.14 系统模块安装实施控制表 3.15 多项目进展状况一览表 3.16 项目费用申请表 3.17 项目支出明细单 3.18 基于最低预算的成本控制表 3.19 成本偏差控制表 3.20 单项目挣值分析表 3.21 多项目挣值分析比较表 3.22 信息系统缺陷的质量目标表 3.23 项目单元测试方案 3.24 系统测试用例表 3.25 系统测试问题报告单 3.26 系统缺陷状态跟踪表 3.27 软件Bug详细记录表 3.28 项目重大缺陷一览表 3.29 项目成员工作周报 3.30 临时成员加入项目组申请表 3.31 项目成员绩效考核表 3.32 360度考核表 3.33 培训申请审批表 3.34 前十个风险监控一览表 3.35 一/二次风险监控一览表 3.36 基于挣值分析的风险监控表 3.37 采购设备订单状态报告 3.38 采购设备费用状态报告 3.39 设备验收单 3.40 设备检验状态一览表 3.41 取消订单损失报告 3.42 退货清单 3.43 公司采购合同执行情况一览表 3.44 采购合同验收报告 3.45 采购设备分配表 第四章.IT项目的收尾阶段 4.1 用户部门新需求申报单 4.2 IT项目产品质量评审表 4.3 软件验收单 4.4 设备验收单 4.5 IT项目内部验收报告模板 4.6 最终项目文件列表 4.7 IT项目验收单 4.8 项目成员述职报告模板 4.9 项目成员经验教训报告模板 4.10 项目结束人员安排表 4.11 设备回收交付表 4.12 项目团队内部经验总结模板 4.13 最终项目内部总结报告模板 4.14 最终项目用户移交报告模板 附录.项目管理主要网站
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值