0

我在一个由 2 名前端开发人员组成的团队中开展基于 Web 的后期启动项目。

该网站运行良好,但在代码方面还有很大的改进空间,因为代码非常混乱和杂乱无章。

我想通过编写测试和仔细重构来逐步清理东西以避免破坏任何东西。(使用《有效使用遗留代码》一书中的原则)

但是,与我一起工作的开发人员被赋予了许多高优先级的功能工作,我不想让他承担维护任务的负担。很多时候,由于时间限制,他不得不编写杂乱无章的代码。

随着团队的成长,我关心如何管理不同的问题。

我正在考虑将团队分为两组:

  1. 对新功能进行快速开发,对代码质量的关注较少。
  2. 编写单元测试,重构代码,通常优化事物。

我的目标是尽可能多地测试代码,同时保持新功能开发的步伐。

这个以前试过吗?有什么想法吗?

4

3 回答 3

8

分队有问题。

快速开发新功能的团队将非常受销售人员和管理层的欢迎。他们将被视为更有成效、更以解决方案为导向,并将被纳入更多重要的讨论中。

担心质量的群体将被视为代价高昂、消极、低效、以问题为导向的抱怨者。

与豆类相反的现实是,快速集团的“易赢”积累了劣质的隐性成本。如果这种情况持续太久,随着新的快速代码构建在旧的快速代码上,代码将变得越来越混乱,并且添加更多功能将变得越来越耗时和冒险。当没有人可以再添加任何新功能时,这些隐藏成本就会变得显而易见。

想想两年后的路。您的快速编码员可能会继续前进,兑现他们的许多“成功”。销售人员将谈论他们,以及他们经营商店时的轻松程度。

就像花园里的杂草。尽早解决问题很容易,但当一切都是杂草时,就更难了。

它的工程现实是快速编码不应该是混乱的。把事情弄得乱七八糟并不能节省时间。如果看起来那样,要么是技能问题,要么是框架问题。

因此,如果您划分组,则在每次迭代后轮换!

我怎么知道这个,场景这么好?我是在“成功”的编码员离开后进来的……

于 2009-11-24T07:33:37.107 回答
1

嗨,我认为您不能将团队分成两组。

@Guge 涵盖了对这些团体成员的财务和政治影响。

还有更多:

1)速度组不会关心代码的质量。(他们不会为此付费!!)所以他们会产生丑陋的代码。

2)质量组将重写一些代码以更好。速度组将向此代码添加一些新功能,并且代码将再次变得丑陋。

3)速度组即将添加新功能。到未重构的代码。他们不进行重构(他们没有为此付费,因此如果他们这样做,或者他们的工作速度变慢,管理层可能会感到愤怒),因此他们会以低于他们首先重构的速度创建丑陋的^2代码。

4) 没有新功能。意味着没有 $$$ 意味着更低的工资意味着更差的开发人员分配意味着更低的速度和质量。

5) 更好的开发人员会找到一种方法来改变 goup 以提高速度或改变工作:)

5)如果质量组将提高任何子系统速度组可能会拒绝对现有代码实施任何补丁以不减慢速度。

好的 那么如何防止这种情况发生呢?

与您的管理人员交谈,您需要在新功能之间保持平衡。和代码质量。只有好的代码才能引入快速更改或实现新功能。高速。

好的论据是,糟糕的代码或架构演变成丑陋的东西是一种债务。当您不支付时,每月利息会迅速增长。你可以负担得起一个月不付钱,但不能再久了。

您可以随身携带信用卡以进行强调。

也许如果您的团队在截止日期前做太多工作,那么大声说出来总是值得的。但要小心;)

所有程序员都应该重构和编写测试(如果相关)。没有例外。今天稍微重构一下,明天再重构等等。

Fowler “重构” <- 好书借用了信用卡技巧。

PS有像“死亡行军”这样的项目,只推动开发。具有经济意义(因为项目只有在最后期限内以有限的费用取得成功;症状是持续工作数小时而开发量少于所需的时间),我的建议不适用于它

于 2009-11-30T10:45:08.167 回答
0

我认为在短期内让一些人投入新开发,一些人清理新代码对你来说不是问题。然而,将其作为一个持续的模式是有缺陷的。您的目标应该是按时并以高标准交付代码,并且您的整个团队都应该朝着这个目标努力,如果您拆分团队,那么您将有一半的团队编写令人兴奋的新功能,而不关心代码质量,另一半在他们身后清理。随着时间的推移,您可能会发现清理团队需要比新功能团队大得多。

您的第一步(您似乎已经取得了一些进展)是决定您的代码的质量以及如何衡量它(测试覆盖率、圈复杂度等)。然后,您可以将这些指标应用于您当前的代码,并了解其中有多少不符合标准。此代码是已累积需要偿还的“技术债务”的代码。

接下来要做的就是偿还这笔技术债务。这涉及使此代码符合您制定的标准。如果必须经常完成,这是一项乏味的任务,但是它需要完成,并且由任何有自由的人来完成。

Finally make it your main goal to produce code that is in line with your quality measures. If a deadline shows up then you may have to ignore them for a while but once the deadline is met your priority is to get your code back up to the quality you need.

于 2009-11-30T11:24:06.770 回答