本文已挪至 http://www.zhoujingen.cn/blog/2048.html
由于#敏捷个人#,经常有人问我关于一些个人成长相关的话题。而如何快速学习一种新的技术和方法也是经常问到的一个问题。我想,每个人都有自己的方法,我只知道没有捷径。对于学习,我在敏捷个人-认识自我,管理自我.pdf一书中也有相关的文章:学习= 知识+实践+思考+心态、坚持是学习的最好方法。十一前,公司流程管理部的同事让我写一篇应用并推广TOGAF等新方法的文章。想想最近也比较少通过blog与大家沟通了,所以今天我想通过blog的形式来讲讲我去年实践TOGAF的经历,希望通过这种方式能够让你有所收获。
2009年前我做的工作基本都是和项目管理产品线相关的开发工作,之后我进入企业定额项目组。我很高兴能来到这个项目组,除了获得技术的提高,更多的我收获了心智的成长。我是作为技术架构师的角色进入项目组的,起初我花了一个半月的时间开发了一个OpenExpressApp框架,这个框架是作为我10年工作经验的一些想法和理念的初始产物,目前项目组仍在这基础上进行开发。我发现作为管理型孵化项目组的我们,对产品的业务架构和需求管理能力欠缺,这不仅是人的能力上,还包括我们自身知识的欠缺上,所以在开发进入正轨之后我就开始考虑除了开发OpenExpressApp这个框架之外,我还能为项目组、甚至公司做哪些贡献。
我在广联达10年了,做管理型软件有7年多时间,虽然关注技术上会比较多,但对软件工程我也是比较关注。虽然不是深入,但是广度还是可以的,所以我也早听说过业界一些知名企业(例如SAP)采用TOGAF来指导进行产品开发和管理。在考虑项目组开发能力现状下,我开始决定引入TOGAF来指导我们进行产品架构和开发,这个可以在 年度总结和计划:去年4个1,今年5个1 看到,在2010年年度计划中我自己已经把TOGAF的引入列入我个人和团队的一个计划。
在学习时,大家更多的可能还是关注如何具体做什么事情,这个我也非常关心,只是现在我习惯于在做一件事情之前能够对它有认识,至少是方向性的把握。对我来说,我需要做到的是在执行之前自己是否能够从整体上大致的理解它并形成自己的一些思考和观点。对于TOGAF,我也只是通过订阅的一些blog简单了解过,至于因为网上能查到的资料并不多,它到底是什么,是否对项目组有用我都不很确定。2010年在国内,网络上也很难找到中文资料。这对我来说,无疑加重了学习的难度,因为没有资料可查,缺少学习的沟通。
2010年春节过后,我弄了TOG的一本TOGAF9的电子书,占了公司便宜,打印了一百多页来学习。我每天都给自己安排一定的时间去学习,保证每天能够摄入足够的知识量,毕竟是英文的,很多词汇也不会,就查字典。但是,当你看了一阵子你会发现,这讲的什么啊?专业词汇+专业知识,看不懂啊@#¥!¥@
因为TOGAF是一个框架,很多都是大的指导框架,对于刚接触的新手来说,无疑是一个高学习曲线的东西。但是,基于我以前学习新技术的经验,我知道很多现在我认为很简单的东西在刚开始接触都是很高深的东西,所以我一点都没有被这种高难度的知识吓到,反而认为这是一次提高的机会。所以我除了看TOG的电子书之外,还下载了好几十本有关企业架构方面的外文书籍,并且阅读了很多相关知识,并加以自己在工作中的思考和实践去理解它。
因为我对软件工程本身就比较感兴趣,而且这10年来也积累的一些知识,所以通过一两周的持续学习,慢慢的领悟和学习到了它的内容。讲是最好的学习办法,所以我只要有机会我就给项目组做专题分享。项目组做业务、需求的同事看到英文头大,所以我就用翻译一部分内容给她们讲。对与公司外部,只要有心得,我就发表blog与更多人分享,也最后促成我的blog合集电子书《企业架构框架-TOGAF v0.2.pdf》的出现,以及我对TOGAF的更深入的了解。
通过一段时间的学习,我能够对TOGAF有个总体把握,并且能够结合工作加入自己的理解和实践,也更确定了TOGAF这个方法适合做管理型软件,不管是类似公司GEPS的大项目,还是指标系统的小项目,只要是管理型软件,那么也是麻雀虽小,五脏俱全,只是不同项目要不同裁剪而已。
很多新的方法在一个地方并不是颠覆性的在一瞬间发生变化,因为有太多不确定性会让我们考虑到风险带来的问题,所以对于新的方法,我们一般采用的都是小范围试验之后再推广。这其实与我们做产品的路径不谋而合,所以再次感叹很多事情的事例都是相同的:)
不是所有项目组都适合做试验田的,这个与团队氛围、项目产品的类型、领导和成员对你的信任、以及你的影响力等等都有关系,幸运的是,我所在项目组是一块比较好的试验田。在团队对我的信任下,只要我的出发点是对的,并且我相信可以成功,我就敢于在这里尝试任何新的方法。
有些人会认为要找一个没有风险的小项目才能做试验田,但是我告诉大家,我们公司的敏捷现在主要还是在现金流产品中进行。所以,我们对于试验田不要存在太多自己的假定,而更应该积极主动的去开垦一片试验田。我以前那一句话作为自己的座右铭:与其寻找远处的幸福,不如马上在脚下播种幸福。这句话同样适用于这里,与其去寻找一块试验田,不如马上把自己脚下的田变成一块肥沃的试验田。
就是找到了试验田,对于方法的应用推广也是迭代的过程,这又和敏捷开发的理念比较吻合,又再次感叹知识的相关性J 在我花了一个月对TOGAF学习之后,我花了一周时间想了一个粗略的实施计划。
在没有其他方法论指导做管理型软件的前提下,我坚信TOGAF可以提供我们的产品开发水平。但是我知道或者认可,并不代表公司和项目组愿意推广。在大家不了解TOGAF是什么的情况之下,是没有人会想着去做的,包括团队的领导以及相关的架构人员。而在之前,公司里听说过TOGAF的也不多,更别谈上去应用和推广它了。我想到的第一件事就是有机会就做专题分享。我在项目组大概做了有5到6次分享,在公司研发峰会和其他团队做了3到4次分享。
在培训中,因为很多资料来自外文的,所以一开始PPT也是外文的,有些人看不懂,所以后来我逐步的把一些重要的图翻译了一下,这也是客户意识吧J
培训是一件需要热情的事情,因为这不是你当成任务完成的事情,否则都可以不做这一步了。很多人听完可能会问你一堆问题,可能会质疑你,也会反驳你。这也是为什么在本文一开始我就提学知识,做到心中有数的原因。其实,在培训中,可以把这看做个人知识积累和成长的一个工具,也可以把这作为与团队沟通、达成一致的机会。这种培训的主要目的是让大家对TOGAF的知识进行了解,知道它是什么,有什么用,哪些人在用,用的怎么样,我们是否可以用,我们如何用等等。培训结束后,至少要让你的团队Leader觉得这种方法不错,愿意采纳并推行,这也是进入下一步实施计划的前提。
TOGAF本身并不提供具体的格式,因为它是一个框架,适用于多种行业,而在项目组推广时,我必须先根据团队的产品情况,依据TOGAF框架以及其他软件工程的经验,在决定采用TOGAF进行产品的业务架构前,编写了必要的交付物以及文档,这样就可以方便大家在工作中有实际参考的工作模板。这些交付物也不是等我全部理解,或者完全精通之后才开始与大家交流并实践的,也是在一定了解的基础之上做出来的,所以在实践中的沟通还是比较重要。
对于交付物,后期TOG组织好像又出了一套英文的交付物下载包,不过由于精力和时间,目前我还没有看,因为我想,我们把现有的这些模板内容能够用软件工程的方法做好,那就是一种比较大的进步了。
当培训有初步成效,交付物也准备好了之后,就可以开始进行实际应用了。这时候就必须成了架构团队,声明通过采用这种新方法来做以后的工作。
实施一种新方法,无疑是一种变革,这势必会对现有工作的习惯方法造成改变,而这种改变有可能会遭到相关人员的抵触,这也是普遍现象。如果前期培训导入做的好,至少可以让你的团队Leader觉得是一个好方法,那么实施就算成功了一步了。但要记住,Leader的赞同并不一定能够让这个方法落地,就像我们的产品一样,公司领导从产品解决的业务问题来看很OK,但是真正的用户觉得不好用,或者不愿意改变,而会做出负面的选择。
对于试行TOGAF,我们首先会按照TOGAF的初始阶段,成了团队,会设立管理者、架构师等角色,并约定一些基本工作原则,以此作为工作的简单决策依据。当遇到推行下去的障碍时,Leader的主动以及推广人在组织中就需要发挥重要的作用,Leader必须强调实行的决心,而作为推广人则必须从如何做的层次去进行实际的指导,这就要求推行者必须是一个令人信赖的专家形象,这就要求自身的提高。
成立了团队之后,那就可以开始正式开工了。在开工时,我们可以选择如何进行架构的迭代。下图也是TOGAF的一个推荐。我们团队应用时,主要是在业务架构阶段,所以主要营养了架构上下文阶段和架构定义阶段,对于架构定义阶段侧重要业务架构,而信息架构和技术架构由我简单的描述了一下。
对于业务架构,我们采用的是先分析as-is,再分析to-be。对于每个阶段,我都定义了一些交付物。对每个交付物一致的理解和应用是实施过程中比较重要的地方。提出一个交付物并不难,但是要真正把这个模板的内容填写好并不简单,我们讨论一个产品框架图就可能一两天,讨论一个产品价值点有时就需要好几次,甚至讨论完之后还不是很明确。所以,在这里也要说一下,流程、方法之类的并不是银弹,它不能保证我们采纳了一种新方法就不需要以前的东西了。在实施TOGAF中,一样需要以往的产品管理、需求工程的知识和经验,而TOGAF更像一个组合体一样,把这些内容组合在一起,可以让你不会遗漏重要的东西,并且可以给你一个方法上的指导。
TOGAF在组内已经推广应用开来,也得到了架构团队人员的认可,原有业务架构师去其他项目组后也会应用此方法。公司其他团队也了解过TOGAF,并从中裁剪了一些内容作为业务架构工作的指导。
从目前来看,只能说TOGAF基本得到应用的验证,要想更好的应用还必须更多的团队和更多的架构师的参与,共同学习,共同完善具体的交付物以及工作指南。
应用新方法就像你卖一个产品一样,要像对待客户一样去实施。在《高效能人士》中介绍了好习惯的三个维度,其实这个可以作为我们去接受一个新事物变成习惯的一个通用的指导模型。
如果感兴趣,也可以在 http://item.taobao.com/item.htm?id=25733880400 购买我的文字的打印书籍