我更希望那些回答这个问题的人说明他们是否有在敏捷环境中发展的经验,或者他们是否从理论的角度发言。
假设有一家机会主义公司开发技术创新产品(多点触控界面,语音识别设备等),所有这些产品都是根本不相关的。然而,正如人们所看到的,处理这类产品的关键优势是可以从产品中创建/提取库并将其出售给其他公司,开发商等。因此,以增量方式工作是有利的,因为它允许与最终产品分离的里程碑。
问题1:从商业角度来看,这是否有利?您是否有人在公司内部将图书馆分成单独的产品?
问题2:如果产品确实是以这种增量方式创建的,那么Scrum似乎是一种有效的方法吗?
让我们假设这个创建组件以拼凑成最终应用程序的增量过程已经到位。开发团队最初非常小,有6到7人。为了它的乐趣,让我们称这个团队为 Guild 。该公司刚刚起步,他们需要创造有利可图的东西。为了论证,让我们说公会开发了FaceAPI Library。所有这些都是在Scrum方法中完成的,让我们在一个sprint中说。现在,该公司有足够的资金雇用7名员工。这些新的7人被放入他们自己的公会,他们的技能反映了原始公会的技能。
所以现在,这家公司有2个公会,还有1个图书馆可供开发。假设一个Guild的任务是使用原始库创建Product1,另一个Guild的任务是扩展具有更多功能的库。这两个“sprint”将同时执行,最后更新的库将合并到应用程序中。正如您所看到的,可能需要由使用Product1的团队对库进行一些修改,在这种情况下,合并将是非常重要的。
无论如何,这是一般的想法。该公司将拥有个人公会或人员团队(问题3:您如何看待这个想法?由于团队较小,他们希望聘请具有良好协同效应的成员。这是否有可能提高整体士气和生产力?),可以同时进行冲刺。由于公司提供的服务性质,团队可以使用或多或少相同的组件和部分应用程序,但是可以创建他们的冲刺,以便团队可以始终无障碍地完成工作。每个公会都是一个自我封闭的单位,有测试人员,设计师和QA。
最终问题:
答案 0 :(得分:3)
首先,到目前为止,我已经开展了3个或更少的Scrum项目。
你的故事中有一些不清楚的东西。公司的目标是什么 - 开发图书馆或最终产品?对我来说,两者似乎相当矛盾,特别是对于一家小公司而言。
另一件事是,在没有任何真实用户的情况下使用库本身开始开发对我来说听起来不太敏捷。 IMO敏捷设置将从另一个方向开始:首先开发一个具体的产品,根据具体情况重构设计,可能会达到某种分层架构,其中下层可以被提取到一个可重复使用的库。然后开始开发更具体的产品,寻找在项目之间重用代码的可能性,以及发展公共库的设计 - 再次,由客户(产品开发团队)的具体使用和需求决定。
在某些时候,图书馆开发可能需要自己的团队 - 一开始,它可能足以让它的设计和积压在不同团队之间协调。
答案 1 :(得分:1)
关于团队对彼此代码进行踩踏的问题 - 这就是源代码控制的用途。为新的东西分叉,然后在下一个sprint重新整合并稳定。
关于q2,scrum是一种渐进式方法,所以如果设计适用于增量工作部分,那么它当然是合适的。
关于q3,雇用“在他们内部工作得很好并且他们想要合作的人”怎么可能是一件坏事呢?
答案 2 :(得分:1)
团队组织和系统结构高度依赖。 See Conway's Law
这意味着,如果您有两个独立的团队在两个独立的代码模块(图书馆团队和产品团队)上工作,您需要在团队之间建立明确的沟通渠道,因此,开发的代码将反映这些设计中的渠道。传统上,这意味着您最终为库定义API或接口,其行为类似于每个团队可以开发的合同。敏捷实践通常采用更新的设计理念,因此创建一个有意义的API可能很困难。
大多数敏捷团队解决这个问题的方法是将时间限制为可管理的增量。因此,虽然设计整个API可能不切实际,但产品团队和图书馆团队可能就API设计达成一致,可以进行为期2周的工作。编写代码,部署,设计下一次迭代,然后重复。这样就建立了团队和代码模块之间的通信路径,这样两个团队就可以独立工作而不会踩到彼此的脚趾。
我最近看到的另一个选项是让更大的团队使用看板/有限制品在线流程进行管理。让每个人都在一个看板管理的同一个团队中,可以实现更有机,更灵活的自组织,这意味着您的系统将能够更容易地进化。通过保持高度可见的工作,它增加了沟通,并通过限制工作进度,限制开发人员通过防止系统在任何一个方向上发展得太远而互相破坏。结合坚固的VCS,你应该很高兴。
最后,另一个选择是你在进入开发之前花些时间真正考虑一下你的架构。在有限的“尖峰0”类型的角色中使用Architecture Centric Design Methodology(ACDM)等软件架构设计过程可以帮助您解决允许紧急设计时常遇到的许多问题。在设计冲刺结束时,您将能够制定一个更符合您需要做的计划。请记住,仅仅因为它是一个设计阶段并不意味着你不编写代码 - 恰恰相反。 ACDM强烈主张实验。