敏捷
我建议以下内容:
编辑相同的文件
首先,使用Git(或类似的并发版本控制系统)。只要您编辑同一文件的不同部分,就不会产生冲突。如果您确实有冲突,则会将它们明确标记为冲突。
在没有Git的情况下尝试管理多开发人员项目就像在没有布丁碗的情况下制作布丁。有可能,但是很快就会变得很混乱。
正如评论中指出的那样,Git不是灵丹妙药,但与自动测试结合使用肯定会带来很大帮助。
列出所有功能
其次,将项目分解为用户可见的功能。例如,“当用户注册时,他们应该收到电子邮件”或“用户可以添加项目”。让所有利益相关者参与其中。让每个人都在一个房间里,让每个人大声喊叫。
这些应该是用户可见的功能,以后可以讨论实现策略。
将所有建议写在索引卡上,甚至是笨拙的。快速合理化列表以删除重复项,然后将所有卡布置在一张大桌子上,甚至放在地板上。
添加所需的任何其他卡。假设您的应用程序将发送短信提醒。您可能不知道该怎么做,所以您有一个问题。在卡上写“调查SMS门户”。同样,对于其他任何大未知数也是如此。您稍后必须打开包装。这些功能可能不会使您第一次冲刺。
现在,你的卡整理成组,洗牌他们一下,得到一个感觉他们。这是您的项目范围。
规划扑克
去计划扑克吧。仍然与所有人在一起,给所有开发人员卡片说“ 1分”,“ 2分”等,最高为“ 4分”。也是“更多”卡。一个点大约等于一个小时。
逐一浏览功能列表。读出功能时,每个人都必须打牌。如果一个人玩1,而另一个人玩4,则那里存在通信问题。一个人理解此功能意味着不同于另一个人。进行讨论并弄清楚实际含义,并在卡片上注明。
如果您同意某个功能是“更多”功能,则该功能太大。您必须分解该功能。以与以前相同的方式执行此操作。
达成协议后,用不同颜色的笔在卡上写下数字。
点胜于小时
使用点数而不是小时数,消除了开发人员经常参与的“看我能编码多快”的大男子主义。这是一个细微的差异,但是我发现它工作得很好。
现在组成一个冲刺
冲刺是朝目标快速发展的冲刺。确定冲刺时间,可能是5天或10天。将天数乘以开发人员数乘以每天的积分数。
最初假设每个开发人员每天6点。这是可以实现的数字。如果您有5个人,那就是5 * 5 * 6 = 150点。与所有开发人员和管理人员一起,从列表中选择功能,最多150点。那是你的冲刺。
切勿试图挤入过多的压力。从长远来看,过度承诺会伤害所有人,包括您。
您需要在这里考虑依赖性。例如,环境设置显然必须包含在第一个Sprint中。当每个人都在场时,这实际上相对容易做到。您的房间里有6个脑袋,所有人都说“这取决于这个”,依此类推。然后,您可以随机播放卡片以演示依赖性。
进行冲刺后,便无法添加任何内容,并且已锁定5天。功能蠕变会给团队造成压力,损害士气并使所有人减速。最终,蠕变将使项目停滞。作为团队负责人,您必须保护您的团队免受功能蠕变的影响。如果有新功能请求,则必须将其添加到下一个冲刺中。如果下一个冲刺已满,则必须取出其他东西。
永远不要试图榨取多余的东西。过分有希望为您带来约1天的满意客户价值,随后有4天的团队压力,最终很可能会在团队无法按时交付几个不满意的客户。
现在去。
分发卡片,询问谁想做什么。您对完成的事情有完全的了解,并且可以将滴答作响的点计数为零。每天开始时都要站起来,这样每个人都知道谁在做什么,做什么。
5个或6个积极进取的开发人员在一个明确定义的可管理目标上作为一个单元一起工作,可以在5天的冲刺中实现大量的工作。
保持可见度
确保每个人都能看到项目的状态。将所有卡片装到墙上。左侧是尚未使用的卡。右边是完成的卡片。
当开发人员处理卡时,他们将其从墙上取下来放在桌子上。这样可以保持可见性,并防止人们彼此踩到太多脚趾。
索引卡有替代技术,但是在墙上大量显示项目状态的文档无所不能。
如果可能的话,在项目进行期间,让每个人都在同一房间。尽可能多地和利益相关者在一起,最好是每天都有。
烧掉
您可以在燃尽图上绘制逐渐逼近零的点。如果最适合的生产线在达到时间限制之前过零,那么您很可能会步入正轨。如果不是这样,您可能需要在太接近截止日期之前让您的客户知道。
如果您要失败,请尽早失败。
您可以使用软件进行精简,但是我更喜欢墙上的一大张纸。画并写在上面。
自动化测试
当您有多个开发人员同时处理同一个东西时,他们可能会不时破坏彼此的代码。交流和可见性可以帮助您解决问题,但是您可能希望引入一些技术来帮助发现问题。
单元测试是为代码库的各个部分(最好是每种方法)编写测试的过程。您的单元测试应经常运行,并尽可能进行保存。有很多工具可以帮助解决此问题,例如Karma或Rspec。
端到端测试涉及对您的项目进行整体测试,将内部视为黑盒子。这些测试基于您的高级业务需求,例如:“用户可以注册”或“用户可以看到项目列表”。量角器是端到端基于Web的测试框架的一个很好的例子。
有很多关于测试的书,但是至少进行一些验收测试可以帮助确保在进行项目时不会遇到任何问题。
避免技术债务并完成工作
技术债务是一个概念,它描述了以后必须清理的内容。债务的常见来源是标记为已完成但从未“完成”的功能。完成功能已签入Git,已由利益相关者批准并进行了测试。
在完成功能之前,请不要先对其进行检查。切勿按摩图表。从长远来看,这再次伤害了所有人,包括您。
这就是为什么我们最初每个开发人员每天只引用6点的原因之一。完成需要付出额外的工作,但感觉很棒,并为团队提供了动力。