专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »编程综合 » Kyle Brown: 偿还技术债务 »正文

Kyle Brown: 偿还技术债务

来源: 发布时间:星期三, 2010年5月26日 浏览:0次 评论:0
  创建技术平衡

  去年美国人消费习惯发生了巨大改变改变是我们大多数人始料未及至少没想到它会发生在我们这生中几年来美国个人储蓄第次开始出现增长而不是减少这标志着消费者最终开始认识到您是不能只借 不还 相应地我希望整个行业也能认识到同样规律也适用于技术债务正如对金融债务

  这个比喻对某些人来说也许有点难以接受但事实上这个观点早在 15 年前就第次由 Ward Cunningham 正式提出2005 年由 Joshua Kerievsky 进步发展

  简单来说个开发团队(Team)为了完成其他项目想要推迟完成项重要软件Software开发时就会出现技术债务虽然常见打算就是他们会稍后回来完成这个延迟项目但这些打算往往没有付诸行动这些被推迟活动可能是像编写文档这样基础工作或者像修改段代码使其更容易理解或者维护这样棘手工作再或者是更新个过时设计文档

  最近几个月来直在处理几个客户解决方案其间我感觉我更像个消费者债务顾问对象是具有过多抵押贷款不断提升信用卡余额还有个即将出世婴儿夫妻每个案例中虽然几乎被技术债务压倒但我们总不得不找到某些思路方法来减少债务 —— 同时继续开发新特性不断前进我通过系列实战所得出步骤和信用顾问建议他客户所采用步骤基本

  有那么多项目都面临着技术债务问题就让我们检查这些步骤看看它们是如何应用 —— 以及它们是如何帮助我们

  搞清楚您欠了多少债务

  清算您状况是第也是最重要旦您团队(Team)意识到技术债务是必须偿还(这当然是不容易实现而且还需要和业务部门进行合作)您就不得不算出事实上您到底欠了多少债务我找到完成这项工作思路方法就是对代码和设计进行个从顶层到底层审查

  从查看您设计文档开始:它是否需要更新?它是否获取了您设计中最重要部分?然后您或许想要通过检查代码哪个部分给您造成最大麻烦来对代码进行个有优先排列审查:哪部分是最难修改?哪部分出错率最高?哪部分对您业务最重要?回答这些问题会帮助您列出为了改善状况您必须进行活动

  您系统还有比代码和文档更重要问题而且其它这些部分也会造成技术债务例如操作性债务:您是否正在类似 IBM® WebSphere® Application Server 这样平台软件Software最低标准上运行?您运作团队(Team)是否正在费时费钱地手动进行那些应该自动进行任务?您是否在适合位置设置了监视能在问题导致网站WebSite故障的前将其发现而不是把时间浪费在事后分析上?

  最好思路方法就是请外部专家来帮您清算项目状态仅仅根据您解决方案优点做出个估计不受办公室政治或者任何个人和代码关系干扰

  最后评估需要包括根据优先级进行排列需要修改部分描述还有如何进行整改建议所列出每个整改项目成本估计掌握了这几个方面以后您就可以开始和业务所有人进行磋商讨论哪些债务需要偿还按什么顺序偿还

  停止制造新债务

  虽然步骤 1 是这个大计划中最重要步骤 2 常常导致业务方面最困难讨论这个过程中最困难部分就是学会改变您组织文化这样您就不会积累超过自己合理服务能力债务参考先前金融债务类比改变您消费习惯只用信用卡购买您所需(而不是想要)东西是很困难同时也是最难养成习惯

  想要解决您在步骤 1 中确定问题您必须花点时间来实施这些改变这就意味着在这些问题解决的前您需要先搁置新开发项目做到这点没有十全十美思路方法无论您选择用什么思路方法都需要和业务进行协调来保持技术债务减少和新开发项目的间合理平衡这里我会介绍些曾对很多团队(Team)都有效策略:

  把债务减少活动和您正在实施客户案例结合在作为个敏捷开发思路方法部分和业务部门进行协作来保证步骤 1 中确定活动已经包括在每个开发周期中麻烦部分就是平衡债务减少活动和涉及相同代码区域新开发活动例如假设您正在开发个电子商务网站WebSite然后您发现您大部分问题都在签出组件中您或许想要仅在那个范围内推迟新开发同时在该部分内偿还技术债务(进行代码重构更新文档等等)在这种情况下进行签出改变同时增加新促销或者改变您产品页面会是有效新开发活动

  采用个测试策略如果您构建基础设施是为了维持两个网站WebSite —— 个是您主网站WebSite个是 “测试” 网站WebSite —— 那么您就能够在测试网站WebSite上进行新开发同时重构主要代码流这么做好处就是不会降低任何新开发速度但是随后当这些测试网站WebSite更改必须和主网站WebSite集成时候会产生更麻烦集成成本

  选定您债务减少策略

  有了债务减少策略您可以考虑两种区别方式来确定您 “偿还方式” 优先顺序:

  第个可能策略就是类似于 “最高利率优先” 思路方法在金融领域内这个策略意味着您首先要偿还那些利率最高信用卡它们是让您花费最多在技术世界里这就意味着您首先要着手任务是有最大影响力那个任务把那些任务解决掉通常意味着为其他改变清理了道路 —— 还可能在性能可维护性等方面提供最大回报

  另个策略就是 “最低余额优先” 思路方法在金融领域内这就意味着首先要偿还那些余额最低信用卡这可以让您获得种成就感觉得已经迅速取得了某种实质性进展在技术债务方面这就意味着首先处理那些工作量最小任务如果您必须使业务或者管理部门信服偿还技术债务价值这个思路方法也是非常有效或者您公司文化非常看重结果展示快速进展对于为更大努力维持资金非常重要



  严格执行计划

  这里关键就是将正在进行债务减少作为项长期活动这不是活动;很多公司最近流行语比如重构而变得很失望他们希望从那些长期投资角度来看最好过程中得到短期效果预期不可避免事实是您经常会造成新债务;解决窍门技巧是确保您可以合理地偿还债务而不是任其积累

  跟踪和重估您进展

  最后您需要能够报告债务偿还活动中取得进展获取指标也是很重要它们能帮助您向业务和管理部门证明花费在这些项目上时间是合理例如您需要对代码进行几次重构才能改善其性能;掌握正确数据显示重构是如何改善用户体验这也是很重要同样地跟踪您将新特性添加到个简化代码基速度进展这也是个很重要指标它可以向业务部门显示其价值

  当然跟随这些步骤不能全部解决您所有技术债务但是它们至少能使您有条不紊地确定需要做什么这些改变会给这个开发流程带来什么样价值以及它们解决问题效果如何如果您能持续进行这项工作那么您就应该可以使您开发工件更易于维护使您开发流程更容易进行



标签:
0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: