我们的系统管理员/运营团队目前既负责开发,又负责常规运营。但是,当需要完成任何运营任务时,开发任务总会受到影响。为了解决这个问题,我们正在考虑分成两个小组 - 开发和运营。
我们会非常小心,不会让运营部门的人员流失,因为我们认为系统管理员也是称职的程序员非常重要。但我们需要先投入一些人,然后开始聘请专职程序员。
但我需要一些关于如何构建这个的建议。关于如何进行拆分,尤其是操作和开发之间的接口应该如何,有什么建议/最佳实践吗?
答案1
当心!
你需要非常明确您要实现的目标。如果要用相同数量的员工完成更多的开发工作,那么更换职位是行不通的。要做到这一点,您需要减少运营工作和/或提高开发效率。
此时,我会避免进行重组或改变角色。相反,我会围绕减少运营工作和提高开发效率做出改变。
我可以建议...
1- 衡量时间的去向。在这种环境中,通常有三种“类型”的工作:紧急支持、小型开发(即小幅改进)和纯开发。您需要知道在这些方面花费了多少时间。不要相信您自己的估计……它们可能相差甚远。
2- 指定一个主要支持角色,并让该角色在员工中轮换。当前的“主要”角色负责发现并处理支持问题,让其他员工自由地处理项目。这样做的目的是让员工有更多不受干扰的时间进行开发,这应该有助于提高工作效率。
3- 实施票务(即问题跟踪) 系统(如果您还没有)。敦促用户和您的团队使用它,并让团队保持更新。
4- 向你支持的团体公开并明确说明你在做什么以及为什么要这样做。不要对他们提出不必要的要求和过分的紧迫感进行反驳。
一旦你有了更多的数据并做出了一些改变,你就可以对“结构性”变化做出更好的决定。如果你决定拆分你的团队,你可能会有更多关于哪个人属于哪一边的数据。
答案2
尽最大努力保持这些团队之间的协同作用。确保你在工作之外计划一些好的团队建设活动。注意那些会导致团队陷入孤岛的行为(例如“那些大坝开发商”)。
我会为团队制定一个良好的沟通计划,定义两个团队的角色和职责。它还会定义团队应该如何沟通(即团队会议、部署、文档……)。
尝试识别这些团队之间的所有接口并确保有良好的流程。
答案3
拆分团队是最好的办法——被动的运维工作对开发效率非常不利。开发人员的惯用伎俩就是不间断地集中精力,而混合的运维工作量会严重扰乱开发工作。
增强团队凝聚力的一些方法:
让一些开发资源隶属于运营团队,负责自动化、他们熟悉的系统上的一些错误修复工作以及可能较小的更改或开发项目。
让团队处于同一物理区域,以便他们能够一起进行社交。
定期在团队之间交换人员 - 每个团队中的某些人应该至少在另一个团队工作 1-2 年。例如,尝试让开发人员担任一段时间的 DBA(如果他们随叫随到,则向他们支付随叫随到津贴 - 您可能会被视为使用初级开发人员作为廉价的 DBA!)。
设立一个由两个团队的人员组成的架构工作组。该小组不一定是全职的,但会负责构建和配置管理基础架构、数据库架构/开发工作(处于开发和运营 DBA 工作之间的灰色地带)以及 Web/应用服务器配置(尤其是会影响开发的地方)。
鼓励(并提供时间)人们就感兴趣的主题进行研讨会或发表论文,例如他们构建的应用程序或与开发相关的网络基础设施方面(例如如何使用反向代理设置 Weblogic 服务器)。
尝试让两个团队都参与同行评审过程。
诚信、诚信、诚信。尽一切努力避免互相指责的文化。例如,如果出现严重问题,请进行某种事后分析或根本原因分析。如果合适,请某人就解决方案进行技术研讨会。