第十四章 技能化与模板复用
章首:把"做过的事"变成"可复用的资产"
每学期开学前后,是教学文档工作最密集的时段。课程大纲、教案、实训报告、成绩记载——同一套格式,同一批栏目,年年都要重新写一遍。写的人心知肚明:这些文档的格式大同小异,变的只是课程名称、学时学分、教学目标,以及一届又一届学生的姓名。可即便如此,大多数人仍然选择从零开始——打开空白的Word文档,重新排版,重新调整字体,再翻出上一年的旧文件,把能抄的部分抄过来。这份"重复的辛劳",恰恰是本章要解决的问题。 更有意思的是,很少有人统计过这份重复劳动的总量——它太日常了,日常到被当作理所当然。
管理学对知识工作者生产率的追问,由来已久。体力劳动者的效率可以用计件来衡量,知识工作者的产出却难以量化:坐在办公桌前的一天,究竟有多少时间花在真正需要判断与创造的事情上,又有多少时间消磨在排版、复制与粘贴里?对教师而言,这个比例尤其值得警醒。教学文档的结构是稳定的,变动的只是内容;而结构,恰恰是其中最不值得重新发明的东西。德鲁克式的追问在这里同样成立:一个人一天的有效产出有多少?他的经验有没有沉淀下来,变成下一次可以少走弯路的资产?
为什么把做过的事称作"资产"?资产的含义,在于它能持续产生价值:一笔存款会生息,一套方法会复利。写过的教案、排过的版式、定过的栏目,都满足这个条件——它们沉淀下来的结构,可以反复产出新文档。可惜多数人对待经验的方式,像对待一次性餐具:用过即弃,下次重新发明。本章主张的转变,是把经验从"消耗品"改造成"生产资料"。
第4章讨论过复用的三个层次:参数化、模板化、能力复用。本章把"模板化"这一层做成完整的实战:从理解模板的构成与抽象时机(第一节),到用工具批量生成教学资料(第二节)。你将在本章亲手体验"一次编写、处处调用"的效率革命,也会在最后一节直面复用边界的思辨——模板用得好是杠杆,用不好就是枷锁。这一章讲的模板,范围也超出教学:合同、方案、报告、清单,凡是结构稳定、内容变动的文档工作,都在这套方法的射程之内。
模板化的理论基础并不神秘。Krueger在1992年对软件复用的综述中指出,复用的收益来自"把已验证的结构重复使用",其中"已验证"三个字是关键:结构本身经过检验,复用才有意义[1];软件工程经典《设计模式》则把"模板方法"列为23种模式之一,让算法骨架固定、细节步骤可变[2]。本章的占位符模板,正是"模板方法"思想在文档领域的投影——骨架是你的,血肉是数据填的。
把"做过的事"变成"可复用的资产",需要两个动作:把结构提炼出来,把内容交给数据。本章的每一节,都在为这两个动作服务。 前者是抽象,后者是解耦——抽象让结构可以复用,解耦让内容可以更换。
第一节 技能模板化的意义与方法
知识工作者的生产率之问
先从"为什么"说起。模板化要解决的,是知识工作者最普遍也最隐蔽的浪费:重复劳动。
知识工作者的生产率,管理学追问了几十年,答案始终绕不开一个朴素的观察:产出高的知识工作者,往往把力气花在"建立可复用的东西"上——写一次函数,画一张图,列一张表,定一套流程,然后反复调用;低产出的工作方式,则是一次性消费自己的劳动,做完即弃,下次重来。模板化的全部意义,都建立在这份对比之上。
科学管理时代,研究者琢磨的是工人怎样少走一步路、少弯一次腰;知识经济时代,浪费发生在更难以察觉的地方——同样的报告换个标题重写一遍,同样的表格换批数据重排一版,同样的通知换个人名重新措辞。这类劳动有一个共同特征:结构完全一样,只有内容在变。对个人而言,它们是时间的黑洞;对组织而言,它们是知识的漏损——每一次重复,都意味着上一次的经验没有沉淀下来。
教育领域正在经历同样的变化。Siemens与Long在2011年指出,学习分析(learning analytics)的兴起,把教学过程中产生的数据变成了可以测量、可以优化的资源[3]。教学文档、学情记录、成绩数据被系统地保存下来,这为教学工作的复用提供了前提:当一份课程大纲可以检索、可以引用、可以套用,它就不再是写完即弃的孤本,而成为可以反复调用的知识资产。从"写一份文档"到"经营一个文档资产库",视角的转变,正是模板化的起点。
以教案写作为例。一位教师每周写两份教案,一学期约四十份:教学目标、重点难点、教学过程、板书设计,栏目年年相同,内容随课而变。把四十份教案的栏目结构抽出来,就是一份教案模板;剩下的工作,就是往模板里填每一课的具体内容。四十次重复压缩成一次抽象,省下的时间可以还给备课本身——用来琢磨一节课怎么上得更好,这正是知识工作者生产率最朴素的提升方式。
组织的知识传承,也系于这层转变。一个团队里最贵重的资产,常常锁在资深成员的个人电脑里:老教师退休,教案随人走;骨干调岗,经验归零。模板化把个人经验变成组织资产——结构留在模板里,内容沉淀在知识库里,后来者站在前人的结构上起步。追问一句:你的工作里,有多少属于"第一次做",又有多少属于"重复做"?多数人的答案里,重复的比例高得惊人。改善知识工作者效率的最大杠杆,常常藏在"少做一次"里——把重复的部分交给模板,人只保留第一次的判断与最后一次的校验。
这也回应了第4章的Skill化思维。第4章把"可复用的能力"封装成Skill:输入输出清晰、调用方式统一。模板做的事情与Skill同构——它把"可复用的结构"固化下来:占位符是它的输入接口,成品文档是它的输出,填写规则是它的调用约定。可以说,模板就是固化下来的Skill链:一个"课程大纲生成Skill",内部正是"模板+填数+渲染"的组合。会建模板,就是会写文档领域的Skill。理解这层关系,第4章的复用思维与本章的模板实战就打通了:同一个思想,在能力领域叫Skill,在文档领域叫模板。
什么是模板
模板(Template)是"带有占位符的固定结构"。以课程大纲为例:大纲的章节框架是固定的——课程基本信息、教学目标、教学内容、学时分配、考核方式;每个栏目下的具体内容是可变的——课程名称、学时、学分、教学目标的具体表述。模板把这两部分分开处理:固定部分写成结构,可变部分标成占位符,如{{课程名称}}、{{学时}}、{{教学目标}}。
再比如实训报告:报告的结构——实训目的、实训环境、操作过程、结果分析、心得体会——每届学生都一样,变的只是每届学生填进栏位的内容。把报告结构做成模板,学生拿到的是统一的骨架,教师批改时面对的是统一的版式,双方都省去了在格式上耗费的注意力。
由此得到模板化的核心动作:把"每次都一样的部分"固化下来,把"每次都变的部分"留成空位。模板给出的是骨架,具体内容留待填制。这个区分看似简单,却是一切模板化工作的起点:固化错了的模板,填出来的文档要么格式僵死,要么内容错位;留空留错了的模板,等于没有模板。
模板的三要素:骨架、参数、校验
一个可用的模板,包含三个要素:结构、占位符、规则。
模板之所以能"一次编写、处处调用",秘密全在它的构成里。把任意一个成熟模板拆开看,都能找到这三样东西。
结构是模板的骨架,即固定框架本身——大纲的章节顺序、表格的列定义、报告的段落布局。结构决定了文档的"长相",也决定了同类文档之间的可比性:评审者拿到十份同一模板生成的大纲,不用适应十种排版。
占位符是模板的参数,即可变内容的标记——{{课程名称}}、{{学分学时}}、{{考核方式}}。占位符是模板与数据之间的接口:数据从哪里来、以什么格式来、填到哪个位置,都由占位符约定。接口清晰,填制就顺畅;接口模糊,填制就混乱。
规则是模板的校验,即填写约束——哪些占位符必填、格式有什么要求、缺省时用什么默认值、取值范围多大。三要素缺一不可:有结构无占位符,模板退化成死文档,每次仍要整篇重写;有占位符无规则,填出来的内容各行其是,格式统一成了空话。模板的质量,最终取决于规则的质量——规则越清晰,填出来的文档越统一,校验的成本越低。
规则可以具体到什么程度?以课程大纲为例:{{课程名称}}必填且长度不超过三十字,{{学时}}必须为数字且与培养方案一致,{{考核方式}}缺省值为"平时成绩40%加期末60%"——这些约束写在模板里,生成时自动校验,填错的位置当场提示。
(如图14-1所示)骨架定义文档的形态,参数定义数据的入口,校验定义填写的纪律,三者共同作用,才产出合格的成品文档。
图14-1 模板的三要素:骨架、参数与校验
模板的价值与选型标准
模板化的价值,可以从三个角度衡量。其一,效率:一次建模板,多次出文档,第4章所说的"复用是效率之源"在文档领域同样成立;其二,一致性:同一套模板出的文档,格式必然统一,评审者面对十份大纲只适应一种排版,校对者检查十份报告只需核对同一组栏目;其三,质量沉淀:模板是"做得最好的一次"的固化——把一次精心打磨过的结构保存下来,后来的每一次填制都站在这次打磨的肩头。
教学资料里的高频文档,几乎都可以模板化:课程大纲、教案、实训报告、成绩记载表、考核方案,每类模板对应一类每学期都要重复的文档工作。但值得建模板的场景,需要同时满足三个条件:频率高(这类文档经常要做)、结构稳(格式长期不变)、内容变(具体内容每次不同)。三个条件都满足,建模板的收益最大;缺了任何一个,都要先想清楚再动手。
表格类模板是另一类典型:成绩记载表、实验数据表、考勤统计表,列定义就是结构,行内容就是数据。表格模板化的收益尤其直观——列结构定一次,往后的每一张表都在同一套列定义下生成,汇总、统计、归档都省去了对齐格式的功夫。
反过来看,有些文档至今没有人给它建模板,原因各有不同:述职报告一年一次,频率不够;课题申报书格式年年变,结构不稳;通讯录内容人人不同且更新频繁,连"内容变"这一条都满足不了。用三个条件筛一遍,哪些工作值得模板化,答案自然浮现。
效率、一致性、质量沉淀三重价值,对应三种不同的受益者:效率回报给填制者本人,一致性回报给审阅者与使用者,质量沉淀回报给组织与后来者。一套模板同时服务三类人,这正是它值得经营的原因。
抽象时机:重复三次,才值得抽象
理解了模板的构成与价值,下一个问题是:什么时候动手建模板?
Fowler在《重构》中提出过著名的"三次法则"(Rule of Three):同类逻辑第一次出现,先老老实实写出来;第二次出现,注意到相似之处,但仍然复制;第三次出现,才值得抽象成通用结构[4]。这条原则对模板同样适用:第一次做课程大纲,认真完成,理解需求;第二次做第二门课的大纲,发现结构几乎一样,开始留意哪些栏目是固定的;第三次做第三门课的大纲,才动手把固定结构提炼成模板。过早抽象的风险在于方向:只见过一两个实例就抽象,很容易把偶然当必然,把个案当规律,抽象出来的结构换一个场景就失效。
Parnas在1972年给出了模块化判据的经典回答:把系统分解成模块时,应当让每个模块内部的信息尽可能隐蔽,模块之间只通过稳定的接口通信[5]。这段论述发表于软件工程兴起的年代,对模板设计却同样锋利。模板的"接口"是占位符集合——外部只需知道{{课程名称}}、{{学时}}这些参数,无需关心文档内部如何排版;模板的"内部"是文档结构——只要占位符不变,章节顺序、表格样式可以自由调整,不影响填制方。判断一个模板设计得好坏,就看它的接口是否稳定、内部是否可改。接口经常变动,填制方就要跟着返工;内部僵死不可改,模板就失去了演进空间。
用Parnas的判据复盘一个常见场景:某学院把教案模板做成了"全校通用版",占位符只有课程名称与教师姓名——接口过于简陋,教学设计的差异无处安放,教师只好在"备注"里各显神通。接口的粒度决定模板的适用面:接口太粗,填不出差异;接口太细,填制负担沉重。合适的粒度,以"填制方需要表达的信息都能找到位置,不需要表达的信息不出现"为准。
(如图14-2所示)从重复到复用的演进是一个循环:重复出现,判断时机,提炼模板,入库复用,在使用中修订,修订后的模板再次入库。模板的生命力,来自这个循环的持续运转。
图14-2 从重复到复用的演进循环
模板的版本管理
模板一旦投入使用,就会面临改版:教务处要求大纲新增一个栏目,学院要求实训报告调整考核比例,专业认证要求补充课程目标与毕业要求的对应关系。每一次改版,都牵动所有基于旧版模板生成的文档。
因此,模板自身需要版本管理,至少做到三件事。第一,给模板一个版本号,改动即升版,并在模板中注明版本;第二,保留变更记录,写明每一版改了什么、为什么改;第三,生成文档时记录所用的模板版本,让"这份大纲由哪个版本的模板生成"可以追溯。有了这三条,模板改版的影响范围就能精确评估:哪些已生成的文档需要重出,哪些不受影响,一目了然。版本管理看似是工程细节,实则是复用的信用基础——模板的使用者敢于依赖它,前提是知道它何时变过、变成了什么。
改版与兼容之间需要权衡:小改(调整字体、微调措辞)可以向后兼容,旧文档不必重出;大改(新增栏目、调整结构)则应明确旧版本何时停用、旧文档何时换版。试想一个场景:教务处上半年发布V2.1版大纲模板,下半年升级到V2.2,新增"课程思政融入点"一栏。没有版本记录,教师无法判断手里的旧文档要不要重出;有了版本记录,一次查询就能圈定受影响的范围。版本管理的分寸,与三次法则同源——改版的冲动出现第三次之前,先别急着推翻重来。
在平台上验证
第二节 模板复用实战:教学资料一键生成
从知识库到生成器:教学资料填制工具
知识库的加入,让模板复用从"单点效率"升级为"体系效率"。散落在个人电脑里的历年教案、大纲、实训报告,上传之后成为公共资产;新教师接手一门课,先检索知识库里同类课程的资料,再套用模板生成初稿,上手的路径被大幅缩短。Lewis等人在2020年提出的检索增强生成(RAG)框架,正是把外部知识库与生成模型结合起来的代表性方案[7]——本书工具所做的,正是让生成的依据来自知识库里真实存在的历史资料,让工具把资料与模板组织成成品。
比如新学期要写"Python数据分析"课程的大纲,先到知识库里检索"Python""数据分析"两个关键词,历年教案、往年大纲、实训报告陆续返回——参考结构,核对栏目,再套模板生成初稿。检索让"做过的事"真正变得可见:资料进库之前,经验在个人电脑里沉睡;进库之后,经验在团队里流动。知识库与填制工具的组合,还带来一个副产品:教学资料的积累速度。往年资料一年一年沉睡,如今资料入库、检索、复用,每一届的教学实践都在为下一届铺路。
教学资料的内容质量,也有理论可以依循。Bloom在1956年提出的教育目标分类学,把认知领域的教学目标从"记忆"到"评价"分成六个层次[6]。这份分类学对模板设计有一个直接的启发:教学目标栏的填写规则,可以内置层次约束——课程目标是否覆盖了从知识记忆到综合应用的完整阶梯,模板校验时可以给出提示。规则的质量决定模板的质量,而规则可以来自教学法本身的积累。
用户流程:上传模板、解析结构、填制、导出
工具的完整流程,是"上传→解析→填制→导出→核对"五步闭环。
上传,是流程的起点,也是前提。把学校要求的课程大纲Word模板原样传上去——"真实模板"是前提:用工具生成一份自造的模板再自我验证,说服力有限;只有拿着教务处的官方格式,生成的文档才有交付价值。
解析,是工具理解模板的过程。工具读取模板,识别其中的占位符标记({{}})、表格与段落结构,把"骨架"和"参数"自动分离。工具识别占位符的依据,是模板里的标记约定——{{}}是最常见的写法,表格类模板则按单元格位置识别。识别结果需要人工核对:占位符有没有漏识、有没有误识。识别错了,生成必错——这一步的人工确认,是整个流程中最便宜的一次纠错机会。
填制,是数据进入模板的过程。课程名称、学时、学分、教学目标等字段,以表格形式批量录入,也可以逐份表单填写。数据与模板分离,是批量生成的前提:同一份数据表可以反复使用,换一门课只改一行。
录入数据时还有一个讲究:数据表的列名最好与占位符一一对应——{{课程名称}}对应"课程名称"列,{{学时}}对应"学时"列。对应关系越直观,填错的风险越低,批量生成时也越容易排查问题。
导出,是劳动兑现产出的过程。一次运行,生成多门课程的完整文档。批量生成的机制并不复杂:同一模板加不同数据,得到多份文档。它的意义在于,批量意味着同一份劳动换来多份产出——建模板的劳动只付一次,产出的文档可以有很多份,这正是第4章所说的"复利"。
导出环节还有一个容易被忽略的细节:生成的文档应当保留模板的原始格式——页边距、字体、页眉页脚,都要与教务处下发的模板逐项一致。格式保真是交付质量的最后一道外观关:内容再准确,格式走了样,评审的第一印象就要打折扣。
(如图14-3所示)五步流水线中,工具承担大部分批量劳动,人在第二步做确认、在第五步做核对,效率与质量在分工处交汇。
图14-3 教学资料一键生成的五步流水线
核对与审阅:模板复用的质检关
生成的文档必须核对,核对点有三类。其一,占位符是否全部替换:有没有漏网的{{}}残留,替换后的内容是否通顺;其二,数据是否填对位置:课程名有没有混进学时栏,教学目标有没有串到考核方式里;其三,格式是否符合要求:模板的版式、字体、页眉页脚是否原样保真。
核对是模板复用的质检关——自动化生成的东西,必须人工把关后才能交付。这与第8章的过程评分、第12章的信效度检验一脉相承:任何"一键"背后,都有一道"校验"。工具把重复劳动压缩到极致,也把错误的代价放大到极致:一个占位符识别错误,会随着批量生成复制到每一份文档里。因此,批量越大,核对越要认真;生成越快,校验越要前置。把校验规则写进模板(哪些字段必填、哪些格式合规),让工具在生成时就拦截一部分错误,人工核对只处理剩下的判断题——这样的分工,质检才有意义。
核对的方式也值得讲究。批量生成几十份文档时,逐字通读成本过高,更现实的做法是抽检加全检结合:占位符替换情况全量检查,工具可以自动列出未替换的占位符清单;内容正确性抽样复核;格式问题按模板逐项比对。把核对本身也流程化,质检关才不会因人而异。核对记录同样值得留档:哪一批文档由谁核对、核对了哪些项目、发现了什么问题,记录下来,既是对交付质量的交代,也是下一次改进模板规则的依据——质检发现的高频错误,应当回流成模板里新的校验规则。
复用的边界:僵化、过度抽象与上下文耦合
模板化的收益显而易见,边界同样值得认真思辨。复用的代价,藏在三个地方。
其一,模板僵化。结构一旦固定,就装不下例外:某门实训课的大纲格式与全校统一模板格格不入,某次考核需要临时增加一个环节。模板越"标准",对例外的容忍度越低。应对之道,是给模板留出"自由段落"之类的弹性空间,并把例外出现的频率记下来——例外频繁出现,说明模板本身该改版了。
其二,过度抽象。三次法则的反面,是第一次就抽象、抽象层级过深:模板套模板、参数叠参数,填制者面对二十个占位符不知所措。抽象的目的是降低使用成本,当模板本身的维护成本超过它节省的劳动,抽象就变成了负资产。判断的标准很简单:填一份文档,使用者需要理解多少规则?规则超过直觉,模板就该简化。
一个值得警惕的案例:某部门曾把活动通知做成模板,占位符多达四十余个,从活动名称、场地到签到方式一应俱全。结果填一份通知比写一份通知还慢——使用者要在四十个空位之间来回切换,稍有不慎就填错位置。模板的边界,在于它应当承载"结构",把"例外"留给自由发挥:把几十个字段的表格砍成结构加备注,填制反而更快。
其三,上下文耦合。模板总是带着创建场景的隐含假设:这套大纲格式里藏着某学校的栏目偏好,这份教案模板里预设了某门课的教学节奏。模板在自己诞生的场景里运转良好,换一个学校、换一门课,隐含假设失效,填出来的文档怎么看都不对劲。解耦的办法,是把模板里的假设显式化——把可配置的差异做成占位符或选项,让模板的适用范围清晰可见。
判断模板是否"耦合过深",有一个简单的观察法:把模板拿到另一个团队、另一所学校,看它还能不能直接使用。能用,说明结构足够通用;处处别扭,说明假设写得太死。这个观察法,也是信息隐蔽思想的反向检验——接口之外的内部假设越少,模板的迁移成本越低。
由此可以给出复用边界的判断标准,即三个条件:频率高、结构稳、内容变。三个条件都满足,值得建模板;缺了任何一个,先想清楚再动手——一次性的工作不必模板化,结构动荡的工作模板化之后会陷入反复改版的泥潭,内容也不变的工作直接复制存档即可。模板用得好是杠杆,用不好就是枷锁,区别就在这分寸之间。
回到本章开头的德鲁克式追问:模板化之后,人的时间去了哪里?答案指向判断——判断哪些结构值得固化,判断规则定得多细,判断生成的文档是否合格。工具负责批量,人负责边界;自动化处理确定的部分,人处理不确定的部分。这个分工,就是技能化与模板复用的完整答案。
在平台上验证
(如图14-4所示)平台页面中,上传模板、识别占位符、填入数据、批量生成的各个环节都在同一工作区内完成,全程无需编写代码。
章末小结与追问
本章把"模板化复用"做成了完整的闭环。第一节解决"为什么"与"怎么做":知识工作者的重复劳动是模板化的现实动因[3];模板的三要素——骨架、参数、校验——回答了模板由什么构成;Fowler的三次法则与Parnas的模块化判据,回答了什么时候抽象、抽象到什么程度[4][5];版本管理保证了模板在改版中依然可信。第二节解决"用什么做":教学资料填制工具把"上传、解析、填制、导出、核对"五步闭环落到了实训平台,智识通知识库让历史资料成为可检索的资产[7],Bloom的分类学则提醒我们,规则可以承载教学法本身的积累[6]。Krueger的软件复用思想[1]与"模板方法"模式[2],在这套工具里变成了教学日常的效率提升。
把重复交给模板,把校验留给人——这是技能化与模板复用的分工智慧。模板是结构的固化,校验是质量的防线,而判断何时抽象、抽象到什么程度,始终是人的职责。工具越强大,判断越珍贵。
工具的进步一直在压缩重复劳动的份额,与此同时,人的判断在产出中的权重反而上升——哪份文档值得做、做到什么程度、交给谁用,这些决定始终握在人手里。
留三个问题给你想一想:
- 模板的"三要素"里,为什么说"规则"决定模板质量?你能举一个规则不清导致模板失效的例子吗?
- 用三次法则审视你手头的一项重复工作:它出现第几次了?现在抽象,时机合适吗?
- 工具识别占位符后为什么要"人工核对"?如果跳过这一步,最坏的结果是什么?
参考文献
- [1] Krueger C W. Software reuse[J]. ACM Computing Surveys, 1992, 24(2): 131-183.
- [2] Gamma E, Helm R, Johnson R, et al. Design Patterns: Elements of Reusable Object-Oriented Software[M]. Boston: Addison-Wesley, 1994.
- [3] Siemens G, Long P. Penetrating the fog: Analytics in learning and education[J]. EDUCAUSE Review, 2011, 46(5): 30-40.
- [4] Fowler M. Refactoring: Improving the Design of Existing Code[M]. Boston: Addison-Wesley, 1999.
- [5] Parnas D L. On the criteria to be used in decomposing systems into modules[J]. Communications of the ACM, 1972, 15(12): 1053-1058.
- [6] Bloom B S. Taxonomy of Educational Objectives: The Classification of Educational Goals[M]. New York: Longmans, Green, 1956.
- [7] Lewis P, Perez E, Piktus A, et al. Retrieval-augmented generation for knowledge-intensive NLP tasks[C]. Advances in Neural Information Processing Systems, 2020, 33: 9459-9474.
数据与平台:本章实训绑定 zhenyuonline.cn 真实应用(智识通知识库 / 教学资料填制工具)。页面渲染图均为平台实测截图。
