从设计模式开始,已经有很多人尝试总结了各方个面的很多模式。不管是写的人多,读的人也多。甚至考的人也多。数年前去IBM面试实习生,Mentor问我的问题就是知道什么是Visitor模式不。但是模式为什么出现,这些牛人为什么花这么多时间精力去讨论,去总结,我还是最近才开始有所领悟。
事情的起源是公司内部的一些讨论。我们公司(ThoughtWorks)是做敏捷咨询的。很多咨询师都是非常有经验的开发人员,但是做开发有经验未必做咨询有经验。在国内做过几个大的咨询项目之后,不少同事都有一些咨询方面的经验收获。个人都想做一些总结,以帮助咨询经验不多的后加入者。领导层也非常支持,觉得这个事情非常好。
我想很多人都有类似的“文档化经验”的想法吧。但是这种事情一旦落实到如何去做的时候,就争议颇多。有人就建议,不如来一个工作手册。把第一天做什么,第二天做什么都写下来。此论一出立马引来非常多的反对。反对的意见是非常有道理的,如果按照这样的做法做下去,只会有两个结果。要么,实践者变得僵化,没法给客户提供他们真正要的价值。要么,按照手册去做解决不了客户的问题,客户下次就不请我们了。总之,这种记录“我们过去是怎么做”的东西都觉得没什么用。大家最常提的一个说法就是,“每个地方的情况都不一样”。
既然这种包含太多工作细节的工作手册不行,那么我就来个Check List吧。把咨询中能够用到的工具都列出来。比如说,团队访谈,比如说,复盘。这个说法呢,大家都觉得行。至少在研究问题的时候可以把Check List看看。这种做法其实是效仿XP。极限编程其实就是一个Check List,包含了各种有用的Best Practices。这种做法又很类似Pattern,包含了各种各样的经典的应对之策。
所以模式是什么?模式就是一种“记录经验”的工具。无数前辈大拿觉得自己有经验可以和整个行业共享,他们选择的方式就是模式。但是,模式在实际的应用效果中是并不尽人意的。最主要的问题就是模式的误用。而这种误用的根源,我觉得就是他们的名字。模式本身的内涵是非常丰富的,完整的模式包括Context,Solution, Forces, Resulting Context。但是统领所有内容的标题却只是Solution。这样就容易让人只记住Solution,而忘记了它所适用的场合。或者因为不是完全理解适用的场合,而在适合的场合错过了应用模式的机会。
另外一个缺点是模式的整理不是按问题分类。经常我们会发现,对同一个问题,其实有好几个适合的模式。比如,提供了一个扩展点,我们既可以用Template Method,也可以用Strategy。但是由于模式是按照解决方案分类的,这样就没法对问题进入深入的讨论。而我们在应用模式的时候,首先面对的是手上的问题。从问题,到解决方案,这才是真正的经验所在。而模式本来的意图就是“记录经验”,却把这经验最重要的一部分没整理好。并不能说模式没有包含这一块的内容,好的模式书都有对什么问题适合什么模式的深入讨论。只是问题出在了整理方式上。
James Coplien经常强调一个Pattern Language。其实就是尝试把Pattern按照其服务的Context组织成一个Language。有点把模式按照问题组织起来的意识。但是他归纳的Pattern Language都比较高层,比如说Organization Construction Pattern Language。但是我觉得对于具体问题更好。比如说,项目上要培养新人怎么办?这个时候就可以去比较DayCare和PairProgramming这些组织模式在处理这个问题上的适用性。
所以我觉得很多模式,都应该按照所处理的问题做一个重新的整理。整理出来的结果就是一个“问题清单”。我觉得这比“模式清单”要有用的多。即便这个问题清单不去写解决方案,光是深入地讨论这些问题就非常的有价值。问题分为两类,一种是错误,那么我们可以“有则改之,无则加勉”;另外一种是常见的挑战,那么我们可以在真正遇到的时候敏锐地发觉我们已经有前人的经验可以利用了。
虽然这似乎只是认识上一小步进步。但是让我却非常激动:)最近对组织模式非常感兴趣。下一篇就从问题入手,尝试把组织模式给重新整理一下。Oh了。
分享到:
相关推荐
《模式识别与机器学习》是一门深入探讨...通过这门课程,学生不仅能够掌握模式识别和机器学习的核心概念,还能了解到最新的研究进展,具备解决实际问题的能力,为未来在人工智能领域进一步深造或工作打下坚实基础。
在探讨基于问题解决的深度学习模式时,我们首先要了解深度学习本身,它是一种高级的学习过程,让学生不仅仅停留在知识的记忆层面,而是深入理解概念,发展批判性思维,并将新知识与已有知识结构进行融合。...
总而言之,《模式识别与机器学习》这篇论文深入剖析了这两项技术的理论基础、主要算法和实际应用,为读者提供了一个全面了解人工智能前沿的窗口。通过阅读和理解这篇论文,我们可以更好地掌握这一领域的核心知识,并...
在深入探讨“以问题为导向的小学数学深度学习模式”之前,我们先了解在传统小学数学教学模式下,教师扮演着主导角色,学生思维通常被教师牵引,往往缺乏自主和深入思考的机会。这种模式下,学生对数学知识的理解和...
电子书包环境下的个性化学习模式建构是现代教育技术发展的重要方向,它旨在利用电子书包这一新型教学工具,实现对学生个体差异的充分关注和有效支持。电子书包,即通过移动设备(如平板电脑或智能手机)承载教育资源...
《模式识别与机器学习》(Pattern Recognition and Machine Learning,简称PRML)是机器学习领域的一本经典教材,由...通过学习这本书,读者可以深入理解机器学习的原理,掌握模式识别的技巧,并有能力解决实际问题。
【模式识别与机器学习】 ...通过这门课程,学生将掌握模式识别和机器学习的基本概念、核心算法和实际应用,培养他们在实际场景中运用这些技术解决问题的能力,为未来在人工智能和数据分析领域的工作打下坚实基础。
本文将就小学数学深度学习模式中的问题解决策略进行深入分析,探讨如何在教学过程中应用这一模式,以提高儿童的学习效率和理解深度。 首先,我们需了解什么是问题解决和深度学习。问题解决的教学模式强调通过问题...
互联网新平台的泛在学习模式研究与实践,是当前信息技术与教育领域融合发展的热点话题。泛在学习(Ubiquitous Learning)或随时随地学习的模式,强调学习者可以在任何时间、任何地点、通过任何方式获取所需的知识和...
策略模式是一种经典的设计模式,通过鸭子问题,可以让学习者更好地了解设计模式的概念和实现。策略模式的主要思想是定义一系列的算法,并将每一个算法封装起来,使它们可以相互替换。这样,算法独立于使用它的客户而...
在模式识别和机器学习领域,了解考试范围和考点至关重要。以下是对国科大模式识别和机器学习考试提纲的详细解读和知识点总结: 一、模式识别 模式识别是机器学习的一个重要分支,涉及到模式的分类、回归和聚类等...
参观者在展览会上的学习和创新行为也反映出展览的基本功能之一:交流和传播信息。 本文基于国内外关于展览知识传播的研究文献,运用SEM来建立参观者学习与创新行为的模型。 以深圳机械展览会为例,验证了模型中路径...
- 学习设计模式需要了解模式的意图、解决的问题、使用场景、解决问题的方案以及结构和关键代码。 - 应用实例的理解对于深入掌握设计模式至关重要,包括生活中的例子和软件中的例子。 - 分析每个设计模式的优缺点...
设计模式 学习设计模式可以帮助你提高软件设计能力,编写更清晰、可维护的代码。以下是一些有效的学习策略和步骤: 1. 理解基本概念 什么是设计模式:了解设计模式的定义、重要性和分类(创建型、结构型、行为型)...
在这个模式中,课前学习要求学生主动预习和了解课程内容,课中学习则要求学生积极参与讨论和实践操作,课后学习则鼓励学生进行复习、深入研究和创新实践。通过这种方式,学生不仅能够更加深入地理解计算机科学的核心...
在智适应学习模式中,学生能够通过智能题库、智能分析等工具,实时了解自己的学习情况,从而更加积极主动地投入到学习中去。 在这一变革过程中,中职院校的角色也正在发生改变。为了适应新的教育模式,中职院校需要...
在探讨小学道德与法治课堂深度学习的PRE教学模式初探中,首先需要了解PRE教学模式的含义和具体操作。PRE模式是一种以学生学习过程的三个阶段为核心的教学模式,这三个阶段分别是准备阶段(Prepare)、研学阶段...
文章首先指出了当前翻转课堂存在的问题,然后提出了深度学习与翻转课堂融合的必要性和可能性,并构建了“四段,一平台”的翻转课堂教学模式,最后通过教学实践证实了该模式的有效性。以下是对该文章内容的知识点梳理...
模式识别是人工智能的一个重要分支,它通过模拟人脑的认知过程,使用计算机分析和处理数据,以实现对现实世界中各种模式的描述、...掌握这些概念和方法对于深入学习模式识别乃至更广泛的人工智能领域有着重要的意义。
在学习设计模式之前,我们需要了解设计模式的背景和历史发展过程。设计模式的概念最初来自建筑领域,1977年,克里斯托夫·亚历山大在他的著作《建筑模式语言:城镇、建筑、构造》中描述了一些常见的建筑设计问题,并...