《嵌入式系统开发之道——菜鸟成长日志与项目经理的私房菜》——02-06 项目成本(Cost)管理

简介:

本节书摘来自异步社区《嵌入式系统开发之道——菜鸟成长日志与项目经理的私房菜》一书中的第2章,第02-06节,作者 邱毅凌,更多章节内容可以访问云栖社区“异步社区”公众号查看。

02-06项目成本(Cost)管理

screenshot

企业组成项目团队来执行项目绝对是为了公司利益,所以在规划阶段必须仔细估算项目成本,除非有更大的利益,否则,执行没利润的项目是毫无意义的。

嵌入式系统开发有很大部分是软件工作,而软件开发大部分是脑力工作,所以很难预估软件系统的开发成本及其真正价值。举例来说,当我们对客户报价时可能会说:‘我们会指派5位工程师,3个月full time做这个项目,根据业界软件开发项目的行情,台湾地区工程师一个人月是4000~5000美金,所以我们的软件报价是……’。

这个算法看似有道理,但5位资深工程师与5位菜鸟工程师创造的价值完全不会在同一个水平,即便是同样薪资水平或工作年资的工程师,其单位时间产出的差异可能达数倍之多。就算只看个人表现,对这个领域的熟悉程度也会影响其产出,甚至工程师当时的情绪或生活状况,都可能会使其产出不一致。

所以业界用人月来计算软件的成本或‘售价’,其实是无计可施之下的办法。也许你会问,那我们不要用工时来计算软件开发成本,直接计算最后交付给客户的‘软件价值’,然后乘上一个该赚的比例不就好了?

然而软件价值估算是一件更麻烦的事情!一个方法是用程序的行数来计价,同一个模块,工程师A用100行完成,但工程师B只用50行完成,且性能更好。请问,这个模块到底该如何计价?嵌入式系统里的一行程序和网络程序里的一行程序,价格又该如何区分?

软件价值估算是一个专门的学科,其中有许多复杂的数学模型。幻灯片中有个表格,说明了在某项评估软件开发成本的模型中,它包含一项公式,你会发现嵌入式系统的乘数与指数因子都高过其他种类的软件开发项目。这只说明嵌入式系统里的某个模块,应该比其他软件系统中功能类似的模块要来得贵,但软件系统种类这么多,怎么可能就这么简单区分为3种价格?

这个世界上没有多少人搞得懂教科书里的软件价值模型,所以软件报价与软件开发成本估算,一直是项目经理心中的痛。在嵌入式系统中,硬件与生产部分的成本较容易估算,而软件的成本估算还是只能基于WBS与资深软件人员的经验,毕竟分别对多个小任务进行估价,总是比直接评估整个项目要容易。

看吧!我们又碰到WBS了, WBS真的很重要!

screenshot

从幻灯片中的表格可以看出,工作被切割的越细致,所估算出来的成本就越准确。但实际上,根本等不到项目团队把项目需求弄清楚、把WBS做出来后才对客户报价,通常就是用这张幻灯片所提到的人月估价法(实际运行时,根本就是心里已经预算了一个总价,换算成人月后,再设法做个表格说明各个工作项目、需要多少人做多少个月,因此,这个项目总共需要多少人月,基本上就是一个凑答案的做法)。表格里显示出这种报价法的误差可达25%~75%,现在你们应该知道这个75%是怎么来的了。有一本很有名的项目管理书籍叫做《人月神话:软件项目管理之道》,极力推荐所有从事软件开发的同事们细读此书。

也就是说,嵌入式系统开发项目的合约价格通常和实际价格有段差距,所以这个价格拿来参考就可以了,千万不可以当作项目运行期间成本管控的基础。项目经理还是应该根据WBS重新评估开发成本,并在项目执行期间,监督预算的使用状况。

screenshot

台湾地区信息界其实是明显的硬大软小,许多系统厂家还是有‘买硬件送软件’的business model—意即客户只要最后将产品交由该公司生产,则该公司只会收取一些软件开发费,甚至真的是软件免费,只要能在大批量生产时赚回来就可以了。

