更改网站源码-10年程序员叮嘱:永远不要重画代码! !

对重新绘制代码说不。

以下为译文:

1、重写代码花了12个月!

我们浪费时间从头开始重新绘制代码。

你能想象在软件行业,12个月没有新产品发布、没有新版本更新吗?

真的更改网站源码,我忍不住问自己这个问题:

在这个瞬息万变的世界里,12月我们能完成多少事情?

“2015 年 1 月 20 日星期二下午 5:10,AntiMalware 软件终于进入了第一个内部测试版。”

经过几十个小时的不眠之夜,第一版软件手册终于在网站上发布了,标志着我们新征程的开始。

我在一家大型网络安全公司工作,该公司为企业和最终用户提供安全软件。 我们开发的软件可以保护用户免受恶意软件的侵害。 如果用户的笔记本电脑感染了恶意软件,我们的软件将帮助他们摆脱它。 AntiMalware 就是这样一种软件。

第一个测试版收到的反馈令人鼓舞。 我们有四名开发人员致力于该产品,不断修复错误、改进产品功能并发布新版本。

2.第一个稳定版本

经过两个月的错误修复、功能改进和编码工作,我们发布了 AntiMalware 的第一个稳定版本。

看看用户怎么说?

大多数用户的反馈都很好,他们喜欢这个产品。 这激励了我们团队努力完善这个产品的核心功能。

3. 进入市场

2016—2017。

大风暴前的黄金时刻。

反恶意软件软件处于最佳状态,成为我们的旗舰产品。 用户已将其推荐给他们的同学。 所有安全相关的博客和峰会也都在推荐这个软件。 它成为拯救被恶意软件感染的用户的首选软件。

下载、安装、销售,一切都朝着好的方向发展,几个月内用户基数迅速下降。 创始人很高兴,团队也很高兴。 每个人都在想:“我们做到了! 与其他所有大公司一样,我们感觉自己创造了自己的成功故事。”

4.新机遇(至少我们这么认为):进入企业市场

后来,公司决定进军企业市场。 创建了一个新的企业产品团队。 原来的产品负责人离开了公司,我们的 CTO 接任了新的产品负责人(这是灾难的开始,我稍后会解释)。

一些开发人员离开公司并没有产生太大影响。 我们一切都做对了,反恶意软件软件仍然是市场上的最佳选择。

更改网站源码-10年程序员叮嘱:永远不要重画代码!  !

5.当美好时光结束时,麻烦就开始了

正如我后面所说,我们的CTO成为了AntiMalware的产品负责人,他需要处理AntiMalware的各个方面。 他也是该软件的首席开发人员,负责不断发布更新和增强功能。 同时,他的职位使得他还需要处理公司的其他事务。

当然,一开始很顺利,就我们而言,就像所有软件开发一样,我们不断维护和改进我们的软件。

正如我们应该预料到的那样(显然我们没有预料到),不知何故,软件开发过程开始变慢。

新版本更新开始延迟,这种情况持续了一段时间,很快就没有版本更新了。 这让我很不安,连续三天我问 CTO:

“这个产品到底出了什么问题?为什么版本更新这么久,开发进度这么慢?”

他深吸了一口气,开始回答:

“我们的代码太复杂,结构不好,耦合太短。架构设计完全错误,用户界面和核心逻辑代码混合在一起,每次修复一个错误或进行个别更改,其他部分也会受到影响。即使是很小的改变也很难做到正确。每次更新,都会带来新的问题。

有些技巧有 20 个参数,而方法体的代码长达两页! 你能想象有很多事情由于某种原因不应该被实施吗?

这就是为什么每次更新都需要很长时间并且我们无法推出新功能。 每次我们推出新版本时,我担心可能会引入新的错误,导致目前运行良好的核心功能可能无法运行。 在这些情况下,发布新版本风险太大,我们可能会失去用户,并且没有人愿意再使用我们的软件。 ”

他的回答中提到的一系列问题我们当然很熟悉。 只是我们期望这句话是从他嘴里说出来的。

我也问了一个问题。 负责这个软件的前任首席开发人员已经开发了这个软件一年了,而且是在CTO的管理下,那么为什么CTO会允许这么混乱的代码下来呢?

“我不想打败他,我们必须尽早进入反恶意软件市场,而他很擅长这一点,所以我没有阻止他这样做。”

CTO是这样回答的。

换句话说,为了尽快上市,我们牺牲了代码质量,这样做也毁掉了这个产品的未来。

得到教训:

