代码质量和生产速度是两个至关重要但有时相互冲突的因素。毫不奇怪,每个开发团队迟早都会面临“速度与进步”的问题。毫无疑问,代码质量和交付速度都很重要。
良好的代码质量让以后的开发更简单、更快、更稳定。同时,高生产速度使公司更加敏捷,从而对客户更感兴趣。但是软件公司如何才能在缩短上市时间和最大限度地减少低质量代码之间找到适当的平衡呢?
什么是技术债务?
我们如何定义科技债务?技术债务是一个术语,用于描述未正确编写的代码,并且可能会损害将来添加新功能的能力。我们可以将技术债务视为改进代码以使其更加高效和清晰而应该做的工作。另一方面,这些改进并不一定会给企业带来额外的价值。
技术债务一词最初是由美国程序员沃德·坎宁安(Ward Cunningham)创造的,他是第一个维基百科的发明者。这个想法是将科技债务视为金融债务的类比。如果有债务,就应该支付利息。就技术债务而言,利息等于使用低于标准的代码后添加新功能所需的额外开发工作。
什么会导致技术债务?技术债务可能是由于不合理的要求、误导的假设、沟通不畅或不切实际的时间表而产生的。开发商为了赶上最后期限而偷工减料的情况并不少见,但问题仍然存在——他们应该总是这样做吗?
速度与质量?
没有人会认为代码质量和生产速度都很重要。出于显而易见的原因,不同类型的企业选择高质量发展而牺牲速度,反之亦然。一方面,我们非常自然地希望初创公司能够快速行动,以便他们能够尽快将产品推向市场。另一方面,我们有老牌公司的逻辑,他们的知名度太高,无法生产低质量的产品,所以他们通常倾向于质量模式。
此外,同一家公司的员工对于开发速度与质量可能有不同甚至相反的看法。销售人员或产品经理通常被认为是速度的倡导者,因为他们认为公司的成功在于按时完成任务并创造收入的能力。他们通常不关心如何避免技术债务。对于开发人员、设计师和 QA 工程师来说,成功意味着构建完美的产品,因此他们宁愿花费数月时间进行开发,而不考虑速度。
但有没有办法在代码质量和开发速度之间取得平衡呢?
“优先顺序是关键。你不可能在所有地方都赢。首先,重要的是找到最关键的变量并专注于它。这取决于您是否打算在找到产品/市场契合点后扔掉您的产品并重新编写它,或者您的策略是逐渐发展它,” - Alex
Gostev,QArea 项目组合经理。
如果公司不想落后,那么从第一天起,代码质量就应该成为首要任务。“代码质量是多方面的,”Gostev 补充道,“它始于架构。通过正确的架构,您将来遇到的问题将会显着减少。“
创建技术债务项目路线图并评估风险也很重要,以便公司可以做出相应的计划。QArea 首席技术官 Dmitriy Barbashov 表示,服务级别协议也可能有所帮助。“我想说,与开发人员建立并达成一致的透明 SLA 对他们来说将是一个很好的参考点,”他指出。
不言而喻,在发展中追求完美并不总是正确的选择。例如,如果一家初创公司正在构建其第一个原型,那么快速创建 MVP 可以最大限度地降低为行不通的想法投入大量精力的风险。开发人员在尝试快速交付功能或进行一些快速修复时应该非常小心。一方面,投入时间打下坚实的基础可能有助于在未来构建新功能。另一方面,一些黑客修复或一些最便宜和最快的解决方案可能会累积并变成太多的技术债务。
与许多方面一样,顺畅的通信对于寻找和证明代码质量和速度之间的平衡起着重要作用。高管和开发人员之间的公开对话至关重要。如果公司找到了正确的平衡点,那么每位员工都必须理解这一点,这一点很重要。每当情况发生变化或组织在速度或质量方面采取任何行动时,每个人都应该保持一致。