今天的大学教育,是否足以让一个软件开发人员应对日常工作?如今,敏捷软件开发正以前所未有的速度在业界大行其道,开发人员的技能也需要得到进一步拓展。本文中,Dave West 博士探讨了一种正在逐渐成为主流的训练方式——“系统开发”,它强调人性化、匠艺、设计、创意、创新和新事物的涌现。如今大学中计算机学科的训练方式,其价值系统由形式主义、控制、工程和决定论【译注 2】构成,Dave West 提出的训练方式正与其大相径庭。在他看来,系统开发应被称为“构建现实” i ,因为它基于一个基本前提:系统开发人员所做的一切,都要与现实整合在一起,并随之发生变化(或可称为重新配置);而现实又是一个包括人、组织、社会政治与文化体系在内的复杂系统。从自己的经验中,West 提出一种更好的教学方式——使用可被称为“bottega”【译注 1】的工作室式教学,以替代如今乏善可陈的教室和实验室式教学。目前,West 博士正在 Santa Fe 学院使用这种方式。
软件开发这个职业仍未成熟。
没错,我们在流程、质量、职业精神方面的提升已经迈出了很大步伐,而且我们还能交付一些具备高度复杂性、非常可靠并且可用的软件。然而,作为一个行业,我们仍然努力想达到 30% 至 40% 的“成功”率,要想做到“在给定的时间和成本下成功”,这个比率甚至更低。这个隐疾的产生,有很多因素:错误的比喻(工程)、野心(我们已经解决了简单的问题)、改变的速度(技术和世界),以及对技术与人类自身这两个系统之间边界的混淆。
有一个很重要的因素:我们在学校学到的知识(以及我们学习的方式)与我们所从事职业的要求,这两者之间的鸿沟正在不断加宽、加深。毋庸置疑,过去我们创造的教学方式,更符合当时的实际需要。而且我们也创造出了一套体系,通过过去的方式来教育学生。
划定疆域
ACM-AIS-IEEE 计算机课程 2005 年度报告 ii 指明:电子工程(Electrical Engineering,简称 EE)、计算机工程(Computer Engineering,简称 CE)、计算机科学(Computer Science,简称 CS)、软件工程(Software Engineering,简称 SE)、信息技术(Information Technology,简称 IT)和信息系统(Information Systems,简称 IS)这六门学科之间有很复杂的重叠。六门之中,前三门(EE、CE 和 CS)重点放在机器以及与机器相关的理论上。(CS 也关注通过操作系统运作的虚拟机,还有语言编译器)。软件工程和信息系统所教授的知识与软件开发行业比较接近,而信息技术主要讲授有关基础架构,特别是网络、安全和管理方面的知识。
ACM 目前正在制定新的文档,提出一门新的学科——系统开发(Systems Development,简称 SD)。系统开发融合了多个 ACM 分类包含的技能,包括:来自 CS 的编程;来自 SE 的软件、流程和工具;以及来自 IS 的、对应用的关注。除上述内容之外,SD 还包括:对(通用的、组合而且复杂的)系统的相关扩展知识、对计算原理以及相关科学的历史和原理的深入讲授、对业务和管理的深入讲授,以及诸如哲学、数学、人类学、艺术、人文学科等其他更多课程。
ACM 的六门学科都注入了同样的价值体系,关注形式主义、控制、工程和决定论。而 SD 与之截然不同,它强调人性化、匠艺、设计、创意、创新和新事物的涌现。系统开发应该被称为“现实构建”,因为它基于如下基本前提:系统开发所做的每一件事情,都必须跟一个现存的复杂系统紧密相关,而且要改变该复杂系统;这个复杂系统是由人、组织、社会政治和文化构成的,我们称之为——现实。也就是说:SD 基于现实,而且要改变现实。
Mastery
理想中的建筑师,应该是一名文学家、一个技术精湛的工匠、一名数学家,熟悉历史研究,勤于钻研哲学,懂得音乐,粗通医学,他还应该是个法学家、略懂星相学,并会做天文计算。 ——古罗马建筑师 维特鲁威 公元前 25 年
维特鲁威的建筑师必须是饱学之士——对现有的学科都略知一二,同时在一些特定领域极为精深。这个要求也适用于职业的(精通级别的)系统开发者。(不过要注意的是,当今没有人能够熟悉所有现有的学科。)要想走上精通之路,必须经过下列七个步骤:
- 对概念和相关词汇的机械记忆。
- 在别人的指导下应用知识。
- 可以独自应用知识。
- 在全新的环境中应用知识。
- 具备指导他人的能力。
- 具备教授他人的能力(无论受众多寡)。
- 具备做出原创性贡献或扩展已有领域知识的能力。
职业人士在整个知识体系中应该展现出到第 4 个步骤的能力,而在一些特定方面应该具备第 5 到第 7 个步骤的能力。除步骤 1 之外,精通之士应该可以依靠自己的能力去主动完成一些事情,而不是仅仅被动地知道某些事情。后者的偏见正好佐证了意大利历史哲学家维柯(Giambatisa Vico,1668-1774)的话:“毋庸置疑:人,仅由其创造之物所塑造。”(“We are sure only of that which we build.”)
所有现有的知识
之前两节中提到:相对以往来说,系统开发涉及知识的广度和深度要更加宽阔和深入。当然,这些知识不可能像字面上说的覆盖“所有现有的知识”。不过,对于一个拿到上述 ACM 六种专业之一的硕士学位证的研究生来说,他所学到的知识面,最多也就能达到系统开发所要求的二分之一。
这里我无法一一描述涉及的知识领域。【部分原因是由于目前仍处在定义和去粗取精的过程,为 2009 年春末要开启的第一个软件开发 Bottega 做准备。】我想多谈一谈关于模块化和学习环境的话题。
要想根据以往的学分小时、课程、学期、学年等方式来讲授“系统开发者”所应掌握的内容,几乎是不可能的。两倍内容,这就意味着要想拿到学位,花费的时间会从 6 年变成 12 年,根本无法实现。我们没有使用学分小时或是课程的方式,而是提议将知识领域划分为更为细化的具体知识单元。在新墨西哥 Highlands 学校的实验中(后文所示),我们使用“能力素质”表示某个知识单元。
可以用马赛克来比喻知识单元(能力素质)及其之间的关系。马赛克表示知识的整个领域,而每一小块“瓷砖”表示单个能力素质。要注意:每一块“瓷砖 ”不仅仅代表知识,也包括了实践(知识的应用)、技能和经验等各个方面。正如一幅图画所展示的,马赛克有其主题,构成马赛克的各组瓷砖之间存在模式关系,这些关系就体现了整幅马赛克的主题。每块“瓷砖”都有一个颜色,也就是与这块“瓷砖”相关知识关联最紧密的学科或领域。哲学、人类学、文学、数学、历史、自然科学等等学科的知识,散布在整幅马赛克图画之中。让人从整体上了解多门学科知识之间的关系,同时达到了跨学科的知识整合,这在基于单一课程的教学方式中是无法达到的。马赛克提供了对于要掌握的整个领域的总体概观。主题 v 则突出了重点,同时没有丧失非重点元素之间的关系。带颜色的瓷砖展现出各学科的贡献,同时在上下文中明确表示出跨学科的关系。学生们不仅知其然,而且知其所以然,同时能够马上将学到的知识应用到到实践中。
这幅马赛克画有多大?要由多少块“瓷砖”构成?
在新墨西哥 Highlands 学校(报告见后文),我们为系统开发“专业”定义了超过 500 种“能力素质”。这个数字还不包括文科和其他必修的课程。基于 Highlands 的经验,再加上对于“系统开发”“能力素质”的研究,产生了一幅由 1000~1500 块“瓷砖”构成的马赛克画面。
几乎没有人能够拒绝学习这么多知识的机会(作为教育工作者,我们经常要面临向课程中加入更多主题的诱惑);可大家都会提出一个很实际的反对意见:你不能将如此广泛而又深入的知识放入一门课程之中,然后指望学生用常见的 6 年时间掌握这些知识、并获得学士和硕士学位,这太不现实了。然而,这个反对意见根本没有考虑到人的学习能力。实际上,该意见基于下面的假设:一个人所能学到的知识,可以压缩到 16 周的课程,而且每周 3 次 50 分钟左右的课时之中。
团队或个人学习某一门指定知识的速度,与他们开发完成某个软件项目的速度不同。敏捷开发认为:许多小瓷砖构成的马赛克图画与“项目待办事项列表”类似。在一段固定的时间范围中,每个学生从“产品待办事项列表”中选择一系列“能力素质”,并决心在这段时间内掌握,他所做的选择就类似于“sprint 任务列表 ”。在 Highlands 我们就称之为个人学习计划(individual learning plans——ILP),并使用为期 6 周的时间盒。所有的精通之道,“实践”是首要的必经之路。因此,很有必要将 ILP 与实际的项目工作结合起来,最好是真实的项目。每个学生可以自己决定自己的个人“学习速度”,这样就可以规划出要用多久完成学业了。
学习速度并不仅仅由个体差异决定,适当的环境可以使其大幅提升。
Bottega(教室)
不妨考虑用工作室——bottegavi vi 替代如今乏善可陈的教室和实验室,达芬奇就在这样的地方学习和工作。
- 拥有“店面”,货品和服务生产出来后直接交付给付钱的顾客。
- 工作室以技艺至上,为了提升和支持技艺,大家打造工具、发现技巧,并将技艺教授给学徒们。
- 这是一个喧闹的地方,多个项目和活动同时进行,墙上和工作台上布满了正在进行中的工作。
- 这个地方充斥着技艺要用到的工具。
- 有休息之处,以及饮食之所。
- 这是一个智慧的中心,是大师、科学家、思考家的“必去之处”。当地的大师和熟练工匠们管理这个中心。
- 这里是革新与创造的源泉!
- 这里可以很自然地形成跨学科的学习环境与气氛,同时理论与实践的混合难分彼此。
- 这里充满了音乐、对话、谈笑,甚至是大声的争论。
- 这里分享食物和水,也许还包括睡眠,甚至可能分享爱 vii 。
Bottega 有意模仿了敏捷软件开发提倡的理想工作环境:开放、很多的白板、很多沟通产物、便于移动、协作,社会化。要想取得最好的效果,学生们必须花费大量时间呆在 bottega 中,最好是他们绝大部分的时间。Bottega 的运作方式就像是“只有一间教室的学校”,每个人,无论掌握程度高低,都在同一个地方,而且能看到环境中所有的东西。如果屋子里某个地方发生了有趣或是重要的事情,学生们可以坐着椅子滑动到那个地方并参与进去。在这样的环境中,很多知识不知不觉就被吸收了,就像是海绵吸水那样的渗透方式。由于之前已经完成的非自觉式“背景学习”,如果某个学生需要有意学习或是应用某些知识,这个过程可以进展迅速。
个人责任感、截止日期、理解客户并使之满意,这些都是成为大师的要素。开发商业产品,提供给学生教育和体验的机会,让他们有机会走上精通之路。这种理想化的环境能建立起来么?能否维持?效果又怎么样呢?
经验报告——新墨西哥 Highlands 大学
2004 年 8 月,34 名学生参加了新墨西哥 Highlands 大学一个与系统开发相关的特别计划,这些学生覆盖了大学新生到研究生的范围。学位计划没有具体的课程。学生们在他们的“专业”中要掌握 500 多种“能力素质”,此外还包括通用课程以及一些文科课程,这样在毕业时就可以拿到艺术学士学位。这个计划是基于学徒制的,计划中每个人都会按照真实的时间要求,开发由客户掏腰包和实际使用的软件,并以此赚取报酬。50% 的学生是女性(这对计算机相关的学位来说很特别),60% 多是少数族群,并且几乎 80% 的学生在经济上都不富裕。Pam Postal 和 Dave West,这两位全职的教师设计并运作了这个计划。国际知名的开发者(比如 Linda Rising 和 Ron Jeffries)访问了该计划,并与学生们一起工作(结对编程),通过手把手的指导和传授其他类型的课程,奉献出了自己的专业知识。所有的开发工作和指导都是在“只有一间教室的学校”中发生的。我们的工作室环境中有:岛状工作区域,布满各面墙的白板、硬面地板和带有滚轮的椅子。沙发,冰箱和微波炉,这些设施也为大家提供了方便。大量的时间花在了促进“文化和集体”的沟通上。他们还为新人的加入和学徒水平的提升准备了特别的仪式。在迭代的回顾和仪式上,他们会一起吃点家常便饭,有时会是特别烹制的菜肴。不同颜色的衬衫标明了不同的学徒水平。这个计划独一无二的 Logo 在人们之间建立起了身份感和认同感。
头上带有横线的 X 乘以 10,表示该计划的目标,希望毕业生的职业素质要十倍于平均水平。软件是我们的媒介,(精通)技艺是我们的目标,人是我们的关注点,系统是我们的视角,敏捷是我们的流程。
在第一个和第二个学期之间,课程的新生保持率为 100%;而在一般的大学中,同样的时间间隔,保持率为 50%。又有 50 名学生,大多数是新生,要求加入该计划在 2005 年秋季的课程。计划第一年结束后,7 名从一开始就加入的学生获得了全职的雇佣合同,2 名进入了研究所,有一名学生同时满足了获得计算机科学硕士学位的所有条件。8 名学生共同发表了论文,并在洛杉矶的 OOPSLA 和丹佛的 Agile 研讨会上发表演讲。
从这第一年(也是唯一一年 viii )的计划中,我们获得了如下经验:
- 学生们可以在更短时间内学到更多东西。基于这次的经验,我们相信:即使是一般水平的大学新生,也可以在不到 5 年的时间里学到所有“系统开发”相关的课程(两倍于一般的 6 年教育)。
- 学生学习和理解的深度超出了预期。
- 学生可以快速进入到自主的学习过程中。
- 学生会选择、安装和配置自己使用的工具。
- “强烈的共同归属感”,“人的价值(软件由人开发、为人服务)”、“开放、协作的学习环境”,这三个因素被女性学生反复提到,并认为这是她们加入并留在计划中的主要原因。
- 学生们不仅学到了技术技能,同时也学到了团队协作和项目管理方面的技能。
- 所有项目的所有因素都由学生管理,而不是教师。
- 有些计算机科学方面的教师,过去反对该计划,到第二个学期时反而成为了积极的参与者。
- 学生平均每周在工作室中花费 30 个小时的时间。
- “喧闹”的环境没有分心,反而成为了资产。
- 根据我们真实的客户反映,学生工作成果的质量与职业人士的水平相当。
- 即使是最稚嫩的学徒,也可以为项目做出有价值的贡献。他们根本没有阻碍或是拖慢项目进度。
- Pam 和 Dave 平均每周要在工作室中花费超过 70 个小时。(长期来看,这样的时间投入无法持续。)
计划取消之后,学生们发起了一个签名活动,并与新墨西哥州州长 Richardson 的职员们举行了会议,同时争得了全国知名人士的支持,学生们是在之前的会议上与他们相识的。虽然没有影响最后的结果,但是这让人们坚信:该计划应该继续实施,而且有人努力在另外一所大学复制该计划。
关于该计划更详细的报告,已经于 2006 年发布在 InfoQ 上:经验报告──新墨西哥Highlands 大学的敏捷开发学徒计划。
继续前行——Transcendence Corporation,Santa Fe 学院和Santa Fe Complex 计划
Transcendence Corporation 是在 Highlands 计划进行时,基于 Highlands 的经验成立的;要成为学徒计划的合同代理公司。(根据州立法律,大学禁止参与类似的工作合同。)Santa Fe 学院是一个很小的(学生少于 2000 人)文科学院,在美术和表演艺术科系上有很强的实力。Santa Fe Complex 计划提供了类似 bottega 的环境,在数学、自然科学、可视化、基于代理的建模、应用复杂性研究,以及“艺术与科学之间的交叉”等方面的专业知识。Santa Fe 学院在 2007 年秋季创立了类似上述描述的计划。在 2008 年秋季,该计划将被重新修订为基于“能力素质”的 5 年制科学硕士计划。
到 2008 年秋季和 2009 年春季,三个组织将协同工作以达到下列目标:
- 召集感兴趣的教育工作者和职业人士,成立工作室,以完成上面描述的“课程马赛克”的完整图景。
- 提供以 bottega 风格为目标的工作室,让大学和中学高阶预修班的学生们参加。
- 首批招募 50 名学生,包括至少 10 到 15 名高中生,还有 10 名来自大学的“转系学生”。
- 征求项目(基于 Highlands 的经验,我们提供离岸项目的费率,同时保证更高的质量)、内部实习和外部实习机会。
- 建立与组织的赞助机会,特别是国内和国际的咨询公司,他们苦于无法招聘到合适的毕业生,因此一直被迫创建内部的训练营和训练计划。
- 在 2009 年春末、夏初启动第一个 bottega。
任何有兴趣加入这个计划、与我们一起工作的人(特别是课程工作室、签约项目工作或是赞助关系这方面的人),欢迎尽快与作者接洽。
关于作者
Dave West 有多年软件开发经验,其角色跨越了程序员和 IT 总监等多个角色。在过去的十五年中,他身跨咨询和学术两界。目前是 Santa Fe 学院的业务、创新和技术教授,之前在新墨西哥 Highlands 大学和 St. Thomas 大学担任教职。他自己取得了多个学位,包括亚洲哲学学士学位(Macalester 学院)、计算机科学和文化人类学硕士研究生学位(Wisconsin-Madison 大学),还有认知人类学的博士学位(同样在 Wisconsin-Madison 大学获得)。他是《Object Thinking》一书的作者,并即将完成自己的第二部书稿,主题关于“重新创造软件开发”。他所拥有的专业知识专注于面向对象、敏捷、设计和变革等领域。
注解与引用
注1 :我第一次遇到这个词汇及其想法,是在Christiane Floyd 等人所著的《Software Development as Reality Construction》一书中,该书由Springer-Verlag 于1992 年出版。
注2 :数据来自Computing Curricula 2005 – The Overview Report. Copyright © 2006 by ACM and IEEE.
注4 :我将马赛克画视为抽象而不是具象的艺术,一个主题会由一组瓷砖构成,描绘出一个关注点,同时又不丧失与整体的关联。
注5 :我对bottega 核心的描述,来自于Fritjof Capra 的出色书籍《The Science of Leonardo》,2007 年由Doubleday 出版。这些描述也出现在其他许多出版物中。
注6 :希腊人认为:教育(Paideia)应该由贵族阶级从事,同时认为贵族为希腊人的文化和理念赋予了理智,而文化和年轻人也就“融入”了典范之中。从古代开始,爱情在这个过程中起到了重要作用,大多数城市的成年贵族受到鼓励,与接受他们指导的年轻人们堕入爱河。——维基百科。【译注3】
注7 :有必要说一下为什么这么好的计划只推行了一年,也是为了说明计划的中止与其本身毫无关系。这是个不那么让人高兴的故事,也很难完全描述清楚一个不负责的人如何背信弃义。在校董事会通过了计划并批准预算两个月后,还是这个董事会,竟然雇佣了一个毫无教育背景和专业知识的政客担任董事长。根据董事会的记录,该董事长的首要目标是改变教职员工的种族构成。为了达到该目标,董事长想尽办法向拥有终身教职的“外来”教师施加压力,赶他们走;同时不公平地拒绝教师们终身教职的申请,非法雇佣管理人员,还有其他种种恶劣行径。他的行为使得学校被美国大学教授协会(AAUP)制裁,诸多失败的诉讼让学校损失了数百万美金。最后,该董事长被解雇了,目前正在等待起诉,因为他在做州立议会参议员时,涉嫌非法收受联邦建筑项目的回扣。回到过去,教师们领导的新计划正处于此人的打击列表中。当他发现自己无法破坏该计划时,董事长强令终止该计划,而且没有经过任何教师、董事会和学生们的讨论、建议或是许可。
【译注1】bottega 是意大利词汇,代指年青艺术学生向艺术大师学习时所在的工作室,尤其用来强调工作室中学生或是助理使用的部分。该词汇还用来代指另 外一种工作室,其中由一些助理帮助一位画家或是雕塑家完成一件艺术品,这件艺术品最后的署名权属于工作室的监管者——大师级艺术家。在文艺复兴时期,佛罗 伦萨大约有30 个bottega,其中最著名的由列奥纳多•达芬奇领衔。
【译注2】决定论(determinism),认为个人并无选择个性或行为的自由, 因为一切都由其背景﹑环境等所决定。
【译注3】“文化”(culture) 一词来自拉丁语。在德语中有两个词和文化相对应, 即Bildung(可解释为“教育、文化、文明”[education、culture、civilization]) 和Kultur。而希腊语 Paideia(相当于拉丁语 humanitas) 似乎涵盖了这两种意思。亚里士多德曾在《伦理学》、《政治学》中对希腊人的paideia 洞察至深。伊索克拉底也宣称:“我们所称的 希腊人是paideia 上的一致,不是血统上的一致”。Paideia 是每一个希腊人都必需接受的文化教育。古代教育史权威马鲁(H.I.Marou) 说 Paideia 就是:“不论希腊人在哪里安家落户……他们首 要的任务是建立他们自己的机构,他们的教育设施——初级学校和体育馆”。就是这些学校和体育馆在教授那些希腊人、非希腊人如何像希腊贵族一样生活。这种教 育方式可以说是希腊式生活的入门,它造就了一批精英人物,这些精英影响了几代知识分子。学生们学习荷马史诗和柏拉图哲学,结果,Paideia 成为联系希 腊世界强有力的纽带。” 因此Paideia 几乎完全等同于我们今天所讲的文化理想,在这个意义上,Paideia 可以定义为希腊教育的理想和目的,是为教育过程的终极目的所提供 的优雅、美德、高贵和巧妙的混合物。耶格尔使用了Paideia 这一概念表现古希腊文化的真正精神。这种通过理想教育来达到某种理想的观念,使今天的教育 观念受到挑战。对于我们来说,教育的目的主要是为了获得某种简单的职业技术教育,缺乏那种高贵的、浪漫的理想。Paideia 为随后的西方二千年教育奠定 了基本模式:就全部人生而言,它强调精神和物质两方面的教育。如尤维纳尔(Juvenal,约62-142) 所言:“健全的心智存在于健全的体魄之中”。 Paideia 造就了古典人文主义。马鲁是以这样的言辞来叙述人文 主义特征的:“这意味着在整个历史时期,每一代人的心灵都有一个基本相同的本质,使得联系和真正的交流变得更为容易……。在一种古典文化里,所有的人都有 一种他们羡慕和模仿的共同的精神财富:同样一些准则、同样一些比喻、同样一些想象、同样一些词语——甚至同样一些语言。 ” Paideia 是评估希腊文化的基础,在Paideia 的影响下, 通过文学、哲学、史学、艺术等因素的混合形成了独具特色的希腊文化。这种新文化以苏格拉底问答教学为肇始,一直到柏拉图《理想国》中达到巅峰。
阅读英文原文:"Systems Development": a New Discipline for a New Education 。
给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家加入到 InfoQ 中文站用户讨论组中与我们的编辑和其他读者朋友交流。
评论