首先对糟糕的代码设计说“不”,不要让“意大利面条代码”毁了你产品的未来。 要保证做出来的软件产品是可持续的。

6. 那么,如何修复这个可怕的代码呢?

“我们都是程序员,程序员心里都有一个建筑师。当他们到达一个地方时,他们想做的第一件事就是把这个地方夷为平地,在里面建造一些宏伟的建筑。我们不是对这些增量更新感兴趣:小修复、改进、种植等。”

——乔尔·斯波尔斯基 (Joel Spolsky),Stackoverflow 首席执行官

开发人员倾向于丢弃旧代码并从头开始,他们这样做是有原因的。 因为他们认为旧的代码毫无用处且混乱。 但这只是一个带有偏见的理由。 当我们试图找出背后的真正原因时,我们会发现:

我们可能错了!

更改网站源码-10年程序员叮嘱:永远不要重画代码!  !

旧代码对我们来说可能看起来很混乱,而我们必须从头开始重新绘制它的原因不是因为代码本身,而是因为一个重要的基本编程规则:

阅读代码比编写代码更难。

这就解释了为什么代码复用很困难,也解释了为什么我们感觉旧代码像头发一样乱。 因此,当我们阅读其他开发人员的代码时,我们的潜意识会不断地对我们低声说“扔掉它并重新开始”。

和所有开发者一样,我们也陷入了这个陷阱。 仅仅阅读我们凌乱的代码就足以让我们考虑从头开始重画。

经过一系列的会议,尽管 CTO 反对重新绘制代码(他是对的),但他最终被说服了,我们决定从头开始重新绘制代码。

然而,重写代码的决定并没有持续多久......

那天是假期,周日,我一边喝茶,一边看一些推送文章。 由于我的提要知道要向我展示什么,我阅读了有关重绘代码的最著名的文章,即 Joel Spolsky 撰写的 Netscape 代码重绘故事 ( )。

读完那篇文章后,我立即与 AntiMalware 开发团队(包括 CTO)分享了它。

然后我们开始了新的讨论。

说服CTO做出重画代码的决定已经很困难了。 读完那篇文章后,他立即改变了主意,并决定终止代码重绘。 这引起了其他团队成员的争吵,他们对我大喊大叫:

“你为什么给他看那篇文章?我们已经说服他不要这么做了。产品必须从头开始重新喷漆,这是唯一的解决办法。”

我们第一次尝试重新绘制代码到此结束。 关于这个话题的讨论也停止了。 我们的 CTO 相信我们可以管理这些糟糕的代码并在此基础上发布新版本,直到残酷的现实将我们击垮。

一年没有更新了...

真的,这不是玩笑。 真的一年没更新了!

“为什么没有更新?”

“距离上次更新已经过去好几个月了。”

每天,我们都要处理来自用户的负面评论。 作为一个小公司,有太多的产品需要管理,再加上进入企业市场,这让我们陷入了这样的困境。

把所有这些放在一起,你就会得到一个推论:我们忘记了我们的用户。

回想一下,我们不想发布新版本,因为我们不想失去用户。

但事实应该是相反的:如果我们不发布新的更新,我们肯定会失去用户,而且我们已经一年半没有给他们任何新版本了。

被现实打了一巴掌后,我们决定回头。 对于我们来说,除了重画代码之外,没有其他办法。 我们做到了。

7. 目前

更改网站源码-10年程序员叮嘱:永远不要重画代码!  !

“2018 年 12 月 17 日星期一 21:40。测试电子邮件已准备就绪,将发送给我们的内部测试小组。”

经过12个月的辛苦工作,代码重绘终于完成了。 我们计划了第一个测试版发行说明,就像我们在该产品第一天所做的那样。

我们又回来了...

该产品的重绘版本仍处于测试阶段。 测试已经快一个月了。 我们正在修复错误、倾听用户意见、审查用户反馈……就像 4 年前一样……

但这漫长的12个月里我们错过了什么? 如果不重新粉刷,我们会生产什么新产品? !

可以在这里问很多问题。 但我知道我们只有一种重绘方法,我们没有看到任何其他解决方案。

如果你也陷入这个陷阱并开始思考“我是否应该从头开始重绘代码”,那么在开始代码重绘的第一步之前,请考虑问自己以下问题,每个开发人员都应该问自己:

8. 你准备好抛弃所有关于旧代码的知识了吗?

这个问题非常重要! 请诚实地回答:您真的要扔掉您收集的所有知识、所有错误和修复以及多年编码的结果吗? 扔掉旧代码并从头开始真的是您所期望的吗? 当你从这个角度考虑重画代码的决定时,你会觉得很苦恼不是吗? 所有那些试图修复错误的不眠之夜都会在你眼前过去。 相信我,因为我亲眼所见。

