


全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
平衡的艺术从菜鸟到架构师2009-05-08 00:0015231人阅读评论(158)收藏举报语言编程strutsibatis框架mfc胡喜作为一个不是科班出身、没有正规学习过计算机知识的架构师,想在这里把我这几年学习的经历体验和大家分享一下,谈谈自己对架构师成长之路的一些感想。奠定扎实的理论基础千里之行,始于足下!技术不是一蹴而就的事情,而是长时间积累的成果。扎实的基本功是做好所有事情的开始。到现在我还记得对我影响非常大的几本书:C+编程思想深入浅出MFCWindows核心编程数据结构编译原理我学习计算机正是按照这几本书的顺序,之前学习C的经历就不必说了,而转折点正是C+编程思想它让我感觉到程序和语言竟然这么有意思,至今仍对虚表的概念记忆犹新,尤其指针的用法,对我以后学习Java语言有很大的帮助,对多态和语言的特性也有了很高的认识。深入浅出MFC这本书,记忆最深刻的还是其中强大无比的宏定义和对象层次设计。然而学习MFC的过程中,我遇到的最大问题就是:很多东西都是黑盒的,这引发了我刨根问底的欲望。所以后来我学习了Windows核心编程,这本书给我的最大收获,就是了解了很多操作系统底层的知识,操作系统是如何运行的。不过遗憾的是,如果当时从Linux或者Unix开始学习,应该会了解得更系统一些。之后我深入学习了数据结构和编译原理。这是我经过了很多实践以后,又回过头来重新学习。拿编译原理来说,以前对这门学科的了解非常有限,后来为了实现一个东西,要用到脚本语言,找来找去找到了Velocity(后来想想使用Groovy应该更好一点),用了以后觉得很好。以前修改程序逻辑,是需要重新编译或者修改配置重新发布才能OK,而现在只需要编辑然后保存一下,就能得到自己想要的结果。这令我着迷,于是想知道它是如何实现的,翻看源代码才晓得原来还有JavaCC这个东西。就这样,我从解释语言入手,逐渐开始了疯狂学习编译原理的过程,越发觉得编程语言非常有意思。回头想想以前和现在学习的语言,感觉程序语言就是在不断抽象:从汇编、C、C+, 再到Java、C#,再到更动态一点的语言如Perl、Python、Ruby等等。不管它再怎么变、再怎么抽象,还是编译原理应用的产物。讲了这么多,就是想强调理论基础知识的重要性!虽然我们现在使用的框架如此之多,但是如果你有了扎实的基础理论知识,这些东西就跟玩具一样。基础就是一个无招胜有招的杀手工具。培养完善的抽象思维抽象的能力也是作为一名好的程序员必须具备的能力。我们在考虑问题的时候可能会遇到错综复杂的场景,从这些迷雾中找到一条明路是我们做好程序员的关键。这些年来学习了很多框架,回过头来想想自己都有点后怕,这也令很多初学者望而生畏。但认真想想,真的有那么可怕吗?让我们从语言层面逐渐剖析这个问题,应该很容易做出解释。程序语言就是我们在某种场景下交流的工具,汇编是机器语言;C和C+是编译型语言,它们是一种针对汇编的高级抽象;而Java和C#就是更高级的抽象了,甚至于抽象了一层虚拟机出来(这个产生的影响就是,之后的很多高级语言评判标准,都是“是否支持虚拟机”),再到后面的许多动态语言,那就是更抽象了。说到这里你会问到,讲这么多语言类的东西和学习框架有什么联系?让我慢慢道来。我们使用一种语言就是用它的语法进行编程,而学习一个框架实际也是为了用这个框架所提供的语言来写程序:Struts我们使用很多配置还有Action和Form;Spring我们使用Bean模型,这是它的最基本模型(现在Spring已经庞大得让很多人无法学习了);iBatis我是用它的XML-SQL模型;JBPM使用它所谓的GOP模型(面向图元的编程);Web flow是在使用它的页面流模型。这样的例子我可以举出很多(这也是DSL现在如此流行的原因)。很多人会说:学习这么多我已经晕掉了!不妨想想,为什么会有这么多东西存在?Struts是为了解决Web编程的困扰;iBatis、Hibernate是为了解决在数据库编程时的麻烦;原有的Web页面编程都是独立的具体单元,Web flow能够让这些页面形成流的形式,让开发更顺其自然;从JBPM的GOP可以看出,JBoss的开发人员对抽象的理解度很深。我举这么多例子,实际是让大家不要害怕现有的这些框架,有了扎实的基础,抽象的概念是很容易理解的!缺乏抽象的能力,你就不能更快更好地解决问题。实际抽象能力衍生出来的一点就是,需要我们对已学过的知识定期进行梳理。这样能让你巩固已有的知识,为以后的学习做好准备。知识就好比一棵生物进化树,最终目标都是一样的,关键是看如何选择进化的路线,让自己的知识结构能够有机的结合在一起。做到学以致用。过一段时间就梳理一下,你会有更多的发现。扩充现有的知识层面在巩固原有知识结构的前提下,我们更需要扩充现有的知识面。井底之蛙,看到的永远是井口大的那片天,只有跳出来,才能看见无限美好的蓝天白云。我曾经也常常局限在自己已熟悉的那块领域沾沾自喜,但是走出来以后才发现,自己原本是多么肤浅!学习的知识越多,对新事物的洞察力将会越准确!这样有助于你巩固已有的知识,系统地学习新的知识。那我们是否需要无限平行式的学习知识呢?我的答案是“No”。人的知识面是有限的,我们需要一个T型的知识结构。你的知识面要广,但是对于某些技术点要专,这才是做好一个架构师的关键。有时 “专”可以让你对很多“广”的知识产生触类旁通的感觉。实践也是非常重要的一环,不要有畏难心理,觉得这个东西太难,我无法完成!有时候事情的结果可能是糟糕的,但是过程是非常宝贵的,其中可以学习到很多东西,同时也可以让自己避免轻浮的心理。还要着重培养自己良好的沟通与解说能力。架构师面对客户群具有多样性,有技术工程师、业务人员、公司管理层,甚至直接面对客户等。要把一个高度抽象又复杂的系统说清楚,这对于架构师来说也是一种挑战。所以架构师必须掌握技巧,应用多种表达方式来阐述架构与产品设计、与具体业务、与公司战略之间的关系等。培养良好的沟通能力,多和周围的人进行沟通,你能够学到更多的知识!“平衡”是架构设计的艺术,我们设计一个东西,就是在平衡各方面的利益。平衡有可能是时间上的,比如需要支持多少年的系统可用性;平衡有可能是纵向的,比如要支持系统的向下兼容性,要保证程序员编程模型上的简单性等等。这种平衡就是因人因时因地而异了。平衡的把握很可能就是评判一个架构师架构水平的标准!架构师在设计的时候应该权衡维度、整体性和扩展性,考虑问题时不要局限于自己的一亩三分地。多种点田,会长出很多庄稼的!拥有一个扎实的基础,不断扩充自己的知识面、完善知识体系,在对现有知
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 矿山机电入井培训课件
- 业务能力提升培训
- vloo kup函数教学课件
- 中国公民健康素养
- 员工维护保养培训
- 关于中药的培训
- 住院医师规范化培训年度总结
- 阑尾炎的护理查房
- 中班健康活动:走丢了怎么办
- 小学课堂礼仪培训
- 2009-2022历年河北省公安厅高速交警总队招聘考试真题含答案2022-2023上岸必备带详解版4
- 六年级信息技术下册《走进人工智能》优质课获奖课件
- 工程开工报告表
- 劳动法课件(完整版)
- 营运车辆智能视频监控系统管理制度范本及动态监控管理制度
- 完整版:美制螺纹尺寸对照表(牙数、牙高、螺距、小径、中径外径、钻孔)
- 偏头痛PPT课件(PPT 43页)
- (完整版)入河排污口设置论证基本要求
- 10kV架空线路施工方案
- 2022年人教版小学数学一年级下册期中测试卷二(含答案)
- 关于恒温恒湿项目装修方案及装修细部做法
评论
0/150
提交评论