培养模型
第一步,是要为我们的教学计划设计标识——标识会织在用不同颜色表征主人学业等级的衬衫上。具体如下:
软件开发新手
褐色衬衫
资格:所有学生的必经点
在资助项目中可获得的报酬:$xxx/小时
主要目标:熟悉商业应用中的词汇和工具,以及对软件开发文化的适应
学徒级软件开发者
绿色衬衫
资格:取得75项资质(或同等水平)
在商业项目中可获得的报酬:$xxx+2/小时
主要目标:掌握应用开发中的基本技能
资深软件开发者
紫色衬衫
资格:获得150项资质(或同等水平)
在商业项目中可获得的报酬:$xxx+4/小时
主要目标:获得独立的应用开发项目中的高级技能
软件开发管理者
蓝色衬衫
资格:获得225项资质(或同等水平)
在商业项目中可获得的报酬:$xxx+6/小时
主要目标:领导研发活动和与外部软件开发组织的合作
这里所说的资质,指的是iii级能力,资质掌握水平的定义如下:
1.概念和词汇(书本知识);
2.在得到指导的前提下对知识的运用能力(类似于自然学科中在实验室的工作);
3.独立的应用开发能力(类似于其他学科中的实地考察、案例研究等);
4.陌生环境中的应用开发能力(类似于实习);
5.在项目环境中指导他人进行开发的能力;
6.创造可供他人利用的材料和工具的能力;
7.能为此资质学科领域带来原创性贡献(如发明工具、创造算法、提出新概念等)的能力(通常在专业会议或刊物上首先提出)。
每个学生毕业至少需要获得64个学分,他们可以在每学期的3-15个学分中任意选择科目。因此教学计划必须考虑到这一点。为此,我们提出了能力水平的概念,也就是将每学期的15个学分对应到15个能力等级。一个学生要想在一个学期内拿到15个学分,可以在将3项能力掌握到等级5、5项能力掌握到等级3、15项能力掌握到等级1等组合中自由选择。
每个学生还需指定个人学习计划(Individual Education Plan,IEP),说明自己将在当前阶段(通常包括8周;或每学期分两个阶段)掌握哪些能力。IEP中的硬指标,是其包含的待学习能力必须反映7被指派给他们的项目相关的知识和技能。
因此,课程不是预先指定的。教师必须根据每个学生的IEP准备和实施对应的教学计划。如果IEP的要求超出了现有教师的专业水平,则外面的大师(世界著名的专家)会来接替。
我们会请求各种客户为学生提供实习项目,但无法保证客户的需求能完全覆盖要求的全部能力资质。因此,我们也会开展一些内部项目,如在商业世界中的一些非热点领域,人工智能、非标准语言(比如Squeak/Smalltalk)、嵌入式软件等等。
能力的跨度范围很大(如下表),必须保证学生根据自己的IEP总能选择到所有合适的科目。

表1
教学工具
我们没有标准的教科书,选择范围很大,比如,第一学期的书目表如下:
Steve McConnell的《Code Complete》第二版
David West的《Object Thinking》
Ken Schwaber和Mike Beedle合著的《Agile Software Development with Scrum》
Robin Williams的《The Non-Designer’s Design Book》第二版
Peter Coad、Eric Lefebvre和Jeff DeLuca合著的《Java Modeling in Color with UML》
Kent Beck的《Extreme Programming Explained: Embrace Change》(第二版)
Frederick P. Brooks, Jr.的《The Mythical Man-Month》。
Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides合著的《Design Patterns: Elements of Reusable Object-Oriented Software》
Martin Fowler的《Analysis Patterns : Reusable Object Models》
Alistair Cockburn的《Writing Effective Use Cases》
Alistair Cockburn的《Agile Software Development》
Jerry Weinberg的《Systems Thinking》
Jerry Weinberg的《The Psychology of Programmers》
Linda Rising的《The Patterns Literature》
其中一些(如《The Mythical Man-Month》)作为经典推荐,其他一些(如《Agile Software Development with Scrum》)则是因为教学计划对这些内容的强制要求。我们采用Scrum作为教学和项目中的管理方法。还有一些,被推荐原因是我们认为这些书可以帮助学生了解创新在产业标准和生产工具进步中的应用——比如《Java Modeling in Color with UML》,讲述了颜色在标识原型模式(archetypal pattern)、反模式(anti-pattern)中的应用。
学士学位所要求的非SDA课程包括:
文科专业标准的核心课程;
SDA特别推荐的课程,如技术写作、人类学研究方法等等;
SDA定义的但在其他系教授的课程,如现代哲学和哲学解释学。
通过鼓励学生在SDA范畴内完成各项课程的学习任务,我们希望能在每天的交流中持续、反复强化跨学科理念。每周的读书小组会议,也为跨学科问题讨论提供了机会。星期三下午或晚上,我们还会聚在一起讨论描绘软件开发历史中激动人心时期大人大事的图书(如《Dealers of Lightning》和《he Dream Machine》)、网络发展过程中做出了巨大贡献的人物(如Ted Nelson、Jason Lanier)、个性测试(如Meyers-Briggs Type Index,几乎每个人都作过),甚至与计算机相关的一些散文(如Alan Kay的《The Early History of Smalltalk》)。会议可能在咖啡馆、实验室举行,可能是在白天,也可能安排在晚餐时(因为需要和学生们课程外的时间调配)。