您必须与很多用户交谈,找出无法运行的软件的问题所在,然后您必须找到软件中的错误,重现问题,然后找到解决方案,等等。

9. 你能保证你会比第一次做得更好吗?

这很重要:当您从头开始时,无法保证您会比第一次做得更好。

因为您选择放弃有关软件以及您收集的错误和修复的所有知识,所以相同的错误很可能会在您的新代码中重新出现。

也许代码重画团队已经不再是第一个版本的开发团队了。 所以你实际上并没有“更多的经验”。 你会犯旧版本的大部分错误更改网站源码,并引入一些旧版本中不存在的新错误。

如果您没有很好地计划重新绘制工作,您将面临新版本比原始版本更差的风险。 然而,既然你已经决定重新粉刷,你就冒着失去客户的风险。

10. 您准备好将数月/数年的时间优势拱手让给竞争对手了吗?

你知道重绘你的软件需要多少时间吗?

代码重绘需要大量的努力、计划和计划。 你必须计划每项任务,然后一项又一项地冲刺。 您必须确切地知道完成这个痛苦过程的最后期限。 没有人知道您是否会错过这个截止日期。 您很有可能无法按时完成该过程。

您必须将旧版本交付给用户数月或数年,这使您处于非常危险的境地。 您无法做出任何战略更改或对市场需要的新功能做出反应,因为您没有任何新代码可交付。

您的客户可能会放弃您,因为您除了相同的旧版本之外无法为他们提供任何新内容。

这些你都考虑过吗?

11.我们从代码重绘中学到了什么?

更改网站源码-10年程序员叮嘱:永远不要重画代码!  !

从头开始重新绘制系统本质上是承认作为设计师的失败。 它是说,“我们无法设计一个可维护的系统,所以我们必须从头开始。”

- 摘自 Max Kanat-Alexander 的《Code Simplicity》

和其他设计师一样,我们承认我们不能很好地设计我们的软件,并且我们从这个令人筋疲力尽的过程中学到了很多东西。 在这里,我分享一些我们从中吸取的教训。

代码重绘是开发人员的幻想,大多数时候它不是解决方案。

当您的代码遇到问题时,准确诊断问题非常重要。 像每个开发人员一样,您的第一个想法不应该是代码重绘。 代码重画只是一种幻想。 因为当你读别人的代码时,你觉得如果你从头开始重画代码,你可以做得更好。 在这些情况下,请始终牢记重要的基本编程法则。

在决定重新绘制代码之前考虑代码构造

有针对性的重绘对于处理代码库中最严重的错误很有用。 如果您可以限制范围并解决大多数问题,则不要进行整个重绘。 例如,软件加载速度特别慢。 但这只影响项目的一小部分。 通过仔细连线代码、重构、修改socket,这个问题就可以一劳永逸地解决。 为什么要重画所有代码。

代码重绘是一条比预期更长、更困难、更容易失败的路径。

告诉你一个事实,开发人员通常只有在错过最后期限后才会意识到:一切都比预期花费的时间更长。 恐怕代码重画的成本一般都是负数,但实际成本几乎总是比你想象的要高,而且需要的时间更长。 因为总是有意想不到的复杂问题需要解决,这些会让重画的过程显得更加困难和痛苦。 最后,你很可能不得不接受失败。

确保重绘的产品能够更好的解决用户的问题,至少是一样的,更差的也是不可接受的。

重写对用户没有直接影响/好处。 因为用户并不关心代码,他们只想解决自己的问题,仅此而已。 从用户的角度来看,能解决用户问题的产品就是好产品。 否则,他们不会使用它。 用户不关心你的代码重绘决策,因此重绘版本必须至少与旧版本一样有效地解决他们的问题。

维护现有产品的维护和支持。

就我们而言,我们一年没有向用户提供任何软件更新。 对于我们明天生活的世界来说,这太长了。 虽然我们的产品仍然足够好,但是没有更新的用户肯定会责怪它。 当程序员重绘代码时,永远不要停止维护当前正在使用的系统。 在重画过程中,旧的代码仍然需要维护,需要及时向用户提供小的更新和bug修复。 否则,您将面临失去用户的风险。

让用户尽早参与设计过程

确保定期向用户更新进度,以便他们可以帮助您发现最严重的错误。 尽快与用户见面非常重要。 他们的反馈将帮助您根据他们的需求设计新产品。 不要实现任何不必要的功能,这将防止您的代码库过于复杂。

