什么是分布式软件开发?
分布式软件开发指的是计划、设计、构建、测试和管理软件的分散团队位于不同的物理工作空间。这些团队使用基于互联网的协作工具和通信平台来构建软件。
分布式开发团队
分布式软件开发模型要求在分散位置工作的团队以与时间和位置无关的方式进行协作。分布式软件开发团队可能居住在相同的邮政编码中,但绝不会在相同的物理区域中工作。
该团队通过使用基于web的论坛、项目管理平台、源代码数据库以及消息传递和视频会议软件来协调工作。
分布式软件开发是敏捷的吗?
分布式DevOps团队使用敏捷开发原则和持续的软件开发实践,例如持续集成、持续交付,以及与全球分散的团队一起创建软件的基础设施自动化。
DevOps方法论所需的协作和透明度——以及对DevOps和敏捷开发原则产生重大影响的开源软件开发——使得这种环境非常适合分布式软件开发。
戴夫·曼格特,校长Mangoteque和全球开发运营团队负责人有用的工程他在Salesforce、Cable & Wireless和SolarWinds等公司领导DevOps转型。他认为,使用敏捷开发实践可以减少您在分布式团队中遇到透明度问题的可能性。
“透明度的概念是建立在敏捷开发过程的基础之上的。无论是日常站立会议还是使用敏捷董事会,透明度都是核心,”Mangot说。他认为,一旦分布式开发团队采用远程优先的文化,涉及缺乏透明度的问题——例如,导致孤立文化的私人对话和协议——就会消失。
虚拟站立和一对一会议
缺乏透明度和协作是新成立的分布式开发团队的常见缺陷。Mangot根据他在分布式软件开发团队中的经验,提供了一些有效利用虚拟通信来对抗透明度问题的技巧。
他说:“我看到很多人鼓吹游戏、欢乐时光之类的东西——这些都是很棒的想法——但在日常工作中建立社交关系并不需要强迫。”他建议让人们在每天的站立会议中有时间进行社交,但要保持有组织的节奏。
“虚拟单口相声需要尊重在场的观众,就像普通的单口相声一样。这不应该是一件曲折的事情。如果一开始有五分钟的闲聊,那很好,然后进入单口相声,然后让大家一起出去玩,”曼格特说。
他说:“一个好的管理者总是会观察团队的动态,在潜在的问题变成真正的问题之前发现它们。”“授权分布式开发团队拥有团队的成功是非常重要的。我经常问个人他们认为团队做得怎么样。团队看到了很多问题,而你(作为经理)可能没有注意到。”
Mangot认为,举行持续的、富有成效的一对一会议是衡量团队在没有其他人ob欧宝娱乐app手机下载在场的情况下如何看待他们的职场文化的一种合理策略。
“永远不要错过一对一的会议,”他说。“这些对话对于把握团队的脉搏至关重要。如果你的日程安排有冲突,永远不要取消一对一的会面——总是重新安排。”
Mangot推荐Lara Hogan关于分布式开发团队一对一会议的力量的著作。她的公司Wherewithall培训和指导管理人员并提供服务免费工具和资源欧宝体育app官方888让你的一对一课程更上一层楼
分布式开发挑战
DevOps模型并不是专门针对分布式软件开发的,但是DevOps背后的原则和实践对于管理分布式开发模型的常见缺陷是非常有用的概念。
Mangot说:“不存在与分布式团队不一致的DevOps概念。
DevOps用分布式的、跨职能的团队取代了分散的、孤立的工程和运维团队。管理这种由软件工程师和操作专业人员组成的团队需要策略和执行力。
“跨职能团队的最大缺点是,他们需要一定规模的组织才能工作,”曼格特说。“在一家非常小的公司,所有的团队都是跨职能的。在大型组织中,你有足够的员工组成团队,这可能是完成任何事情所必需的。”
Helpful Engineering将数千名工程师按项目组织成跨职能团队,以及团队可以向其寻求帮助的中小企业和领导者。Mangot认为,中型公司通常无法利用跨职能团队带来的速度和敏捷性。
Mangot引用了Google对DevOps的拥抱来强调DevOps概念在分布式开发模型中的普及和有效性。谷歌强调共享所有权模式和合作伙伴团队之间关系的重要性。强调开放协作是DevOps和分布式开发实践的核心原则。
分布式开发团队之间的强大协作可以扩展到像Google这样的大型组织,但是Mangot认为分布式团队提供了一个增长的出口,这对小型团队来说也是必不可少的。
“‘两个披萨团队’将有明显的局限性,”曼戈特说,他使用了一个因亚马逊而出名的术语。“然而,在划分工作优先级和分配工作时,重要的是我们要沿着多个方向发展多个团队成员,而不是只掌握当地的知识。如果我们在一个中心位置发布和录制我们的演示,我们就可以从世界各地的团队成员和其他利益相关者那里得到反馈。”
分布式软件开发的优势
在2009年,麻省理工学院斯隆管理评论发表了一项关于80个分布式软件开发团队的性能研究,包括在不同城市、国家或大洲工作的团队。研究人员发现,有了适当的管理流程,分布式团队(所谓的虚拟团队)可以显著优于位于同一地点的团队,尽管存在相关的挑战。该研究还确定了以下内容:
- “任务相关过程”的质量似乎决定了分布式团队是成为“责任还是机会”。
- “社会过程”提高了分布式软件开发团队和协同定位开发团队的性能。
- “社会情感过程”通过增加“知识转移和更好地解决团队冲突”间接地增强了分布式开发团队的绩效。这些过程并不是一个区分因素,但“促进了更多与任务相关的过程”。
分布式开发最佳实践
分布式开发团队的最佳实践包括创建有意义的虚拟交互,进行面对面的入职和培训,并使用工具来度量和管理分布式开发标准。
- 虚拟新员工培训:你的招聘过程并不会随着录用通知的签署而结束。提供入职体验,帮助新员工取得成功,并展示团队的虚拟协作能力。包括与新员工的经理和团队进行面对面的视频会议。创建建立分布式开发标准和工作流节奏的入职文档,并包括资源,例如包含团队和组织的电话号码的联系表。欧宝体育app官方888
- 视频验证:面对面的会议对于分布式开发团队来说是富有成效的文化建ob欧宝娱乐app手机下载设活动。与分布在各地的员工进行更多面对面的虚拟互动,尤其是在项目或雇佣之初。在培训的第一周加入视频会议,如果可能的话,考虑在工作的前30天进行现场培训。在你的会议中加入一些团队建设活动,这些活动旨在创造更随意的互动,并为团队提供一个平台,让他们在不同的环境中相互了解。例如远程团队的顶级团队建设活动,阅读这篇文章。
- 衡量精英:分布式软件开发需要团队中每个人的支持,所以要创建共同的目标。为分布式开发团队协调准确和可实现的时间表,并庆祝达到开发里程碑。平等地分配工作,并使用确定您的分布式团队是否满足业务需求的度量来度量产品。ob欧宝娱乐app手机下载
- 消除小道消息:使用异步的、易于访问的、明确的通信渠道与整个团队共享透明的数据。当项目偏离轨道或某个问题阻碍了团队时,激励协作并奖励透明度。要了解有关如何与远程团队有效沟通的更多信息,请阅读这篇文章.
社交标准:在分布式开发团队中培养社交互动和联系文化是至关重要的。在选择如何利用社交媒体和协作工具时要明智,并为团队创建有关Twitter、消息聊天软件和社交网络论坛(如知识库评论区)等平台的标准。
分布式开发协作工具
协作软件和技术是开源开发不可或缺的一部分,也是分散在不同组织、地点和时区的团队创建软件的文化。开源软件社区帮助促进了协作软件和技术的传播,包括云数据库、流线型编程语言、自动化框架、测试工具、容器和版本控制软件,这些对分布式开发模型至关重要。了解更多关于版本控制软件的信息,请阅读软件版本控制的基础知识”。
基于云的敏捷项目管理平台、问题跟踪工具、生产力应用程序和视频会议软件是管理分布式开发、减轻项目复杂性和利用有才能的工作人员的有效实现,而不考ob欧宝娱乐app手机下载虑位置。
Mangot认为协作工具对于管理分布式开发团队至关重要。他推荐了一个好的消息传递和聊天平台,一个敏捷跟踪器或Scrum任务板工具,以及一个按需视频会议解决方案。
他说:“工作需要让人看得见,能够跳出来,把棘手的谈话从聊天带到现实生活中,这一点至关重要。”
要了解有关有效远程协作工具的更多信息,请阅读这篇文章.
协作工具有助于扩大开源流行病应对
Helpful Engineering是一个完全分布式的全球团队,有数千名不同的志愿者工程师在GitHub上发布文档,GitHub是一个与分布式软件开发模型兼容的开源版本控制平台。GitHub为Helpful Engineering的分布式开发团队提供了托管代码、文档和图像文件的工具,因此志愿者可以轻松地以与时间和位置无关的节奏进行协作。
“我们使用GitHub主要是因为它在开源工程社区很熟悉,”在Helpful engineering担任志愿者的软件主管和项目经理Shayan Chowdhury说。“它实际上是一个家喻户晓的名字,不仅对计算机科学家来说,对社区驱动的硬件项目来说也是如此。把我们的工具放在同一个平台上似乎是合适的。”
Chowdhury指出,Helpful Engineering并没有断言GitHub是唯一可以使用的平台,而且许多志愿者使用GitLab、BitBucket或其他平台来为该项目做出贡献。
在helpingengineering,有超过1.7万人使用Slack,但持续从事项目工作的人数要少得多。志愿者还使用敏捷项目跟踪工具Slack和Zoom来组织和共享信息并协调开发项目。
作为软件负责人,Chowdhury使用协作工具来管理分布式开发任务,包括新成员的加入、DevOps资源的转移,以及为软件项目提供组织和方向。欧宝体育app官方888
Chowdhury说:“由于团队和项目的数量庞大,我们使用自上而下的方法定期与团队负责人交谈,检查他们的进度,看看我们可以提供哪些工具来帮助他们实现项目。”
分布式通信和文档
协调分散团队之间的信息流对于增强分布式协作至关重要。构建软件是一个过程,它需要共享想法和资源。欧宝体育app官方888分布式软件开发的最大陷阱之一是孤立的知识和资源。欧宝体育app官方888
Mangot相信组织信息和协调发展的最好方式跨越不同时区的团队是部署一种混合方法,具有可访问的通信和书面文档。
他说:“我发现组织信息的首要做法是确保信息是异步可用的。”使用wiki或GitHub存储库的常规做法是可以的,但分布式团队和同步信息共享是不一致的。不要让信息在Zoom呼叫中消失。”
Mangot建议分布式团队发布屏幕截图以及演示和回顾的记录,而不是仅仅依赖于要求每个团队成员都在场的同步的、实时的知识传递。他们可以使用Slack或Teams等应用程序记录对话并发布会议记录。
“规划工程工作非常重要,”他说。“如果我们每天都去工作,处理我们面前发生的任何事情,你将会度过一段糟糕的时光,无论团队是否分散。当我们写技术规范和计划我们的工作时,我们会得到更好的结果。如果你不能在超过一周的时间内完成某些工作(假设这是最小迭代规模),你就会遇到更大的问题。”
异步通信促进了记录的、可访问的、易于跟踪的、常青的与时间无关的反馈。反过来,该文档成为未来项目和新员工的有价值的工件和资源。
沟通是分散的志愿者的货币
Chowdhury认为,在构建和管理分布式软件开发项目时,沟通是最重要的实践。
“有效的沟通和反馈是任何社区驱动项目的支柱,”他说。“每个项目的梦想家、经理、开发者、营销人员和用户完全相互依赖。由于Helpful Engineering的项目是由志愿者驱动的,人们只有在同意项目方向的情况下才会投入时间,在这种情况下,来回的沟通是必不可少的。”
乔杜里说,他在乐于助人的工程公司工作中最具挑战性的方面是保持项目顺利进行。
他说:“从项目负责人一开始就需要积极主动。”“我的软件联合领导以及前端和DevOps团队的每个人都需要不断地相互沟通和支持,以保持我们在这些项目上的动力。如果你所做的事情是别人关心的,是他们不断支持和需要的,你就会想要继续做下去。”
了解如何利用不同的通信渠道来管理跨不同地理位置和时区的分布式团队“分布式团队vs.远程团队。”
外包分布式开发
外包不同于分布式开发。前者并不专门指位于同一地点的软件开发团队;它还指通过与更有效地执行任务相关流程的解决方案提供商合作来利用专门的技能集。
但也要注意,作为一种节省成本的策略,外包不如利用文化多样化的人才库和跨同质知识中心和不同时区的灵活性来扩展项目,以实现24/7的项目覆盖。
例如,一家小型初创公司可能会聘请一家专门从事人力资源相关任务的招聘公司,这些任务与寻找、招聘、入职和管理具有高度特定技能的承包商有关。除了释放与招聘和雇用员工相关的时间和资源外,该外包解决方案提供商还承担了更多的欧宝体育app官方888财务成本和风险。
将软件开发任务外包给分布在不同地理位置的团队时,以下情况也会带来挑战:
- 管理文化差异(例如,与任务相关的目标和与关系相关的目标)
- 协调工作流程重叠并与时间延迟进行沟通
- 在与任务相关的开发过程(如代码共享和软件测试)中妥协于内部协作
成为一个时区大师
跨时区工作给日常任务带来了新的组织挑战。如果没有正确的策略,与分布在不同时区的团队合作可能会限制同步反馈和沟通。
分布式开发团队经常感到需要全天候可用,以匹配管理的节奏或满足特定地理区域的组的需求。作为一名经理,你可以根据每个团队成员所在的时区,与他们建立核心工作和协作时间,以此来对抗职业倦怠。
- 在你的团队协议文档中,收集、分享和更新这些工作时间——尤其是在新团队成员入职和培训时。
- 使用结构化的时间重叠计划来协调不同时区的会议和工作流程。争取最好的时间表重叠,在可用性的基础上结合团队的重要比例。
- 像hTime全局时钟和基于web的时区计算器帮助计划重叠的时间表。有一个异步协作的系统来考虑重叠窗口之外的工作流和通信。
适当的时间重叠可以提高效率——在重叠的时间里,会议的每一分钟都很重要。保持专注于这些会议的压力,并尊重一天中与会者开会和一起工作的不同时间,建立了一种尊重的文化。文化影响协作,跨不同时区分配工作的挑战本质上是尊重文化差异和管理时区重叠的问题。
乔杜里说:“与不同时区的人一起工作似乎是个问题,但最重要的是,这是一种优势。”“首先,你会遇到新的人,他们会以你可能从未想过的方式,为如何完成工作提供新的视角。”
Chowdhury认为,这种类型的合作通过开放讨论来思考更大,更大胆而不失去基础,从而补充了团队。
他说:“通常情况下,这种讨论是非常宝贵的,它会让你重新评估自己的假设,为合作创造更多空间。”“它允许人们在某些任务上轮班,尤其是管理任务。这不仅减轻了同一时区的个人或团队的负担,而且还可以在人们因时区而无法工作时进行并行工作和沟通。”
分布式时区会议和协作工具
使用这个模板来计划你每周的一对一会议或视频会议。自定义模板以按时区和首选工作时间反映团队的可用性。此资源旨在帮助您计划和管理团队跨不同时区的实时协作,这是管理分布式开发工作负载的关键任务。
通过Smartsheet中的实时工作管理,在远程工作时保持高效
通过设计一个灵活的平台来满足你的团队的需求,并随着需求的变化而适应,从而使你的员工能够超越自己。
Smartsheet平台可以轻松地从任何地方计划、捕获、管理和报告工作,帮助您的团队更有效地完成更多工作。报告关键指标,并通过汇总报告、仪表板和自动工作流实时了解工作情况,以保持团队的联系和信息。
当团队对要完成的工作有了清晰的认识时,就不知道他们在同样的时间内能完成多少工作。今天就免费试用Smartsheet吧。