成功管理旧版代码的5个关键

我觉得总是很着重于开发新的 功能,推出下一个产品或下一个大事,但是一旦这些 事情成功了,团队面临着巨大的挑战 管理他们的旧代码。甚至在某些时候最新最出色的软件 成为遗留物,并非总是可能仅放弃产品线并 继续前进(当然,除非您是Google)。一旦有一个 用户群可能需要将代码维护十年或更长时间。在我的 旅行和在线对话中,我遇到了很多努力奋斗的团队 维护他们的代码。我发现他们通常只专注于代码, 但事实证明,成功管理实际上有五个关键 及时且具有成本效益的方式使用旧版软件。在这篇文章中,我们将简要介绍 探索这五个关键。

关键#1 –人员管理

成功管理遗留代码的第一个关键是 管理团队中的人。现在,我不必每天谈论 开发人员的管理,但是我看到很多非常成功的开发人员 他们的技能已被冻结。他们从最新的 最好的技能和流程,但由于不断的工作,他们承受着传递 产品及其更新,它们与行业其他部分不同步 在任何人意识到之前,它们都是使用过时的工艺制成的冷冻文物, 工具和技术。这些开发人员可能仍然成功,但他们可能 效率不如预期,取决于流程和技能 这可能会导致很难在代码上进行协作或对其进行更改 在可预测的时间范围内。

现在,在让任何人感到尴尬之前,我可能会 描述它们,这是任何开发团队都可能发生的事情。 我已经从事嵌入式系统专业工作超过15年, 如果允许的话,我发现自己偶尔会成为冰冻的遗物 我自己对项目工作不屑一顾。我的几次 我已经安排了相当多的时间来学习,测试和实施新的 流程,技术,技术等。没有团队可以免疫, 因此应该制定一个计划,不仅要帮助他们的团队跟上发展 最新的行业趋势和技术,但也有时间进行测试 并实施这些技能并进行改进。新技能对 确保开发人员可以成功利用最新技能,并 管理和开发软件时的技术。

关键#2 –流程管理

到目前为止,我发现整个过程 可能产生一致,可预测结果的必要邪恶。行业 流程随时间而变化。一些吸引大量追随者的过程可能是 被发现无法产生预期的结果,可能会被放弃。其他人可能 事实证明,这是任何团队都不应该缺少的基础。的 我曾经合作过的最成功的团队是 认真管理开发和业务流程。

随着时间的流逝,过程往往会积累到一定程度, 会扼杀创新并引起更多的头痛。这就是为什么 团队必须保持灵活的流程管理,这很重要 对其工艺进行年度春季清洁。如果某些过程是 过度绑住开发人员的手,将其移开。如果开发人员太多 自由并绊倒自己,找到一个可以 产生可靠且可重复的结果。仔细平衡流程 团队使用并确保随时间推移进行更新可以帮助确保 旧版软件的更新和维护方式是 与时俱进,可以最大程度地减少大型现代化工作。

关键#3 –技术管理

管理产品所基于的技术可以拥有 极大地影响了管理遗留代码的难度。我发现 有时,一旦为产品设计了硬件,开发人员就会 习惯于使用单个微控制器或工具链,或者 该框架。技术飞速发展,只是因为我们使用了 五年前,当我们第一次开发 产品并不意味着我们成为最佳或最有效的环境 在工作中。这可能是目前最舒适的,但可能会有 其他使我们能够更快,更高效地工作。就在过去 三年来,我看到了编译器效率,代码跟踪方面的巨大飞跃 技术,内存管理甚至安全技术。

团队应仔细审查他们使用的技术 正在用来维护其软件并评估最新的 最伟大的技术。团队可以决定继续前进 继续,但是只是知道那里有什么,并计划实施 可以帮助开发人员为这些更改和技术进行规划。然后当 时间到了,这不是大修,只是无缝过渡 期望并为团队赢得新的价值。

关键#4 –工具管理

我们用于开发和管理软件的工具是 如此关键,以至于我常常很难想出正确的词来 形容它。假设有两个房屋建筑商 建造相同的房屋。每个人都需要构筑房屋,但他们决定使用 不同的工具。建造者一决定使用锤子和钉子,因为这就是 他最熟悉,这是他一直做到的方式,而他没有 有时间学习其他方法。建造者二,也熟悉 使用锤子和钉子,决定购买钉枪。如果他们都开始于 同时,您认为谁会最先使用本机?无疑 即使他需要花一点钱,也会是有钉枪的建设者 在开始时学习如何使用它。

