博主:爱码叔
个人博客站点: icodebook
公众号:爱码叔漫画软件设计(搜:爱码叔)
微博:程序员涛哥
专注于软件设计与架构、技术管理。擅长用通俗易懂的语言讲解技术。对技术管理工作有自己的一定见解。文章会第一时间首发在个站上,欢迎大家关注访问!
漫画《程序员涛哥》
程序员王涛,外号涛哥。外表帅气!头脑灵活!但是聪明反被聪明误,日常出糗!
这里不仅有专属程序员的幽默,还有职场段子、生活糗事,也有软件设计知识干货!!欢迎关注,持续更新!
软件开发有很多“开发之外”的工作。非技术人员,甚至经验不足的程序员很容易错误的判断工作量。对工作量预估应建立在对系统、工作方式、基础环境的了解之上,根据风险大小给予一定的Buffer。凭借对自己技术水平的自信以及简单的需求描述给出的评估往往会过于激进。
估算的方法有很多,这里不再讨论。但是不管哪种方法一定都要考虑下面的这些因素。两个看起来差不多的需求,工作量可能有着天壤之别。
确定的:
- 1.采用的技术复杂度
- 基础环境稳定性
- 工作流程
- 开发规范中的非功能性要求
- 团队的技术能力
不确定的
- 需求。不到上线那一刻永远没有完全确定的需求。
- 不明确的非功能性需求。例如性能
- 遗留代码的复杂度
- 外部系统
以上列举了部分影响估算的因素。我分为了确定和不确定两大类。我们需要尽量将不确定的因素转化为确定的因素。例如需求尽量沟通清楚、研究遗留代码、找外部系统资料、收集潜在业务量等等。这样才能提高估算的准确度。
道理很简单,但由于我们受限于时间以及可用资源,不可能去掉所有不确定因素。有些影响不大的因素,我们根据发生的可能性适当给予 buffer 即可。但是对于评估影响非常大的不确定因素,我们需要和业务方确定前提、假设。这样可以化解掉影响很大的不确定因素。一旦打破了定好的前提和假设,则需要重新评估。