`
oywl2008
  • 浏览: 1050887 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

WEB架构师成长之路之二-大牛的法宝

 
阅读更多

 
本人也是coding很多年,虽然很失败,但也总算有点失败的心得,不过我在中国,大多数程序员都是像我一样,在一直走着弯路,如果想成为一个架构师,就必须走正确的路,否则离目标越来越远,正在辛苦工作的程序员们,你们有没有下面几种感觉?
一、              我的工作就是按时完成领导交给我的任务,至于代码写的怎样,知道有改进空间,但没时间去改进,关键是领导也不给时间啊。
二、              我发现我的水平总是跟不上技术的进步,有太多想学的东西要学,Jquery用的人最近比较多啊,听说最近MVC比较火,还有LINQ,听说微软又有Silverlight了……
三、              我发现虽然我工作几年了,除了不停的coding,Ctrl+c和Ctrl+V更熟练了,但编码水平并没有提高,还是一个普通程序员,但有人已经做到架构师了。
四、              工作好几年了,想跳槽换个工作,结果面试的考官都问了一些什么数据结构,什么垃圾回收,什么设计模式之类的东西,虽然看过,但是平时用不着,看了也忘记了,回答不上来,结果考官说我基础太差。。。
有没有,如果没有,接下来就不用看了,你一定是大拿了,或者已经明白其中之道了,呵呵。
如果有,恭喜你,你进入学习误区了,如果想在技术上前进的话,就不能一直的coding,为了完成需求而工作,必须在coding的同时,让我们的思维,水平也在不停的提高。
写代码要经历下面几个阶段。
一 、你必须学习面向对象的基础知识,如果连这个都忘了,那你的编程之路注定是在做原始初级的重复!
    很多程序员都知道类、方法、抽象类、接口等概念,但是为什么要面向对象,好处在哪里,要解决什么问题?只是明白概念,就是表达不清楚,然后在实际工作中也用不上,过了一段时间,面向对象的东西又模糊了,结果是大多数程序员用着面向对象的语言做着面向过程的工作,因此要学习面向对象,首先应该明白面向对象的目的是什么?
面向对象的目的是什么?
开发语言在不断发展,从机器语言,到汇编,到高级语言,再到第四代语言;软件开发方法在不断发展,从面向过程,面向对象,到面向方面等。虽然这些都在不断发展,但其所追求的目标却一直没变,这些目标就是:   1.降低软件开发的复杂度   2.提高软件开发的效率   3.提高软件质量:可维护性,可扩展性,可重用性等。
     其中语言的发展,开发方法的发展在1,2两条上面取得了极大的进步,但对于第3条,我们不能光指望开发方法本身来解决。
提高软件质量:可维护性,可扩展性,可重用性等,再具体点,就是高内聚、低耦合,面向对象就是为了解决第3条的问题。因此要成为一个好的程序员,最绕不开的就是面向对象了。
 
二、 要想学好面向对象,就必须学习设计模式。
假定我们了解了面向对象的目的,概念了,但是我们coding过程中却发现,我们的面向对象的知识似乎一直派不上用场,其实道理很简单,是因为我们不知道怎么去用,就像游泳一样,我们已经明白了游泳的好处,以及游泳的几种姿势,狗刨、仰泳、蛙泳、自由泳,但是我们依然不会游泳。。。。
因此有了这些基本原则是不行的,我们必须有一些更细的原则去知道我们的设计,这就有了更基础的面向对象的五大原则,而把这几种原则更详细的应用到实际中来,解决实际的问题,这就是设计模式,因此要学好OO,必须要学习设计模式,学习设计模式,按大师的话说,就是在人类努力解决的许多领域的成功方案都来源于各种模式,教育的一个重要目标就是把知识的模式一代一代传下去。
因此学习设计模式,就像我们在看世界顶级的游泳比赛,我们为之疯狂,为之着迷。
 
三 学习设计模式
正像我们并不想只是看别人表演,我们要自己学会游泳,这才是我们的目的所在。
当我们看完几篇设计模式后,我们为之精神振奋,在新的coding的时候,我们总是想努力的用上学到的设计模式,但是经常在误用模式,折腾半天发现是在脱裤子抓痒。。。
当学完设计模式之后,我们又很困惑,感觉这些模式简直太像了,很多时候我们分不清这些模式之间到底有什么区别,而且明白了设计过程中的一个致命的东西--过度设计,因为设计模式要求我们高扩展性,高重用性,但是在需求提出之初,我们都不是神,除了依靠过去的经验来判断外,我们不知道哪些地方要扩展,哪些地方要重用,而且过去的经验就一定是正确的吗?所以我们甚至不敢再轻易用设计模式,而是还一直在用面向过程的方法在实现需求。
 
四 学习重构
 
精彩的代码是怎么想出来的,比看到精彩的代码更加令人期待,于是我们开始思考,这些大师们莫非不用工作,需求来了没有领导规定完成时间,只以设计精彩的代码为标准来开展工作?这样的工作太爽了,也不可能,老板不愿意啊。就算这些理想的条件他都有,他就一开始就设计出完美的代码来了?也不可能啊,除非他是神,一开始就预料到未来的所有需求,那既然这些条件都没有,他们如何写出的精彩代码?
Joshua Kerievsky在那篇著名的《模式与XP》〔收录于《极限编程研究》一书)中明白地指出:在设计前期使用模式常常导致过度工程(over-engineering)。这是一个残酷的现实,单凭对完美的追求无法写出实用的代码,而「实用」是软件压倒一切的要素。
在《重构-改善既有的代码的设计》一书中提到,通过重构(refactoring),你可以找出改变的平衡点。你会发现所谓设计不再是一切动作的前提,而是在整个开发过程中逐渐浮现出来。在系统构筑过程中,你可以学习如何强化设计;其间带来的互动可以让一个程序在开发过程中持续保有良好的设计。
总结起来就是说,我们在设计前期就使用设计模式,往往导致设计过度,因此应该在整个开发过程,整个需求变更过程中不断的重构现在的代码,才能让程序一直保持良好的设计,由此可见,开发过程中需要一直重构,否则无论当初设计多么的好,随着需求的改变,都会变成一堆烂代码,难以维护,难以扩展。所谓重构是这样一个过程:「在不改变代码外在行为的前提下,对代码做出修改,以改进程序的内部结构」。重构的目标,就是设计模式,更本质的讲就是使程序的架构更趋合理,从而提高软件的可维护性,可扩展性,可重用性。
《重构-改善既有的代码的设计》一书也是Martin Fowler等大师的作品,软件工程领域的超级经典巨著,与另一巨著《设计模式》并称"软工双雄",不可不读啊。
 
五 开始通往优秀软件设计师的路上
 
通过设计模式和重构,我们的所学和我们工作的coding终于结合上了,我们可以在工作中用面向对象的思维去考虑问题,并开始学习重构了,这就像游泳一样,我们看完了各种顶级的游泳比赛,明白各种规则,名人使用的方法和技巧,现在是时候回家去村旁边的小河里练练了,练习也是需要有教练的,推荐另一本经典书叫《重构与模式》,引用他开篇的介绍,本书开创性地深入揭示了重构与模式这两种软件开发关键技术之间的联系,说明了通过重构实现模式改善既有的设计,往往优于在新的设计早期使用模式。本书不仅展示了一种应用模式和重构的创新方法,而且有助于读者结合实战深入理解重构和模式。
这本书正是我们需要的教练,值得一读。
 
六 没有终点,只有坚持不懈的专研和努力。
经过了几年的坚持,终于学会了灵活的运用各种模式,我们不需要去刻意的想用什么模式,怎么重构。程序的目标,就是可维护性,可扩展性,可重用性,都已经成了一种编程习惯,一种思维习惯,就像我们联系了几年游泳之后,我们不用再刻意的去考虑,如何让自己能在水上漂起来,仰泳和蛙泳的区别..... 而是跳进水里,就自然的游了起来,朝对岸游去。但是要和大师比起来,嘿嘿,我们还有很长的路要走,最终也可能成不了大师,但无论能不能成为大师,我们已经走在了成为大师的正确的路上,我们和别的程序员已经开始不一样,因为他们无论再过多少年,他们的水平不会变,只是在重复造轮子,唯一比你快的,就是ctrl+c和ctrl+v。
正确的路上,只要坚持,就离目标越来越近,未来就一定会是一个优秀的架构师,和优秀架构师的区别,可能只是时间问题。
 
 
要成为WEB架构师,首先要找到通往成功的正确方向,详见第一篇,WEB架构师成长之路http://www.cnblogs.com/vance/archive/2013/04/12/3017532.html,接下来我们就要往这个方向努力。然而如唐僧去西天取经一样,要历经种种磨难,一路上打败各种妖魔鬼怪才能继续前行,所以唐僧取经,第一件事,就是招徒弟,遇见妖魔鬼怪就让技术高超的徒弟打败它,徒弟不听话就念紧箍咒,徒弟也搞不定的妖怪,就请观音菩萨搞定,这就是唐僧成功的法宝,没法宝上路,看来我们会死的比较惨啊,哈哈。
    我们在通往架构师的路上,同样会遇到各种各样的问题,但不幸的是,没有菩萨在暗中相助,要是有牛人相助你,那老兄你太幸运了,成功几率大大增加。但我们没有牛人帮助,更没有技术高超的徒弟一路保驾护航,关键招徒弟得开工资啊,我们还穷的自己还养不活呢,怎么办呢?干脆自己动手,找几件护身法宝,留着路上除妖之用。
    问题是从哪找呢?百思不得其解,俗话说思索不如搜索,干脆百度一把,看看牛人都是怎么炼成的,找来找去,还真总结出几个牛人身上的通用法宝,当然独门绝技之类的就不拿了,太多那不动,呵呵。拿着这些法宝上路,嘿嘿,那我们就不是骑着白龙马去西天了,我们骑着摩托去西天,那速度可要快多了。
 
法宝一:牛人爱惜自己的时间。
 
    时间就是金钱,时间就是生命,时间如同健康一样,如果时间都没有,那成功也就是浮云了。所以牛人总是很爱惜自己的时间,总是在想办法提高自己的做事效率。我突然想了起来,我QQ里有几个牛人,问问他们点经验,结果大大出乎意料,个个不在线,好不容易发现个牛人在线,当然关系还不错的,至少不会不给面子吧?于是就QQ说一句客气话,“老兄,好久不见啊,最近在忙什么呢?”,消息发出去石沉大海,到第二天上QQ才收到一句回复,“不好意思,昨忙,有事直接打电话”,言简意赅,效率奇高,再想想我们这些普通人的时间真多,一聊天就是半天,搞不好还有N个Q_Q群在不停的弹窗……
    偶然看到一本书,《时间管理:小强升职记》,顺便打开看下,第一句话这么说的,“前一种人用20%的时间完成了后一种人用80%的时间才能完成的事情,因此前一种人忙着考虑如何打发闲暇时间,后一种人则忙着煮方便面和熬夜。
    假设上面说的真的,我初略算了算,如果一天工作时间8个小时,则牛人的效率,可能就1,2个小时就干完了,这么一算,牛人忙和一年,则等于普通人忙和了4,5年啊!法宝,这绝对是牛人致胜的第一大法宝,俗话说,唯有以快制慢,方能笑傲江湖,没错,东方不败牛就牛在,速度快,快到你还没出招就搞定你了。强大啊,这个法宝一定要随身携带,哈哈。
    所以看了这本书后,我做的第一件事就是QQ关了,动不动就一闪一闪的,思路一直被打断,这不是在浪费自己最大的资本--时间吗?关了几天,发现效率果然出奇的高多了,QQ真是害人不浅啊,当然爱惜时间,还有很多经验,建议有空看看相关的书,受益不浅啊,嘿嘿。 
 
法宝二:牛人善于总结
 
     算了算我记得的牛人,包括古代的,孔子,老子,孙子,曹雪芹,鲁迅。。。我想了一下,为什么能记住他们呢,几千年前来,轰动一时的人物应该年年有,代代有,但我们为什么只记住了这些人?很容易想明白了,他们有个共同的特征,就是总结自己的思想,写成了书,并把这种思想传承了下来,而那些身怀绝技但是秘而不传,或者只传近亲的绝技,都在历史的长河中慢慢消失了。
    再看看IT界的,苏杰,写了本《人人都是产品经理》,程杰,写了本《大话设计模式》......,除了写之外,他们还经常出没于各大论坛,讲座,想躲也躲不开啊......。
    看来牛人之所以牛,自己懂的多是一个因素之外,更重要的是把自己的知识总结下来,并努力推广了。
    所以日常总结,随身笔记一定是要做的,总结就是理解它,并且理解了还不要忘记它,时不时还翻回来看看,否则很多知识学习了又忘记了。总结这个法宝,一定要随身携带。 
 
法宝三:牛人懂得专注
   
    有句古语是这么说的:能够到达金字塔顶端的动物只有两种,一种是苍鹰,一种是蜗牛。苍鹰之所以能够到达是因为它们拥有傲人的翅膀;而慢吞吞的蜗牛能够爬上去就是认准了自己的方向,并且一直沿着这个方向努力。对人类而言,能够于众生中脱颖而出者实属少数,这些人也可以看到:一种是资质优越、天生异禀,本就是成就大事的种子,这样的人是少之又少,而且有些这样的人还因不知学习而沦落了;另外一种人就是蜗牛一样的人物了,早早就知道自己是常人,却仍然立下鸿鹄之志,凭借后天的坚忍和努力,同样做出常人难以想象的成就。它是一种素质,更是一种能力。
    IT领域需要懂的太多了,运维、DBA,各种操作系统,各种语言......如果什么都想学好,结果必然是什么都略懂,但什么都拿不出手,所以注定无所建树,成不了牛人,而牛人是深刻明白这个道理,所以他们会选择某一点最感兴趣的地方,然后持之以恒的深专下去,最后达到了别人从未达到的高度,我们做IT编程的大部分人都是这也学那也学,简历上写的什么都是精通,其实这样的人,却不敢深问,深问了什么都不懂,因此专注某一个技术领域,是走向成功的铁定法则。
 
 
法宝四:牛人注重动手能力
 
    “纸上得来终觉浅,绝知此事要躬行”, 邓_小_平最经典的一句话叫“摸着石头过河”,毛_主_席也在实践论上写道:“理论若不和实践联系起来,就会变成无对象的理论,同样,实践若不以理论为指南,就会变成盲目的实践。” 
    看来牛人并不是坐在屋子里成牛人的,而是在不断的动手,在实战中造就了牛人,也充分的说明了学习的终极目的--学以致用。所以我们学习时,一定要动手做,只学习不动手,是成不了牛人的啊。
 
     拿着这四件法宝去取经,就为成功增加了强有力的保障,并能达到事半功倍的效果。当然在路上多捡几件随身携带,那功力就会更强了,像007一样,口袋里总是需要什么有什么。法宝之重要,犹如练武的找到了降龙十八掌,乾坤大挪移之类的秘籍一样,拿到手了就会成为武林至尊!
 
http://www.cnblogs.com/vance/archive/2013/04/14/3019919.html
 
 

分享到:
评论

相关推荐

    孙玄百万年薪架构师成长之路

    开课吧孙玄百万年薪架构师成长之路,自己在网上淘的现在分享给大家

    架构师成长之路

    在这个“架构师成长之路”中,我们将深入探讨2017年1月时架构师面临的挑战、发展趋势以及必备技能。 一、架构师的角色与职责 架构师不仅仅是技术专家,更是战略思考者。他们需要理解业务目标,分析需求,设计可扩展...

    软件架构师成长之路

    ### 软件架构师成长之路的关键知识点 #### 一、软件架构师的角色与价值 - **定义**:软件架构师通常被视为一个组织中的技术领袖,他们负责制定软件产品的技术路线和技术框架,确保产品的可扩展性和高效性。 - **...

    系统架构设计程序员向架构师转型之路

    系统架构设计程序员向架构师转型之路是一项艰巨但充满挑战的任务,涉及到技术深度、广度、沟通能力以及业务理解等多个方面。以下是对这一主题的详细阐述: 首先,我们要明确架构师的角色。架构师并不仅仅是高级...

    架构师之路

    "架构师之路"是一条充满挑战和机遇的成长路径,对于那些致力于成为顶级技术专家的人来说,这是一条必须经历的旅程。在这个过程中,了解并掌握关键的技术领域,如集群、JAVA开发框架的演变,是必不可少的。 首先,让...

    架构师之路-沈剑-20200303(2).pdf

    ### 架构师之路 #### 一、沈剑的架构师之路 沈剑,作为到家集团技术VP&快狗打车CTO,在其职业生涯中积累了丰富的经验和技术洞见。他的经历可以分为几个阶段,每个阶段都为其成为一位出色的架构师奠定了坚实的基础...

    测试架构师修炼之道:从测试工程师到测试架构师1

    【测试架构师修炼之道:从测试工程师到测试架构师1】这本书主要探讨了软件测试工程师如何进行职业规划,以及如何成长为一名优秀的测试架构师。书中通过两个面试故事引入了核心议题,即测试的核心并不仅限于业务知识...

    JAVA软件架构师成长之路

    ### JAVA软件架构师成长之路知识点解析 #### 一、Java编程入门阶段 ##### 1. 快速掌握Java基础 - **目标**:对于没有Java编程经验的新手来说,首要任务是快速熟悉Java的基本语法和常用功能。此阶段强调的是速度而...

    Web全栈架构师第23期完整版本课程视频

    最新Web全栈高级架构师学习路线全套完整版课程视频,互联网时代已进入后半场,行业环境发生了显著变化。互联网人,尤其是技术人员,如何在加速更迭的技术浪潮中持续充电,提升自身价值,是当下必须面对的挑战。课程...

    完整版—架构师之路(58沈剑).rar

    总的来说,《完整版—架构师之路(58沈剑)》是一本全方位指导软件架构师成长的著作,它将帮助读者提升技术视野,掌握关键技能,最终成为一名成功的架构师。通过阅读这本书,读者不仅可以深化对架构设计的理解,还能...

    Java百万年薪架构师完整版.zip

    在IT行业中,成为一位能获得百万年薪的Java架构师并非易事,这需要深厚的技术底蕴、丰富的实战经验以及对行业趋势的敏锐洞察。本资源"Java百万年薪架构师完整版.zip"显然是一份专为追求高薪职业路径的Java开发者准备...

    JAVA后端架构师成长路线图-2023版.pdf

    JAVA后端架构师成长路线图-2023版 本资源是一个全面、系统的JAVA后端架构师成长路线图,旨在帮助Java程序员快速成为架构师。该资源通过访谈数十位一线大厂架构师,了解他们的成长历程,了解最新的企业技术,抽象出...

    企业级IT架构分享 云计算架构师成长之路 Hadoop平台的大数据整合 共34页.pdf

    ### 企业级IT架构分享——云计算架构师成长之路与Hadoop平台的大数据整合 #### 一、引言 随着信息技术的飞速发展,企业对于高效、稳定、灵活的IT架构需求日益增长。在这个背景下,云计算架构师的角色变得尤为重要...

    天翼云认证解决方案架构师

    天翼云认证解决方案架构师题库知识点,帮你直接通过天翼云解决方案架构师认证考试。天翼云认证解决方案架构师题库知识点,帮你直接通过天翼云解决方案架构师认证考试。天翼云认证解决方案架构师题库知识点,帮你直接...

    系统架构师考试真题(2008-2020年)题目-答案-详细解析.zip

    历届系统架构师考试真题(2008-2020年)题目-考题答案-解题思路详细解析

    架构师成长之路.xmind

    常用设计模式 Proxy 代理模式 Factory 工厂模式 简单工厂模式 工厂方法模式 抽象工厂模式 Singleton 单例模式 Delegate 委派模式 Strategy 策略模式 Prototype 原型模式 Template 模板模式

Global site tag (gtag.js) - Google Analytics