快速软件开发——经典错误(笔记)
当人们谈到获得快速软件开发的成功时,并不能列出成功的原因,因为太多了。也不要想着找到导致开发速度变慢的根源并消除他,因为也太多了。有时你做了一些措施去能够快速开发,但是即使犯了一个错误,也可能导致你前功尽弃。我们能做的,就是尽量避免所有导致项目变慢的错误,如果你避免不了,你就会陷入慢速开发,甚至导致项目失败。下面列举了36个常见的典型错误,这不是全部。
人员
- 挫伤积极性。激励可能比其他因素对生产效率和项目质量的影响更大。
- 人员素质低。
- 对有问题的员工失控。
- 英雄主义。
- 项目后期加入人员。
- 办公环境拥挤嘈杂。
- 开发人员与客户之间发生摩擦。
- 不现实的预期。这本身不会延长项目周期,但会助长认为项目开发周期太长的风气。
- 缺乏有效的项目支持。快速开发的许多方面都需要高层对项目的支持,包括实际的计划、变更控制以及新型开发方法的采用。缺乏有效的高层支持事实上注定了项目的失败。
- 缺乏各种角色的齐心协力。包括高层支持者、项目领导、项目成员、市场人员、最终用户、客户和任何项目介入者。
- 缺乏用户介入。这会导致项目充满需求误解,易受项目后期功能蔓延的威胁。
- 政治高于物质。
- 充满想象。一切结果要从“现实”去推论,不能凭借“我想”、“可能”、“也许”去判断。它所产生的问题会比其他问题的组合导致的问题还要多。
过程
- 过于乐观的计划
- 缺乏足够的风险管理。主动去管理风险。
- 承包方导致的失败
- 缺乏计划
- 在压力下放弃计划。项目失败的原因不是在放弃计划本身,而是不能指定替代措施,反而是一头栽进编码和问题处理中去。
- 在模糊的项目前期浪费时间。
- 前期活动不合要求。前期活动包括需求分析、总体设计和详细设计。如果一项工作在项目初期需要5小时完成,那么在项目后期你至少需要50小时才能完成它。
- 设计低略。
- 缺少管理控制。设置管理控制点,以便有必要的计划拖延迫近警告。
- 太早或过于频繁的集成
- 项目估算时遗漏必要的任务。
- 后期赶进度。如果你的项目为期6个月、花三个月的时间才完成2个月的里程碑;或者增加了一些新功能,但没有做相应的计划调整,这时你必须采取一些措施,不然你必然无法按期完成项目。
- 鲁莽编码
产品
- 需求镀金
- 功能蔓延
- 开发人员的镀金
- 又推又拉的交易。当管理者批准进展慢于预期进度的项目顺延并在进度更改之后加入全新任务的时候,会发生一种奇怪的商讨策略。这对进度毫无帮助,只会破坏进度。
- 研究导向的开发
技术
- 银弹综合征
- 过高估计了新技术或方法带来的节省量
- 项目中切换工具
- 缺乏自动的源代码控制手段
我们每个人或多或少地曾经有过类似的经历。避免或减少这些错误并非很难,但为什么总在犯?关键是认识问题,正如作者所说,你在初期用一倍的工作量可以完成的质量保证工作,如果当时没有做,到后来恐怕需要付出5~10倍的代价才能弥补。我们一定要重视那些看来是“小事”的问题,它们可能像长江大堤中的白蚁一样,小洞会毁了大事的。
快速软件开发——经典错误(笔记)相关推荐
- 快速软件开发——项目修复(笔记)
陷入麻烦的项目的一些特征 没有人对项目何时结束有一点点概念,而且绝大多数人连猜测的欲望都没了. 产品满目疮痍. 开发组人员工作超时,每周多余60多个小时--或者是在非自愿的情况下,或者是同事间引发的压 ...
- 《快速软件开发》概要
快速软件开发 有效开发 + -什么是快速软件开发 追求提高开发速度的开发 如何实现快速开发 快速开发策略 总体战略 避免重复工作 打好开发基础 管理风险 面向进度的实践 开发速度的四维 人员 人员的选 ...
- 软件开发流程--学习笔记
软件开发流程--学习笔记 背景 产生原因及作用 个人理解 软件开发流程 需求 需求调研 需求分析 需求确认 设计 概要设计 详细设计 编码 测试 交付 维护 知识拓展 软件开发生命周期(SDLC) 软 ...
- 有关《快速软件开发》的几点不解 By Yiming Qian
最近读了Steve McConnell写的<快速软件开发>,提出了几点自己的看法,欢迎大家指正交流. 1.如何理解快速软件开发中的快速? 书中给出的"快速软件开发"是这 ...
- 《快速软件开发》读书心得
学习advanced software engineering已经很长时间了,但是系统地读相关project control和management的书还没有仔细地看过,借这一次读书心得的机会比较静下心 ...
- Dew Lab Studio 2020 VCL软件包,很好的RAD(快速软件开发)工具
Dew Lab Studio 2020 VCL软件包,很好的RAD(快速软件开发)工具 Dew Lab Studio是一个软件包,在一个安装程序中包括一组MtxVec,DSP,Statistics和D ...
- 快速软件开发 学习笔记 之六
第9章 Customer-oriented Development(面向客户软件开发) Customer("客户")这个词,是指花钱购买拟开发软件产品的人或负责验收软件产品的人.我 ...
- 快速软件开发 学习笔记 之三
第4章 风险管理 软件经理必须悉心学习风险管理,才能在项目中避免项目失控.正如Tom Gilb所说:"如果你不主动击败风险,它们就会主动击败你."一个成功的软件项目,应该着眼于事前 ...
- 陈天-软件开发能力-live 笔记
工程师往往忽略的软件开发能力 slide 地址 软件开发能力 在刚开始的阶段大家对于语言的关注度往往大于系统层级,业务层级. 软件系统是个大工程,包括 separate programs, confi ...
最新文章
- DNS tunnel的原理及实战
- .net序列化与反序列化通用方法
- c语言fmt,Go 标准库-fmt
- [C++STL]常用算术生成算法
- C++ opengl GL_QUAD_STRIP的绘制
- LeetCode-114: 二叉树展开为链表
- Python机器学习:评价分类结果004F1score
- Linux 命令(5)—— shutdown 命令
- 在Java中使用instanceof的性能影响
- router中获取vuex_Vue 中 Axios 的封装和 API 接口的管理
- 动态加载JS过程中如何判断JS加载完成
- 尚硅谷视频讲解:多态性
- besiege机器人_《围攻》双脚机器人制作图文教程 双脚机器人怎么制作
- 杨海朝 mysql_老男孩Mysql高级DBA 实战新浪首席DBA 老男孩教育杨海朝老师全程主讲 老男孩Mysql视频...
- mac地址前6位对应vendor
- 修改无法启动的容器中的配置文件(elasticsearch)
- mysql8三种安装方式
- 十年电影票房数据爬取与分析 | 免费数据教程
- 用真金做的电路板——金手指
- 3.用js实现关闭淘宝二维码