旧版代码可以成功维护和更新 使用正确的工具。这些工具确实会随着时间的推移而变化, 提供解决方案的创新型公司和开源开发人员 各种各样的问题。这就是为什么还必须有一个流程来 了解新工具,它们如何工作以及如何使开发人员适应它们。正确 工具管理可以使事情变得如此简单。例如,我遇到过 遗留代码库中有成千上万行代码。没有 文档,单片,如果我想了解 架构和部分仅需进行代码审查即可。相反,我使用类似 理解或Lattix或其他一些工具可以帮助我快速可视化 代码,了解架构,然后我就可以开始提出正确的要求 问题(比我手动完成要快得多)。正确的工具 right job.  

关键5 –代码管理

最后,我们进入实际的代码管理。编码 本身,甚至软件体系结构也应该随着时间而发展。我们经常 将代码和软件体系结构视为固定的,但它们不固定 必然需要。例如,我经常碰到整体式的 耦合代码。应用程序代码直接调用硬件, 将使处理器或硬件的更换成为软件的主要改写。如 我遇到这样的代码,我会经常草拟当前的架构 外观,然后拟出我想要的外观。这通常涉及 确定架构边界,然后在代码内,每个 发布,进行较小的改进并使代码朝着首选的方向发展 建筑。我发现这种方法对于改进 架构上的旧代码库,它最大程度地减少了重大重写,并且 令人头疼的是,但仍然使代码达到了现代标准。 (显然是 还有很多其他事情,但希望您能明白。

结论

传统代码难以维护。诀窍 成功且有效地维护该代码是为了了解 除了简单地管理代码之外,还有更多其他功能!我们已经检查了五个键 成功管理遗留代码:

  • 工艺流程
  • 技术领域
  • 工具类

要成功管理所有五个领域,以便使 传统代码管理不仅成功,而且具有成本效益和效率。

4 thoughts 上 “成功管理旧版代码的5个关键”

  1. 我不能’我不太同意本文的大部分内容,但是却遗漏了我认为真正困难的一点,即如何将其出售给管理层。
    特别是在嵌入式软件中,我们经常坐在管理水平上受过管理某种硬件生产工厂教育的公司中。对于那些经理来说,SW仍然是某种程度的隐形魔术。
    我的意思是,作为一名软件开发人员,我可以轻松地看到问题,并将凌乱的代码与成千上万的快速修复程序进行比较,以凌乱的工厂车间将主要机械与胶带,条带和Chewinggum固定在一起,可以正常工作,但绝对没有效率。
    让’拿了钥匙5,也许我可以说服管理层留出时间“绘制当前架构的外观,然后绘制我想要的外观。”也许花一些时间修复一个小小的部分,我们都同意我们需要“在每个发行版中都做了一些小的改进”。但是由于管理层仍然看不到这种看不见的魔术(软件)内部的改进。他们以极快的速度失去了注意力,并继续提拔提供快速修复(磁带和Chewinggum解决方案)的开发人员,因为当仅查看输出时,看不到他们在代码中留下的混乱(它是不可见的),因此他们看起来更多富有成效的。

    我确信在这张照片中我并不孤单,这通常就是您在键#5中描述的代码的原因。因此,是的,我在本文的大部分内容中都同意,但是我很难将其出售给在商品工厂长大的管理层。

    1. 感谢您的评论!您说对了,因为向管理层出售可能是一个挑战。我可能稍后再写一篇单独的文章。我发现有效的方法是您必须提供业务所需的投资回报率和价值,以供管理层购买。例如,进行这些改进将使我们现在花费额外的三周时间,但是它将提高灵活性和可配置性,从而可以节省成本我们在接下来的三年中每年八周。这仍然很困难,但是他们只需要了解它将对业务产生的影响即可。

      希望对您有所帮助。

    1. 是的,这里没有提到,但是测试套件确实在其中占有一席之地。也许是另一个话题。

      感谢您的评论!

发表评论

您的电子邮件地址不会被公开。 必需的地方已做标记 *

该网站使用Akismet减少垃圾邮件。 了解如何处理您的评论数据.