无需停运而减少技术债务的八个技巧
如果投机取巧,一旦开发项目陷入可靠性或经济上的无底洞时麻烦就大了。下面来看看避免技术债务风险的方法。
快速完成一个IT软件项目而又不产生某种程度的技术负债是很难的。当人们仓促地开发和部署项目时,质量往往会受到损害,因此人们不得不解决兼容性问题,安全漏洞,性能问题以及各种需要大量预算的麻烦事。
但是,即使重要项目严格受制于日程限制时,技术债务仍可以减少到可接受的水平,从而可以在时间,质量与成本之间进行合理的权衡。下面来看看减少或消除技术债务而几乎不会产生负面影响的八种方法。
1. 使运营和业务团队目标一致
减少发生技术债务的可能性的一种方法是在项目计划中纳入IT运营和业务团队。金融服务咨询公司Actualize Consulting的负责人Matt Seu说:“这使运营商在计划制定过程中有了话语权,并在上市时间与维护成本之间有权衡利弊的余地。”
Seu说:“在迭代计划中做出明确的决定,以发现何时会发生技术债务以及必须在什么时间范围内消除技术债务。以这种方式管理技术债务将在项目结束时消除项目风险。”
IT人员和技术服务公司Genesis10的首席执行官Harley Lippman表示,控制技术债务是团队的工作,应像项目一样进行管理。他说:“这将使该组织不遗余力地牢记初衷并且不至于白白浪费时间”。专注于渐进式改进。“不妨设立团队指标以确保团队协作并将管理技术债务作为工作重点。”
2. 仔细计划并编制切合实际的预算
要避免技术债务就必须进行周密的计划并了解大量严酷的真相。云联络中心提供商Five9的首席技术官Jonathan Rosenberg解释说:“对产品的发展方向有明确的要求和视野,再加上适当的资源配置和成熟的软件开发流程,这一切使工程师能够以适当的技术债务水平创建产品。”
医疗技术软件开发商MedAcuity的首席软件工程师Jarman Joerres建议在项目开始时就创建名为“工程准备金”的预算,以应对导致意外技术债务水涨船高的一切意外因素。他说:“规划可最大限度地减少或消除技术债务的软件项目的最佳方法是将其包含在计划和估算中。”
史蒂文斯理工学院的IT副总裁兼首席信息官David Dodd指出,只有当人们理解,进行计划并从战略层面上为组织的未来定位时,技术债务才是有用的。他说:“例如,当某个组织故意等待开发新产品所需的新兴技术,或计划开发和发布有助于转变市场的全新系统时。否则,技术债务就会通过出卖你的未来能力而损害了组织的长期利益。”
3. 设定可实现的目标并衡量结果
应对交付时间的压力是企业要面对的常态,但是要抵制使用设计捷径来加快开发进度的诱惑,因为仓促开发的软件在未来往往很令人操心。
开发架构提供商Skuid的首席技术官兼工程执行副总裁Mike Duensing表示:“架构师的解决方案可针对开发和生产进行扩展”。Duensing强调了这样做的重要性——与用户互动以了解其要求并预测未来的变化需求。避免设定不切实际的设计目标也是十分明智的。他说:“与其尝试发布一大堆功能,不如将解决方案范围缩小,逐步递增,从而使你可以分配适当的时间进行适当的设计和测试。”
管理技能培训组织CTO Academy的联合创始人Jason Noble建议向所有开发团队成员强调质量的重要性。他说:“他们必须明白,这必须纳入所有流程。”
Noble还建议为每个产品迭代制定可衡量的目标。他表示:“将此设定在可实现的水平。经过多次迭代,技术债务可以得到减少,同时又不影响新产品的功能,同时还要具备可持续性更高和更可靠的代码。”
为了确保达到质量标准,Noble建议使用静态分析工具,例如开源产品SonarQube。他说:“这些工具会扫描代码并提供各种质量指标,类似于文字处理器中使用的阅读和语法工具。”
4. 建立在牢固且灵活的基础上
确保你的项目有牢固的架构作为依托。Duensing警告说:“糟糕的建筑结构造就了无法整改的豆腐渣房屋……并可能引发衰退”。经过精心设计,强化的解决方案有助于项目更新更快且成本更低,从而减少发生意外技术债务的可能性。
团队负责人还必须明白,几乎每个项目计划都是从毫无头绪开始的,并且往往是在制度压力下发展,以至于产生过于乐观的态度。联合利华的子公司uFlexReward的首席执行官Ken Charman表示:“解决技术债务的办法不是以更详细的计划和更严格的合同来降低风险,从而解决过度乐观的问题,而是要更明智地管理交付预期”,这是在推广一种员工奖励制度。他认为:“使用宽松的计划,其奖励差额大体上基于经验;这将减少通过放弃功能来实现交付的需要”,他是这样认为的。
5. 敏捷化
有越来越多的组织渐渐接受敏捷软件开发,这是将方法交给协作,自行组织的团队和跨职能团队的一系列方法和实践。如果这种方法得到严格应用,敏捷开发使组织可以避免技术债务,其方法是快速且以迭代的方式创建和发布新产品。Dodd说:“这一过程将新产品和新功能尽快并逐步地交到用户手中”。随着新版本的交付,各种改进和问题都得到了解决,这使技术债务的积累不太可能产生。
敏捷方法认识到项目在生命周期中从未真正完成过,并且也从来都不是完美的。“同时,敏捷方法专注于……针对能力和质量的简化了的开发”,Dodd说。重要功能往往要频繁地开发,测试并投入生产。敏捷团队可能不会发布软件的“全面(Big Bang)”方法,而是每年发布几次重大升级。Dodd指出:“这可以使产品保持相当平稳的发展,还可以帮助用户避免重大的中断事件。”
6. 避免使用过时的技术
遗留应用程序,过时的技术以及不同的平台和流程可能会使组织陷入沉重的技术债务,迫使其推迟基本的现代化计划。DNS和流量管理技术提供商NS1的联合创始人兼首席执行官Kris Beevers说:“技术债务将大量金钱和宝贵的时间浪费在系统和应用程序上,而这些系统和应用程序并不是为现代企业所需的规模和速度而打造的。”
旧资产和老方法也往往充斥着安全漏洞,难以集成和自动化,并且很可能不再更新。 Beevers指出:“寻找人才来管理基于复杂或过时的代码构建的遗留应用程序也是一个日益严峻的难题。坚持采用过时技术不仅会消耗宝贵的预算,而且还会阻碍公司创新和保持竞争力的能力。”
7. 淘汰没有得到充分利用的资源
定期检查现有平台和应用程序的使用水平,这是另一种减少技术债务的方法。人工智能和机器语言咨询公司Small Scale AI的首席顾问Rob Peterscheck表示:“也许只要删除未使用或很少使用的产品(而不是对其进行更新)就可以消除技术债务。实际情况往往是,在技术产品使用最少的地区,技术债务却最严重。”
技术债务是可以减少的,其方法是利用高效的生命周期,专注于对日常需求至关重要的平台和应用程序并减少不必要的产品(虽然这些工具可能不完全是遗留工具,而是需要稳定的更新和修复程序来服务不断减少的用户)。Peterscheck指出:“对于大型组织而言,光是了解环境中的所有应用程序和解决方案以及它们的使用方式就已经够难了。”
8. 注意警告标志
组织还应注意技术债务达到拐点时必然会出现的警告信号。Beevers指出,关键指标包括大量一次性手动变更,没有足够的文档以及没有与其它应用程序或云端做无缝集成。
只有急于使软件快速上市时,在一定程度上容忍技术债务才是可接受的。Beevers说:“很多时候,将过渡的软件先发布出去,以期未来的版本更新,这种做法是可以接受的。”