刚结束了一段不愉快的项目经历,其中掺杂着各种抱怨和愤怒,然并卵,人微言轻,并没有阻碍项目走向灭亡。

现在静下心来,以旁观者的身份重新审视了一下这段经历,颇有心得。正巧收获了一本宝典《解析极限编程:拥抱变化》,在里边看到了我们项目的影子,该书言辞犀利,见解独特,有种相见恨晚的悲哀,给了我很多的心理安慰

极限编程简称XP,主要适用于中小型团队在需求不明确或者迅速变化的情况下进行软件开发的轻量级方法学。我们项目应该也不适用这种开发模式,因为需求极度不明确,项目整体方向都不清楚,所以怎么搞都是废,这完全归功于客户,呵呵。虽然不适用,但其中理论部分是相通的,可以学习一下。

XP流派的主要特征:适应环境变化和需求变化,充分发挥开发人员的主动精神。

软件不能按时交付,也就不能创造价值,这不仅会造成经济损失,而且对当事人本身也有很大的影响。我们需要找一种新的方法来开发软件(非常有必要),我们的项目就是缺少变通,除了加班还是加班,哎。。软件开发的基本问题是其风险,进度延迟、项目取消、系统恶化、缺陷率、业务误解、业务变更、错误特别多、人员调整(半年后,这个项目的所有优秀程序员开发厌恶而离开了)。因为项目需求的极度不确定性,导致开发人员的工作变得极度复杂,做了又改,改了又全部否定,重做后发现还是第一版的好,再改回去。最后导致项目延期,缺陷率太高而发布失败,项目做到这种地步,不全是客户的原因,项目管理者也有责任。

控制项目的共有四个变量--成本、时间、质量和范围。其中,范围的控制最有价值,在这个模型中,软件开发的游戏规则是让外力(客户、管理人员)确定任意三个变量的值,而开发团队确定第四个变量的结果值。很多管理人员和客户认为他们可以确定所有四个变量的值。“你要用这个小组在下个月一号前达到所有这些需求。质量是这儿的首要工作,所以它应该达到通常的标准”,这种情况下,质量总是被抛诸脑后,这是因为在太大的压力下,没有人能做好工作。时间上也可能会失控,最后你得到的是蹩脚的软件。解决的办法是,让这四个变量变得可见。如果每个人-程序员、客户、管理人员-都能看到所有这四个变量,他们就能有意识地选择控制哪些变量。如果不喜欢第四个变量得出的结果,他们可以改变输入,或者选择控制另外三个变量。

每当看到此,我就佩服的五体投地。该死的项目,极度吻合的沿着剧本走,像是别人经历过的一样,我感同身受,我想知道,这些理论真的是凭空思考的么?看了这么多,也挽救不了那糟心的项目了,只能默默记下,警戒自己,不要重蹈覆辙。

项目最重要的就是范围,客户不能告诉我们他们想要什么,而当我们给出他们所说的需要的东西时,他们又不喜欢,软件的开发会改变软件本身的需求。一旦客户见到第一个版本,他们就明白了在第二个版本中他们需要的东西。。。或者他们在第一版本中实际想要什么。要是我们把需求的这种“柔性”看作一个机会,而不是问题,会怎么样呢?那么,我们就可以选择将范围当作四个变量中最容易控制的。我们可以对它进行塑造,如果到发行日期的时间变得紧张,那么总会有一些东西可以延期到下一个版本。通过不去试图完成太多的功能,我们就可以保持能力按时实现满足质量的产品。然而,现实中的客户总是异想天开,要求即保证质量,又不断扩大范围,还要求按时发布版本,换来的就是无尽的加班,先前已提到,这种情况下,质量是最先被忽略的,也就意味着BUG在不断的被生产中,项目将陷入恶性循环。所以理论是美好的,现实是残酷的,但我们还要保持相信的态度,理想还是要有的,万一实现了呢,呵呵。。

项目会经常改变方向,这必须是一个容易包容变化的过程,我们也不想在没人使用的软件上浪费太多,必须将变化的成本保持在合理的范围内。为了避免丢弃重要功能,舍得是很有必要的,首先实现客户最重要的需求,这样如果不得不放弃别的功能,那么这个功能也不能比已经在这个系统的其他功能重要,这需要管理人员深刻地和客户沟通,否则客户就真理了,哎哎哎。。。如果真的确定不了,等待要比现在实现它更好,避免无谓的劳作。

客户和管理人员的责任已经说清楚了,我们再来探讨开发人员应注意的事项。

由于篇幅限制,XP的开发团队将放到下一篇中详述。

极限编程-拥抱变化阅读感想(一)相关推荐

  1. 极限编程-拥抱变化阅读感想(二)

    接上文------------------------- 针对开发团队,XP同样提出了四个准则:沟通.简单.反馈.勇气     项目中出现的问题无一例外总是出自那些不愿与别人探讨重要问题的家伙身上.沟 ...

  2. 摘自《解析极限编程-拥抱变化》

    软件开发基本问题: 1. 进度延迟 2. 项目取消    最大业务意义的最小版本 3. 系统恶化    一套跟踪测试程序,每次更新不允许累积错误 4. 缺陷率         5. 业务误解    6 ...

  3. 拥抱变化——从Atlas到ASP.NET AJAX(4):大大简化的了的Extender扩展器控件

    阅读本文之前,您需要安装完成Microsoft ASP.NET AJAX v1.0 Beta(详见拥抱变化--从Atlas到ASP.NET AJAX(1):下载安装总览).安装完成之后,Visual ...

  4. 拥抱变化——从Atlas到ASP.NET AJAX(1):下载安装总览

    序 在前面的帖子(Atlas新版本的发布对我而言无疑是一个晴天霹雳)中,我曾说到第一本书(<ASP.NET Atlas程序设计:第I卷 服务器端>初稿完成)夭折的事情.该文章发布之后,得到 ...

  5. Istio 1.5 发布——拥抱变化,爱上单体

    北京时间 2020 年 3 月 6 日凌晨,我们期待已久的 Istio 1.5 发布了,发布公告见 https://istio.io/news/releases/1.5.x/announcing-1. ...

  6. 如何编写出拥抱变化的代码

    摘要:编写高效优质的代码一直是程序员所追求的目标之一,那么什么样的代码才叫优质呢?其中最重要的莫过于易维护.易修改.本文作者从面向对象和SOLID两大方面,非常详细地总结了如何编写出易修改的代码,绝对 ...

  7. “云时代架构”经典文章阅读感想十六

    云时代架构"经典文章阅读感想十六 (支付宝架构师眼中的高并发架构) 经过这一学期的阅读,看到最多的一个名词就是高并发. 高并发高并发经常会发生在有大活跃用户量,用户高聚集的业务场景中,如:秒 ...

  8. 《拥抱变化——社交网络时代的企业转型之道》一第1章 助力社交商务成功的AGENDA体系...

    本节书摘来异步社区<拥抱变化--社交网络时代的企业转型之道>一书中的第1章,第1.1节,作者: [美]Sandy Carter 译者: 侯德杰 责编: 赵轩, 更多章节内容可以访问云栖社区 ...

  9. 《拥抱变化——社交网络时代的企业转型之道》一构筑社会信任

    本节书摘来异步社区<拥抱变化--社交网络时代的企业转型之道>一书中的第1章,作者: [美]Sandy Carter 译者: 侯德杰 责编: 赵轩, 更多章节内容可以访问云栖社区" ...

最新文章

  1. Rulo扫地机器人app_要买这样的扫地机器人 浦桑尼克扫地机器人评测
  2. bgss::spherical_side_formula用法的测试程序
  3. JMM中的happens-before
  4. python定义构造函数、包括颜色价格品牌_《Python编程与算法基础教程》(第二版),蒋洪宇,青松,第9章:课后练习,程序设计,版江红余,第九章,习题,答案...
  5. 192.168.8.1手机登陆_高端机型都在鼓吹的ufs3.1是什么?对于手机使感受明显吗?...
  6. jsp向servlet传输数据
  7. Springboot — 用更优雅的方式发HTTP请求(RestTemplate详解)
  8. insert时调用本身字段_多线程编程时,7件你必须知道的事情
  9. AsciidocFX相关
  10. 基于智能电网的电力线载波通信研究
  11. java实训项目百度脑图
  12. u8转完看不到菜单_用友U8软件菜单和导航有功能不能正常显示,如何解决?
  13. Unity Editor 编辑器扩展 五 EditorGUI
  14. CNSD在这里记录自己成长
  15. 和同事技术争吵_注意数据争吵
  16. win11壁纸怎么可以动 Windows11秒变动态壁纸的设置方法
  17. 权限认证实现(责任链模式)
  18. Python中Scapy网络嗅探模块的使用
  19. 水库大坝安全监测监控系统平台xmind分析+辽阳市水库大坝安全检测平台+志豪未来科技有限公司+陈志豪
  20. 重磅官宣:GitHub App 终于来了

热门文章

  1. C# FTP操作(上传、下载等……)
  2. android 局域网 发现,局域网内android设备发现及通讯
  3. 解决win10 自动同步时间灰色
  4. JVM 逃逸分析 (史上最全)
  5. (转)实用Word使用技巧大全
  6. 深信服AD应用交付介绍
  7. 如何实现上传多个图片并依次展示_如何在一页PPT中插入多张图片,并保持其美感...
  8. 《性能之巅—洞悉系统、企业与云计算》读书笔记---第二章
  9. OpenCV学习篇2:viz模块简单用法
  10. 固态硬盘计算机怎么自定义分区,如何将SSD固态硬盘设置为主硬盘,如何将SSD分区设置为主硬盘?...