在一个平台上运营多校区学校集团
各校区要自主,集团要可比的数字,两边都对。哪些该共享,哪些该留在本地,以及集团完成率为什么会骗人。
一个运营多个校区的学校集团,有两种都正确的本能在互相拉扯。每个校区最了解自己的员工、家庭和课表,而总部替它做的每一个决定,到达时都略微跑偏。集团需要可以跨校区比较的数字,而这在某些定义没有在每一栋楼里完全一致之前是做不到的。可行的分界比大多数集团预想的要窄:共享那些必须在任何地方都表示同一件事的东西——课程结构、测评标准,以及每一个上报数字的定义——其余凡是触及一个人一周日程的,都留在本地。
大多数整合项目栽在这句话的后半截。集团买了一个平台,然后用它去统一那些从来不是问题的东西——课表、班级名称、“学年”这个词怎么叫——却把完成、出勤和掌握的含义留给各校区自己定。这是反的,其结果是一块没人相信的集团仪表盘,以及一群悄悄绕开系统的校长。
争论的两边都对
校区一方的理由是准确。一位校长要为一栋楼里的结果负责,手里是一份员工名单、一届招生和一套本地压力。凡是被两百英里外的中央团队指定过课表的人都知道,有多少细节在这段路上活不下来。这里的自主不是政治;它是数据得以忠实于这栋楼的方式。
集团一方的理由是可比。如果三个校区上报及格率,总得有人把这些数字放到同一页上,并针对差异采取行动。没有可比的数字,集团就只是一个共用的 logo 和一套共用的工资表,而在某一栋楼里找到的每一项改进都只留在那栋楼里。校区要的是对运营的控制权;集团要的是对含义的控制权。
联邦式学校集团
一群学校,其中一个很小的中央层持有一组固定的共享定义——课程学习结果、测评标准,以及每一个上报数字背后的规则——而其余一切归各校区所有:它的员工、班级、日历、语言和一天的安排。它位于两者之间:一端是总部替每个校区做配置的集中式集团,另一端是各校区只共享一个所有者、在运营上毫无交集的控股公司。定义它的,是共享清单有多短,而不是中央控制得有多多。
什么该共享,什么该留在本地
共享:四样东西
- 课程主干。 科目、顺序,以及一所学校要为之负责的学习结果。各校区可以教得不一样;但不能各自保留一份私有的学习结果清单,因为在一个校区记录下的一项能力,在一个家庭搬到城市另一头之后,必须仍然表示同一件事。
- 测评标准。 量规、分数线,以及什么算作掌握的证据。如果标准是本地的,分数就是本地的,跨校区比较结果就成了比较批改文化。
- 报表定义。 什么算一次完成、一次缺勤、一名活跃学员、一个逾期模块。集团往往跳过这一条,而它决定了集团这一层值不值得存在。
- 数据政策。 留存、同意、谁可以看到什么,以及一项主体访问请求如何被答复。监管机构问的是集团,不是校区。
共享意味着一个定义、一个负责人、一套变更流程。它不意味着一张课表或一份教案。一份共享的量规不会妨碍老师上课。中央拥有这个词的含义;校区拥有这个词底下发生的事。
本地:凡是触及一周日程的一切
- 员工、角色与权限。 需要管理权限的,是在现场的人。一位年级主任不该为了建一个班而等两天的中央工单。
- 分组与班级。 学生群组按本地日历变动,出于本地原因,有时每周都在变。
- 日历。 学期、假期、考试周和报表周期,在同一个集团的各校区之间不同的频率,比总部预想的要高,跨国家时则必然不同。
- 术语。 Year 7 还是 Grade 7。学期叫 term 还是 semester。班主任还是 homeroom teacher。这看着像表面功夫,其实不是:一个把东西叫错名字的系统,员工会不再信任它。
- 本地材料与家校沟通。 寄回家的那封信,是由认识这个家庭的人写的。
各校区该有自己的管理员,还是该由集团办公室统管一切?
各校区应该有自己的管理员,权限范围限于本校区,同时在集团层面有少数几个人,其权限能横跨所有校区。只有中央的模式,失败之处不是安全,而是时延——一次九十秒的改动要等两天。只有校区的模式,失败之处是关于整个集团的任何问题,不问十一个人就答不出来。把权限挂到结构中的一个位置上,而不是一个校区一个校区地授予,就能避开这两种失败。
分支和子组织不是一回事
共享清单定下来之后,结构必须把它表达出来。有两种形状在组织架构图上看着一样,在系统里的行为却不同。各家厂商叫法不一;本文用的是分支和子组织。
分支是一个组织内部的运营单元:一个校区、一个部门、一个大区、一个学段。分支树里的一切共享该组织的成员、课程、角色和品牌。分支的意义在于权限的流动——在某个分支上授予的角色,适用于它下面的每一个分支。北部各校区的负责人是一次授予,而不是每校区一次,等她离任时,也只有一次授予需要撤销。
子组织是一个完整的子级组织:有自己的成员、课程、角色、品牌、术语和域名,而且它自己还能再有子级。它是一条边界,而不是一个文件夹。两个子组织可以运行不同的课程体系和招生,而两者都不算特例。
One organisation, campuses as branches
Northbridge School one brand, one staff list, one curriculum
├── North campuses branch — regional head: one grant
│ ├── Northbridge Central branch
│ └── Northbridge Riverside branch
└── South campuses branch
└── Northbridge Park branch
One group, schools as sub-organisations
Northbridge Education Group parent organisation
├── Northbridge School sub-org — own domain, own staff
│ ├── North campuses branch, inside that sub-org
│ └── South campuses branch
├── Cedar Academy sub-org — acquired, keeps its own brand
└── Northbridge Online sub-org — own programmes, own intake- 当各校区其实是一所学校分处几栋楼时,用分支:一个名字、一份员工合同、一套课程、一套制度。分支树默认就让它们可比,因为每样东西本来就只有一份可比。
- 当一个校区拥有家长认得出来的身份时,用子组织——不同的品牌、不同的监管机构、自己的招生、自己的域名,以及不该出现在另一个校区用户列表里的员工。集团收购了一所已经有名字、并且无意丢掉这个名字的学校时,也用它。
- 当真实的形状两者都需要时,两者都用:每所学校是一个子组织,而每所学校的校区和部门是它内部的分支。
分支和子组织有什么区别?
子组织是你的租户内部一个独立的组织——有自己的成员、课程、角色、品牌、术语和域名,而且它自己还能包含子级。分支是单个组织内部的一个单元,它的用途是权限流动:在某个分支上授予的角色,会沿着它下面的每一个分支向下级联。快速的判别方法是看前门。如果这个单元需要自己的地址和自己的用户列表,那是子组织。如果它主要只是需要自己的管理者,那是分支。
选错在两个方向上都要付代价。全都建成子组织,集团就失去了可比性:四所学校,四棵课程树,四种关于及格分的想法。全都建成分支,那所本该有自己品牌和员工名单的学校,两样都拿不到。这两种错误在第一天都很便宜,在一年的招生之后就很贵。
报表陷阱
集团仪表盘是这样变成虚构的。集团向每个校区索要按项目统计的完成率。A 校区在学员提交最终测评时算作完成。B 校区在教师批改完那份测评时算作完成,那是两周之后。C 校区开的课没有最终测评,于是在五分之四的课时被打开过时算作完成。每一条规则在各自的校点上都站得住。取平均之后,它们什么也没描述——不是学习,不是吞吐量,也不是批改产能。那是三种不同的测量加在了一起。
一个错的数字比一个缺失的数字更糟,因为它会被拿去用。缺失的数字会让人提问。错的数字会把人员编制、预算和干预资源,挪向批改周期最慢的那个校区——而在那场会议上,幻灯片上有数字,没有定义。
完成只被定义一次,由集团层面一位具名的人负责,而每一块校区仪表盘、每一份导出和每一份董事会材料,都归结到那一个定义。
完成的含义就是各校区仪表盘当初被配置成的那个含义,而集团的数字是在给四个不同的问题取平均。
为什么我们各校区的数字在集团层面对不上?
几乎总是因为同一个词在每个校区的算法不同,而不是因为底层数据错了。完成、出勤、活跃学员和逾期,是常见的那四个。在比较任何东西之前,把每个校区所用的确切规则写下来:开始计数的事件、结束计数的事件,以及中途退出项目的学员会被怎么处理。集团常常在四个校区里发现三种完成的定义,其中一种把已退选的人也算了进去。
解法不是一块更好的仪表盘,而是一份登记册:每一个上报的数字只定义一次,有一位具名负责人、一个数据来源、一条聚合规则,以及一份封闭的可拆分维度清单。校区可以在它之上搭任何自己喜欢的视图;不能做的,是重新定义底下那个词。这正是认证指标定义的用途——当一个指标背后有一份人工核对过的预期结果,并且每逢定义变更就重新跑一遍时,它才配得上“已认证”这个标签,于是改动完成规则会让一个测试失败,而不是悄悄改写去年的数字。
规模化之后是什么样子
在 Lurno 上运行的这种形状里最大的一个——做了匿名处理,因为那是别人的生意——是一家 K-12 出版社在单一平台上运营 114 所学校。同样的结构换一个宽度,就是一家企业学院从一个租户里为 15 家客户企业提供培训。两者都不是特别定制:一个母组织持有若干子组织,每个子组织内部各有一棵运营树。
Lurno 有意把这两棵树分开。子组织可以嵌套,每个都带有自己的成员、课程、角色、品牌、术语和自动签发 TLS 的自定义域名。分支是第二棵树,在单个组织内部,在某个分支上授予的角色会沿着它下面的每一个分支向下级联。分组是第三样东西:学员所在的班级或学习群组。三者之中该用哪一个,写在白标与多租户上。
报表是架在一份认证指标登记册之上的只读层,每个指标只定义一次,有一个来源和一份固定的维度清单,所以一块校区仪表盘上的图块,和集团董事会材料里的一个数字,不可能用两种不同的方式算出来。每一次查询都以正在阅读的那个人的身份运行,遵循管辖平台其余部分的同一套权限,这正是可以放心地给校长实时报表、而不是每月一份 PDF 的原因。这一层写在报表与分析上。学校之间的隔离在数据库里,而不在应用代码里——676 次迁移中的 868 条行级安全策略——所以新导出功能里漏掉一个过滤条件,返回的是空,而不是另一所学校的学员。
集团规划迁移之前,有三条限制要先定下来。SCORM、xAPI 和 LTI 1.3 在开发中——如果你的校区是以 SCORM 包的形式采购出版社内容的,请先问时间表。支付和结账也在开发中,所以学费仍留在你的财务系统里。还有,SAML 和 OIDC 单点登录在路线图上,尚未交付;今天可用的是合作方登录(静默 SSO),那是另一种机制,值得与管理你们身份提供方的人提一下。这套模型的其余部分在 Lurno 面向学校。
整合之前
- 把集团报表里出现的每一个数字都列出来,并在旁边写下今天每个校区所用的确切规则。在迁移任何东西之前把这份清单对齐,而不是之后。
- 逐个校区地问:它需不需要自己的前门和自己的用户列表。这个问题比任何组织架构图都更能把分支和子组织分开。
- 为每一个共享定义指定一位负责人——课程学习结果、量规、每一个上报指标。没有主人的定义会在一年之内漂移,而没有主人的数字不该进入董事会材料。
- 写下每个校区不必请示就可以更改的事项,并公布出来。对集团平台的抵触,多半来自不知道哪些决定还归自己。
- 核实在集团层面授予的角色能向下触及,而在某个校区授予的角色到此为止。要求在产品里演示给你看,而不是在电话里说给你听。
- 事先约定好一所学校离开集团时会发生什么:什么被删除,什么被导出,以及在这中间由谁持有数据。
简版
共享定义,把运营留在本地。当各校区是一所学校分处几栋楼时用分支,当它们是一个所有者名下的几所学校时用子组织。并且在第一份集团报表印出来之前,把完成的含义定下来——在那之后这个数字就流通开了,而没有人还记得它原本是三个问题。