先看下面的困惑:最近学习了几个MVC框架,其中两个是公司内部的。我发现这些东西都差不多,从处理逻辑到页面渲染;从服务到布局;配置的实现无非就是XML,或者注解……我有种感觉,我可能跳不出这个思维圈?当今时代是一个概念飞扬的时代。oschina开源软件数量已超过20000个,各种技术层出不穷。哪些技术值得学习?有朋友说想学点Android开发技术,兴趣驱使。几个月过去了,他说自己已经能做很多小程序了,现在想起来,掌握一门技术固然好,但是除了兴趣还有什么?他说,“如果我的工作不用安卓平台,学了有什么用?”。学习技术是一件有趣的事情,还是一件痛苦的事情?读书的时候,我曾经买过侯杰翻译的《深入浅出MFC》。对当时的我来说,似乎有点太难了。我强迫自己读了三分之一,但我真的没有继续读下去的意志力。我从中找不到乐趣,当时这本书似乎充满了生涩。像上面这样的故事太多了。很多时候,程序员(包括我)努力学习,有的没有好成绩,有的充满痛苦,有的甚至不知道自己学习的目的是什么。.国内的教育体系培养了一批人:他们努力工作,锐意进取,热爱技术,乐于投身软件行业,乐于编写高质量的代码,对行业的东西很感兴趣,乐于学习扎实的基础知识。他们对热门新技术如饥似渴……几年后,他们眼界开阔,见识广博,经验丰富,言辞犀利,对行业趋势了如指掌。显然,他们是行业内的博学多才。然而……他们缺少这样的能力——思维。缺乏思考很容易导致这样的现象:如果你不知道如何设计,遇到问题,你可以使用你所看到和学到的熟悉的框架、解决方案和模型,而不去仔细分析利弊,只是尽可能寻找最佳解决方案。解决当前问题的方法。有的不会做系统设计。我接触过几个所谓的“只懂业务,不懂技术”的“架构师”,这样设计的系统只能满足功能需求;而论坛上讨论的一些具体问题则暴露了一些问题,帖子讨论者“只谈技术,不谈业务”,比如“XXX大容量解决方案”、“秒杀系统的秘密系统架构”,试图设计一套某一类的一般问题。标准通用解决方案。还有的不会面向对象设计,缺乏抽象和解耦的能力,这样的例子比较多。朋友告诉我,他单位有个老员工写Ruby,工程很大,代码里只有一个神类,解决了所有问题。这种无法坚持自己观点的能力在访谈中最容易观察到。候选人范围从应届毕业生到工作超过10年的经验丰富的从业者。他给出了一个大概的方案之后,还没有细化到一定程度之前,就很难评论这个方案的优缺点了。但是,如果你轻率地挑战,他会很快放弃原来的想法,跑到你的Thinking上去。比如在SNS系统中,服务端应该如何通知客户端一条消息?对于这样的问题有很多解决方案,比如客户端轮询、服务器保持连接推送等,各有优缺点。考生应该有自己的看法。无法细化问题解决方案如何区分说者和做者?给他一个具体的问题是最好的方法。刚开始工作的时候,我曾经很佩服那些在活动和讨论中说话的人,我认为他们能说得很好。但后来渐渐发现,能说会道的人太多了。设计的细化,甚至细化到编码,才是对程序员的真正考验。当然,如果你认为做软件设计的人可以不熟悉编码,而架构师不能首先是高级程序员,那我们无话可说:)。如果你能学习,你就能成长得非常快;如果你不能思考,你就只能永远跟随别人。在新技术的学习上,我觉得我们也应该多思考一下。不同的人有不同的学习动机。在不被外界逼迫的情况下,我对学习新技术的看法可以概括为:它解决什么问题,所谓的问题领域,是不是我关心的?没有研究操作系统的底层实现。不是不值钱,而是我不感兴趣。这就是问题领域的影响(但现在我很感兴趣,我想在这方面做点什么)。与以前的解决方案相比,它有哪些优势,这些优势是否显着?这就是竞争,没有重复技术的余地(当然,如果你是微软的话除外:)),就像互联网上同类型的网站,只有两三个公司竞争到顶端。就像Groovy,我很喜欢,但是有了Scala,我觉得可能其中一个要消亡了(Groovy创始人说如果他早点认识Scala,就不会有Groovy了,具体报道请去到谷歌搜索他在互联网上的博客)。从它的实现和带来的效果来看,有没有什么有趣的想法值得学习和思考?这是最难问的问题。以我去年年初接触的Node.js为例。可以把后端的聚合(比如portlets)放在前端,后端只保留一种页面服务——页面模板,以及几个易于管理的API接口,大大简化了页面的复杂度后端系统,还可以把压力分散到前端,这是我早年没见过的。这三个问题想了想觉得很有价值,于是就去研究了下。不然对我来说,是不想深究的东西,看懂了也无妨。关于学习新技术的方法,我想说几点:寻找切入点很喜欢BlueDavy博客上的一句话:“不懂理论就实践,不实践就学理论”!”。****是要落入动手实践的,但是如果你习惯了从那些原理介绍的文字开始,那未必是个不错的选择。此外,现实中也存在一些制约因素。比如了解几家互联网公司的云平台(Amazon的EC2,M$的Azure等),除非你是这些公司的员工,否则很难深入。的。找到自己的兴趣点,学习应该是一件有趣的事情。当你的大脑拒绝它时,我不相信掌握这项新技术是一件容易的事。如果找不到兴趣点,那么,不妨回到我之前关于新技术是否值得学习的观点。既然没兴趣,学它干嘛?西安软件培训擅长比较比较是一种非常好用的思维方式,和什么比较呢?对比同类技术,对比上面操作系统和网络基础设施的例子,***,对比生活中的例子(比如JAVANIO的实现就是一个很好的例子)。不断获得反馈什么是反馈?制作一个HelloWorld的例子是一个很好的反馈;理解了某个实现的原理,联想到其他类似的实现,有一种豁然开朗的感觉,这也是一种反馈。在学习的过程中,不断的反馈意味着你不断获得成就感,这是继续前进的动力之一。
