影响:一个组织的沟通、质量、标准和责任权会影响系统的可扩展性和可用性。
沟通和协调,对于任何需要多人参与完成的工作,都是必要的。沟通失败往往是灾难性的,会直接导致系统的可用性降低。同时,一个组织是否有清晰的组织结构层次,也会影响沟通协调的顺畅与否。
安排同一个产品相关的角色坐在一起,可以大大提高效率,但同时,由于完成项目的成本提高,资源向短期项目的倾斜,都会导致技术债的累加,会导致质量的降低。
标准化可以提高组织的效率,通过制定良好的规范和标准,可以避免分歧。但是如果规范和标准,没有被很好的遵守,同样会引发问题。
系统代码或产品线的归属权,决定了人们是否会对问题负责,同样会影响系统的可扩展性。所以,制定清晰的组织结构,非常重要。
规模:为组织寻找最优解决方案的关键是:寻找最佳的团队规模。
团队规模一般的人数下限是6人,上限是15人,亚马逊把团队的上限定义为“两张披萨原则”。确定团队规模,首先要考虑的是:1经理的管理经验;2团队成员的工作年限;3经理的工作职责;4业务的需要。
团队规模太大,容易造成生产率低下、沟通不畅和士气低落;团队规模太小,无法发挥团队作用,容易引起业务伙伴的不满,微观管理经理的不满,以及过度劳累的员工。
如果要进行团队拆分:1需要确定如何分拆代码,可按照服务,基类平均分割,并引入代码修改提醒;2.确定新的经理,可内选或外聘,需尽快完成决策;3.分析团队和其他部门之间的关系,确保平滑过渡,并向全体员工公布消息。
结构:团队组织结构主要包含传统的职能型、矩阵型,以及新兴的敏捷型组织结构。
职能型的优点是同质性,职责明确,容易分配任务,更好的遵循标准。缺点是没有统一责任人,跨部门沟通非常困难,且部门间容易引起情感型冲突和内耗。当同质性的好处,超过整体协调和所有权带来的问题时,可以考虑职能型结构,特别是采用瀑布开发模式的组织。
矩阵型大幅改进了职能型组织的弊端,但同样引入了新的问题,容易产生多头汇报,精力分散,容易让工程师产生较大的压力和焦虑。
敏捷开发方式的兴起,催生了敏捷型组织的诞生。“最好的架构、需求和设计源于自组织的团队”,它不以角色为基础,而是专注于满足客户需求。技术团队的组织结构,对软件的质量、扩展性和可靠性有着非常重要的影响。
敏捷型组织的优势是,通过改善冲突打破边界、授权实现了创造力的提升;劣势是改变对传统的管理角色有冲击,当所有权有重叠时无法自治,生产问题会要求团队值班。当然,这些劣势也会演变成促进敏捷团队进步的推动力。
敏捷团队的组件,可以参照Spotify公司的“小组、部落、章节、公会”的组织模式,进行持续的演进。
孙子说,将凡治众如治寡,分数是也。通过找到最优的团队规模,小而美的组织方式,可以更加灵活的搭建组织的架构,实现高效、高创造力的团队模式。