大多数开源社区没有很多正式的角色。当然,有些人会帮助处理系统管理任务、测试、编写文档以及翻译或开发代码。但是,开源社区中的人们通常会在不同的角色之间转换,经常同时履行多个角色。
相比之下,大多数传统公司的团队成员都有明确的角色,负责文档、支持、质量保证以及其他领域的工作。
为什么开源社区采用共享角色的方法?更重要的是,这种协作方式如何影响产品和客户?
Nextcloud 采用了这种社区风格的混合角色实践,我们看到了这对我们的客户和用户带来的巨大好处。
1. 更好的产品测试
正如任何测试人员都可以告诉您的那样,测试是一项艰巨的工作。您需要了解工程师开发的产品,并且需要设计测试计划、执行它们并将结果返回给开发人员。完成该过程后,开发人员进行更改,您重复该过程,来回多次,直到完成工作。
在一个社区中,贡献者通常对他们开发的项目感到负责,因此他们在将其交给用户之前会对其进行广泛的测试和文档编写。靠近项目的用户经常与开发人员协作,帮助测试、翻译和编写文档。这创建了一个更紧密、更快速的反馈循环,从而加快了开发速度并提高了质量。
当开发人员不断面对他们的工作成果时,这会鼓励他们以一种最大限度地减少测试和调试的方式进行编写。自动化测试是开发中的一个重要要素,反馈循环确保它做得正确:开发人员会自然而然地被激励去自动化应该自动化的内容——不多也不少。当然,他们可能希望其他人做更多的测试或自动化测试,但当测试是正确的事情时,他们会去做。此外,他们会互相审查代码,因为他们知道问题往往会在以后反噬他们。
因此,虽然我不会争辩说最好放弃专职测试人员,但肯定在没有社区志愿者进行测试的项目中,测试人员应该是开发人员,并且紧密地嵌入到开发团队中。结果是什么?客户获得的产品是由 100% 有动力确保其稳定性和可靠性的人员进行测试和开发的。
2. 开发与客户需求紧密结合
将产品开发与客户需求对齐是非常困难的。每个客户都有自己独特的需求,需要考虑长期和短期因素——当然,作为一家公司,您对您想要去哪里也有想法。您如何整合所有这些想法和愿景?
公司通常会创建产品管理、支持、质量保证和其他与工程和产品开发分开的角色。这背后的想法是,人们在专注于某个领域时做得最好,工程师不应该为测试或支持等“简单”的任务而烦恼。
实际上,这种角色分离是一种削减成本的措施。它使管理层能够进行微观管理并感觉更受控制,因为他们可以简单地命令产品管理部门,例如,优先考虑路线图上的项目。(这也创造了更多的会议!)
另一方面,在社区中,“做事的人决定”。开发人员通常也是用户(或由用户付费),因此他们自然而然地与用户的需求保持一致。当用户帮助测试(如上所述)时,开发人员会不断与他们合作,因此双方都充分了解什么是可能的和什么是需要的。
这种开放的工作方式使用户和项目紧密结合。在没有管理层干预和开销的情况下,用户最迫切的需求可以很快得到满足,因为工程师已经非常了解这些需求。
在 Nextcloud,客户永远不需要解释两次事情,也不需要依靠初级支持团队成员来准确地向工程师传达问题。我们的工程师根据实际客户需求不断调整他们的优先级。与此同时,长期目标是在对客户的深入了解的基础上协作设定的。
3. 最佳支持
与专有或 开放核心 供应商不同,开源供应商有强大的动力来提供尽可能最好的支持:这是他们生态系统中与其他公司的一个关键区别。
为什么一个项目背后的驱动力——想想 Collabora 背后的 LibreOffice,Qt 公司 背后的 Qt,或 Red Hat 背后的 RHEL——是客户支持的最佳来源?
当然是直接访问工程师。许多公司没有将支持与工程隔离,而是为客户提供访问工程师专业知识的途径。这有助于确保客户始终尽快获得最佳答案。虽然一些工程师可能比其他工程师花费更多时间在支持上,但整个工程团队都在客户成功中发挥作用。例如,专有供应商可能会以相当大的成本为客户提供专职的现场工程师,但像 OpenNMS 这样的开源公司在您的支持合同中提供相同级别的服务——即使您不是财富 500 强客户。
还有另一个好处,这与测试和客户对齐有关:共享角色确保工程师每天处理客户问题和愿望,这促使他们快速修复最常见的问题。他们还倾向于构建额外的工具和功能,以避免客户提问。
简而言之,将质量保证、支持、产品管理和其他工程角色整合到一个团队中,确保了伟大开发人员的三个著名美德——懒惰、不耐烦和傲慢——与客户紧密结合。
评论已关闭。