重写代码会失败的几个征兆

凡事预则立不预则废。在公司里呆久了,总会遇到一些软件项目需要重写代码(或换个全新语言、或进行重大版本升级等)。重写整个系统的风险极大,资源投入到了几个月的重写过程,就没法投资在开发新功能上了。让我们来看看重写代码会失败的五个征兆吧。

1. 重写的价值不够明确

重写代码必须要产生新的价值。 因为重写代码和主要的重构工作会耗费大量资源,如果不能在半年内看到有价值的产出,那问题就大了。如果你是这个项目的高管而且你自己不确定重写代码增加的价值是什么,那么可能终止更好;如果你确定你想要重写,那就需要做用户调研或者设计构思,然后重新评估重写这个项目到底是否符合用户的需求。

2. 你正在进行大切换式的重写

切换更容易,大切换重写是所有代码重写的警报,它只适用于非常简单的系统。 已经有过大量的论述,关于为什么采用更为渐进的重写方法更好。如果你是一名高管,你需要打电话给你的开发人员,因为他们会努力进行大规模的转换。 当然,他们从不使用这些词,而是说在“重新设计”之类的,但这是一回事。 问他们 - 什么时候能在生产中看到这些代码? 如果答案超过3个月......他们可能正在进行转换。

3. 重写的特征速度比遗留系统慢

这很简单:如果您在进行重写时,同时改进现有的旧产品以保持竞争优势(一个好主意),但重写系统无法以更快的速度添加与旧系统相同的功能 ,重写代码大概永远不会完成。重写研发团队需要由你的超级巨星开发人员组成,他们了解最新的技术,并且了解如何掌握遗留系统的复杂性。此外,确保重写团队能够持续快速地进展! 不要在重写的前2-3个月根据重写速度做出判断,项目开始时总是挺快的,因为还不复杂,但随着时间的推移,它会变慢……

4. 您不与那些曾经是旧系统专家的人合作

旧系统的前开发人员甚至是高级用户,这些人对于重写项目是至关重要的,因为他们了解关于应用程序的所有问题。 如果没有这些人,您将成为Tesler定律的受害者,最终重写的版本可能价值还低于旧版本,不如原来的好用。请他们帮助做测试,他们能帮助发现重写中的很多细微实现错误,您可能永远无法发现。让这些人参与进来。 让他们觉得他们有助于重写(确实是),尽早并经常获得他们的反馈。

5. 你打算删除一些很难的功能

让我们假设您正在重写一个取得了一定成功并积极为用户提供价值的系统。 很容易陷入使用“简化”构建名称中的较少功能进行重建的陷阱。 但这有意义吗? 是的,旧的应用程序可能很慢而且很难看。 但想一想 - 你的用户愿意忍受缓慢而丑陋的系统! 如果您删除他们正在使用的功能,您的用户将讨厌您。这是否意味着您应该盲目复制旧有系统的功能? 当然不是! 传统技术所需的一些功能已经变得僵化。 现在有类似OCR的东西,可以代替表单字段的页面。 这意味着您可以自由地重新构想这些功能或创建一个允许您删除操作的新流程,但无论多么诱人,您都无法删除要完成的工作/整个故事。

回顾一遍以上要点

我希望你注意到重写意味着要聚焦真正的,立足现在的价值交付。这就是为什么每次重写都必须从彻底的设计阶段开始,以发掘所有增值功能。该sprint的核心方法是通过访谈从最终用户和利益相关者那里获取反馈,并通过原型确认您的想法。这确保了产品以您期望的方式满足市场需求,并在重写期间留出创新空间,这是基于真人的真实反馈。

如果你觉得你不得不选择通过重写代码复制一个特别繁重的旧功能和添加新功能,你有一些选择。一种选择是使用Martin Fowler的扼杀者模式,您可以在重写时创建新功能,同时相对无缝地与旧功能集成,从而保留这些功能而无需重新创建它们。

本文由网易云社区简译。更多详情请参见原文

相关文章:
【推荐】 追踪掠食者:地下灰产如何撸死创业公司?
【推荐】 说说你最欣赏的数据可视化的案例

原文地址:https://www.cnblogs.com/163yun/p/10221240.html

时间: 2024-10-22 12:15:58

重写代码会失败的几个征兆的相关文章

商务通默认弹窗重写代码