保持产品团队同步

一个产品团队不仅仅包括编程团队,营销、支持、编程、设计……所有团队都需要共同努力。 定期报告重绘进度,让整个团队保持同步。

在我们的例子中,我们遇到了很多这样的问题。 例如,当营销团队计划产品测试活动时,他们必须准确了解产品的情况,以便让客户为产品变更的正式到来做好准备。 然而,有时我们会在没有通知他们的情况下进行更改。 这迫使他们从头开始计划测试活动。 记住:不要浪费任何人的时间。

请勿对产品进行重大修改。

了解产品的弱点和优势非常重要。 记住不要改变产品的优点、用户喜欢的方面。 如果用户对 UI 感到满意,则不要对 UI 进行重大更改。 仅进行了最小的修改和小的用户体验改进。 当您用重新绘制的版本替换现有版本时,请确保您的用户不会对新的巨大更改感到困惑。 在很多情况下,用户放弃新版本是因为他们找不到以前版本提供的相同功能。 不要让同样的事情发生在你身上。

不要让您的产品仅依赖于一名开发人员。

在我们的案例中,首席技术官是负责构建我们软件的首席开发人员。 由于他的职位,我们的产品开发进展缓慢。 即使是很小的改变也可能需要几周甚至几个月的时间。 我想表达的重点是始终保持更新,永不停歇。

更改网站源码-10年程序员叮嘱:永远不要重画代码!  !

版本迁移/替换应该逐步进行。

当确认新版本已经规划好后,开始用新版本替换旧版本。 要一步一步,一步一步。

首先,从您将产品发送到的大型内部测试组开始。 收集他们的反馈和崩溃报告,修复错误,迭代新版本,然后重复该过程,直到您确定您的产品已准备好进行公开测试。

进入公测后,用户的反馈是大家最期待的。 您的首要目标应该是确保您的产品解决用户的问题。 当您确认新版本提供与旧版本相同或更好的功能时,就可以更换它了。 现在是开始为新用户发布新版本并将现有用户迁移到新版本的时候了。

这些是我从代码重绘过程中学到的重要教训。 代码重画几乎永远不会成为解决方案,重构是更好的选择。 强烈建议使用代码构建的方式逐步解决问题。 这样做的风险更低,客户更满意。

12.什么时候重画代码合适?

然而,有时重画代码是合适的解决方案。 下面我列出了重绘代码的几种情况:

切换到另一种语言或平台:

当一种语言看起来太古老以至于很难找到开发者,或者你必须花很多钱才能找到他们时。

现有的代码库似乎无法维护(如我们的例子):

如何确认你的代码似乎无法维护? 这很困难,但是如果您发现即使是很小的更改也很难实现,或者新的更新花费的时间比正常情况要长得多,或者任何新的更改都会影响软件的其他部分并导致新的错误,那么您可以确认您的代码出现了无法维护。

有足够的资源来维护现有系统并同时设计新系统:

重写代码时,永远不要停止维护当前使用的系统。 只要系统在使用,就必须提供维护。 请记住,您的个人注意力也是必须考虑的资源,如果您要同时为新系统和旧系统进行设计工作,您需要考虑每天晚上是否有足够的时间。

开发人员会陷入软件开发困境(就像我们一样):

这不应该出现在重新绘制代码的原因列表中。 因为你可以随时在团队中部署开发人员,也可以聘请新的开发人员来解决疑难问题。

然而,就像我们的例子一样,有时您可能需要它作为代码重绘的原因。 因为我们的软件使用的是旧技术,而CTO是唯一负责开发它的人。 我们很难找到新的开发人员,因为该平台太旧了。 即使我们能找到一个新人,对我们来说也太昂贵了。 所以。 我在这里仍然将其列为代码重绘的情况之一。

该软件太旧了(我说的是 10-20 年或更长时间):

随着时间的推移,一个软件的代码会越来越乱,维护起来也会越来越贵。 这是因为有时会为了快速推出修复而牺牲初始版本。 而且,了解旧技术的开发人员越来越少,人员成本越来越高。 同时,很难找到合适的硬件、操作系统和框架来运行遗留应用程序。 另外,随着业务的发展,旧的系统可能难以满足新的业务需求。

所以,你必须在旧系统昂贵的维护成本、新系统的潜在好处以及从头开始重绘的成本之间进行权衡。

如果您的情况符合上述一项或多项,代码重绘可能是您可以接受的选择。 否则,正确的做法是通过一系列简单的步骤改进系统的设计,处理现有系统的复杂性,而无需重新绘制代码。