就算对客户的报价中不包含软件的金额,真正项目在运行时,软件开发不可能毫无花费,因此,项目经理还是要把‘实际’的预估成本算清楚,以确保项目不会超支。

screenshot

成本管理的主要目的就是避免超支,通常一般工程人员不需操心预算的问题,但如同进度落后会导致项目失败一样,预算控制不当,也可能导致项目断炊,一样会使得项目失败。而项目经理存在的目的就是尽所有的努力,使项目往成功之路迈进。因此,项目经理除了要监控进度外,也要控制项目‘烧钱’的速度。

换句话说,只用进度来描述项目目前的状况是不够的,还必须同时考虑成本的使用状况。项目管理知识体系提供一个已广为采用的方法—挣值管理。挣值管理主要用于项目成本和进度的监控,它将目前为止所完成的工作,与项目计划里的估计值进行比较,这会提供一个关于‘项目距完成还有多远’的估量。通过从已经完成的工作量推算,项目经理可以得到距离项目完成还需要花费多少资源的估计。

挣值管理是一个很有用的工具,除了可以告诉你目前项目的进度、成本花费以及与项目计划间的差异之外,更重要的是从曲线图中可以看出项目的趋势。虽然趋势表明项目可能会delay或超支,但不代表项目就真的会 fail,但趋势向下无疑是个警告,此时项目经理必须提早 do something,以阻止状况恶化。

挣值管理并不复杂,实际上我们也不需要自己按计算器,项目管理软件会帮忙计算出所有的进度与成本指标。对挣值管理有兴趣的朋友可以翻阅PMP的书,直接找个案例来看,今天我就不详述了。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
1月前
|
小程序 前端开发 API
微信小程序全栈开发中的异常处理与日志记录
【4月更文挑战第12天】本文探讨了微信小程序全栈开发中的异常处理和日志记录,强调其对确保应用稳定性和用户体验的重要性。异常处理涵盖前端(网络、页面跳转、用户输入、逻辑异常)和后端(数据库、API、业务逻辑)方面;日志记录则关注关键操作和异常情况的追踪。实践中,前端可利用try-catch处理异常,后端借助日志框架记录异常,同时采用集中式日志管理工具提升分析效率。开发者应注意安全性、性能和团队协作,以优化异常处理与日志记录流程。
|
3月前
|
数据库
什么是计算机软件开发领域的 verbose 代码和日志
什么是计算机软件开发领域的 verbose 代码和日志
33 0
|
4月前
|
负载均衡
|
4月前
|
运维 监控 关系型数据库
百度搜索:蓝易云【MYSQL四种管理日志详细介绍】
这四种管理日志对于MySQL服务器的性能监控、故障排查以及主从复制等方面都非常重要。在使用这些日志时,应根据具体需求来选择开启和配置,并定期清理和维护日志文件,以免占用过多磁盘空间。
58 0
|
4月前
|
调度
kettle开发篇-写日志
kettle开发篇-写日志
99 0
|
5月前
|
存储 Oracle 关系型数据库
postgresql数据库|wal日志的开启以及如何管理
postgresql数据库|wal日志的开启以及如何管理
373 0
|
2月前
|
XML Java 开发者
【SpringBoot实战专题】「开发实战系列」全方位攻克你的技术盲区之SpringBoot整合众多日志管理系统服务starter-logging
【SpringBoot实战专题】「开发实战系列」全方位攻克你的技术盲区之SpringBoot整合众多日志管理系统服务starter-logging
45 1
|
3月前
|
供应链 Java 测试技术
开发Java应用时如何用好Log
开发Java应用时如何用好Log
78 3
|
5月前
|
Java Maven
maven 项目配置日志打印以及异常日志打印问题
maven 项目配置日志打印以及异常日志打印问题
77 0
|
5月前
|
SQL Java 数据库连接
SpringBoot项目中Mybatis不打印日志怎么办?
SpringBoot项目中Mybatis不打印日志怎么办?
201 0