商务通默认弹窗重写代码,重写商务通默认的弹窗.实现原理:通过设置定时器,判断是否存在默认的商务通弹窗标签,如果存在则用自定义的代码将其覆盖. 以下为详细代码,其中o.innerHTML为自定义的弹窗代码,可自行修改为自己的代码: 代码如下 <script> function update_swt_wee() { var o = document.getElementById("LRfloater1"); if (o) { if (o.innerHTML.indexOf(&q

程序员,千万不要重写代码

如果你跳槽.或刚接手一个新项目,面对看上去异常混乱的旧代码,请冷静下来,忍住推倒重写的冲动. 程序员都有一颗工程师的心,所以当他们到一片新的场地想做的第一件事就是,将旧的一切推倒重来.是的,他们决不会满足于简单的增量劳动. 或许这种微妙的心理定位可以解释:为什么程序员进入新项目组后宁愿丢掉旧代码重新写,也不愿意修修补补,他们认为旧代码简直一团糟. 但是,事实上真是这样吗?你之所以认为旧代码一团糟,其实是由编程的一个基本定律决定的,那就是:写代码容易,读代码难. 为什么你觉得旧代码异常混乱?因为读

重写代码,是否还要继续?

程序员都有一颗工程师的心,所以当他们到一片新的场地想做的第一件事就是,将旧的一切推倒重来.是的,他们决不会满足于简单的增量劳动. 原文地址: http://www.hpboys.com/684.html 或许这种微妙的心理定位可以解释:为什么程序员进入新项目组后宁愿丢掉旧代码重新写,也不愿意修修补补.他们认为旧代码简直一团糟. 但是,事实上真是这样吗?你之所以认为旧代码一团糟,其实是由编程的一个基本定律决定的,那就是:写代码容易,读代码难. 为什么你觉得旧代码异常混乱?因为读代码更难. 这大概就

equals方法的重写代码实例

这篇文章主要是要记录一下equals的重写,下面上代码,代码里有足够的注释 /**  *   */ /**  * @author laishengfeng  * @2014-8-20  * @TODO equals方法的重写  */ public class Citizen { String id; // 身份证号 String name; // 名字 int age; // 年龄 String sex; // 性别 // 用构造方法对成员变量进行初始化 public Citizen(Strin

程序员 为什么千万不要重写代码

? 程序员都有一颗工程师的心,所以当他们到一片新的场地想做的第一件事就是,将旧的一切推倒重来.是的,他们决不会满足于简单的增量劳动. 或许这种微妙的心理定位可以解释:为什么程序员进入新项目组后宁愿丢掉旧代码重新写,也不愿意修修补补,他们认为旧代码简直一团糟. 但是,事实上真是这样吗?你之所以认为旧代码一团糟,其实是由编程的一个基本定律决定的,那就是:写代码容易,读代码难. 为什么你觉得旧代码异常混乱?因为读代码更难 这大概就是代码Reuse难以实现的原因,也可以解释为什么你组里的每个人都喜欢用不

程序员,为什么千万不要重写代码?

作为 100offer 程序员拍卖的运营,我们常常和用户交流讨论,有一个话题经久不衰:程序员入职新公司后接手已有的代码,怎么处理? 程序员都有一颗工程师的心,所以当他们到一片新的场地想做的第一件事就是,将旧的一切推倒重来.是的,他们决不会满足于简单的增量劳动. 或许这种微妙的心理定位可以解释:为什么程序员进入新项目组后宁愿丢掉旧代码重新写,也不愿意修修补补,他们认为旧代码简直一团糟. 但是,事实上真是这样吗?你之所以认为旧代码一团糟,其实是由编程的一个基本定律决定的,那就是:写代码容易,读代码难

为什么都在说:程序员千万不要重写代码?

你所做的事情,也许暂时看不到成果,但不要灰心或焦虑,你不是没有成长,而是在扎根. 前言 程序员都有一颗工程师的心,所以当他们到一片新的场地想做的第一件事就是,将旧的一切推倒重来.是的,他们决不会满足于简单的增量劳动. 或许这种微妙的心理定位可以解释:为什么程序员进入新项目组后宁愿丢掉旧代码重新写,也不愿意修修补补,他们认为旧代码简直一团糟. 但是,事实上真是这样吗?你之所以认为旧代码一团糟,其实是由编程的一个基本定律决定的,那就是:写代码容易,读代码难. 一 为什么你觉得旧代码异常混乱?因为读代

vagrant rsync-auto 代码同步失败报错:UndefinedConversionError

今天使用vagrant ,代码同步:vagrant rsync-auto 发现代码同步失效了,几次重启之后发现启动报错: 有点疑惑,因为1h之前还同步过修改的代码,现在突然报错,目前仍然不明原因(这1h之内没有做过任何编码设置/修改的操作,仍然诡异,留待大神研究吧~)以下直接说重点 报错的原因: vagrant的源码使用Ruby实现的,Ruby 转码的方法:encode 有转码兼容,GBK转码为UTF-8不兼容,所以报错,报错行的源代码: data << io.readpartial(READ

代码提交失败

产生原因: 有四个文件需要放到新的文件夹,在原来的svn上删除后,本地重新上传 解决方法:更新本地update ,然后发现其实已经上传成功了 上传代码:add(target跟output的不要)>commit>填写注释>ok