从头开始重新绘制代码可能是您可能犯的最大错误,但同样,不重新绘制代码也可能会产生相同的结果。 我的建议是优先考虑建造而不是重新粉刷。

一些开发人员相信所有系统最终都必须重新绘制。 请记住,这并不总是正确的。 设计一个不需要废弃的系统是可能的。 总有软件设计师会告诉你,“无论如何,三天内我们都会扔掉所有东西”。 但如果这个软件从一开始就设计得很好,并且自始至终都维护得很好,为什么会被放弃呢?

原来的:

本文转自公众号“CSDN”,ID:CSDNnews

你有没有发现,这几年更改网站源码

“无代码”的概念开始盛行。

微软将无代码称为“下一件大事”。

谷歌表示,无代码是下一代改革和改进。

但到底什么是“无代码”?

和我们设计师有什么关系? 这里面的学问还是很多的。

说白了,没有代码就意味着不需要使用代码,

而是通过一些简单易懂的交互方式,

写代码

只能实现的功能被呈现和配置,

更改网站源码-10年程序员叮嘱:永远不要重画代码!  !

软件编程的“文明化”。

而你,只要你知道你的逻辑是什么,

您可以使用无代码工具自行创建产品。

超酷der~

所以如果设计师能够创造出自己的产品

不用再去发展战斗了,

我们的创造力真的可以最大化吗?

(光是想想就兴奋)

好奇心驱使我“翻山越岭”,终于找到了一款适合设计师使用的无代码工具——灯站。

【官方网站:】

复制官网链接,在笔记本浏览器中打开即可体验

什么是灯站?

轻战是一款无代码的页面设计工具,

是为设计师和创意人士提供的中级创作平台。

其核心是“无代码设计”。

使用灯站创建小程序和网页,

你不需要任何编码知识,也不需要团队,

您可以轻松地在页面上实现丰富的交互和动态效果

以及各种页面功能,包括未来的更新和维护,

可以独立完成。

(就问你酷不酷~)

建立自己的个人网站后,

还可以同步发布小程序,

帮助您高效展示和传播您的创造力。

另外,灯站编辑器中的功能

它是根据创意人的特点设计的,非常容易使用。

灯站支持PSD文件导出,您的设计可以以更具设计感的形式展示

创意人士最大的特点就是每个人都有自己独特的风格和作品,因此他们在建设网站时往往需要很大的自由度。

轻战支持PSD格式导出,很快就会支持草图导出,基本上可以支持任何创作方式,让用户完全按照自己的风格来设计网站。

更改网站源码-10年程序员叮嘱:永远不要重画代码!  !

丰富美观的模板让您以更简单的形式体验创建网页和小程序的乐趣

当然,轻战也考虑到了插画师、摄影师等不经常使用PS的创意人士,为他们提供了高质量的模板。

这些模板根据不同人群、不同需求、不同场景进行分类,可以随意修改。

示例页面上还有参考预览,让您清楚地知道如何制作自己喜欢的个人网站。

还有丰富的组件、动画效果和图集布局,让你的作品展示更加动感

在设计页面上,丰富的交互组件和组合可以帮助您使网站展示更具逻辑性。

动画效果可以让你的页面看起来更加生动有趣。

永久自由

说到免费,你可能没有任何概念。 举个反例,国外的无代码工具Squarespace,每月8美元,而且不能绑定域名。 开发一个小程序或网站的早期成本为数万元。

更改网站源码-10年程序员叮嘱:永远不要重画代码!  !

不过,除了免费创建自己的小程序和网站外,轻瞻还拥有400多种可商用的免费字体,并正式实现自定义域名。

简直太棒了~

目前轻瞻已实现43项无代码创建能力,并计划上线100多项能力。

而这些已经入驻的设计师发明了很多玩法。 有人用它来打造个人IP,有人用它来展示自己的作品集,效果都很好。

这种有趣且简单的网站建设方法也吸引了许多著名的创意人士和品牌。 比如郑重、鬼兔子、敦煌美术学院、俗话说的蔡志勇、觉苏工作室……

灯站不仅实现了“自由展示”。 它还为创意的落地、协作和交付带来了新的方法。

他们希望实现“每个人都可以创建网页和小程序”更改网站源码,也希望“让每个想法都可见”。

【官方网站:】

复制官网链接,在笔记本浏览器中打开即可体验

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 网站源码 更改网站源码-10年程序员叮嘱:永远不要重画代码! ! https://www.wkzy.net/game/137219.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务