【转】个人技术学习方法 — Anytao

原文做者anytao王涛html

他的著做《你必须知道的.Net》编程

 

  关于这个问题,也有很多刚刚入行的朋友向我问起。我想可能一千我的就有一千个答案,我不能保证本身的想法适合于全部的人,可是这确实是我本身的体会和经历,但愿能给你一些参考的价值。同时,我也严正的声明,我也是个学习者,也在不断的追求,因此这里的体会只是交流,并不是说教。c#

  做为同行,首先恭喜你进入了一个艰难困苦和其乐无穷并存的行业,这是软件的现状,也是软件的将来。若是你想迅速成功,或者发家致富,显然是个难以实现的梦想。老Bill和李彦宏在这个行业是难以复制的,因此作好长期坚苦卓绝的准备是必须的。至少,我身边的朋友,包括我本身都是经历了这个过程,并且依然在这个过程当中,累并快乐着。因此,如此辛苦,又没有立竿见影的“钱”途,想要在这个领域有所发展,只能靠坚持和兴趣了。两者缺一不可,对于刚刚毕业的你来讲,这个准备是必须有的。这是个人第一个体会,可能比较虚,可是这个在我看来倒是最重要的一条。设计模式

  第一条很关键,可是除了在思想上作好准备,还有应该就是你关心的如何下手这个问题了?从本身的感受来讲,我以为比较重要的因素主要包括:架构

1 基础至上

  其实早在两年前,我也存在一样的疑惑,不少的精力和时间花费在了追求技术技巧、技术应用和技术抄袭的自我陶醉状态。历数过去的种种光辉历程,不少宝贵的人生都花在交学费的道路上了。因此,当我把所有的精力投入到基础和本质研究的课题上时,居然发现了别样的天地。原来再花哨的应用,再绝妙的技巧,其实都架构在技术基础的基础上,没有对技术本质的深入理解,谈何来更进一步了解其余。这种体会是真实而有效的,因此我将体会、研究和心得,一路分享和记录下来,因而就有了《你必须知道的.NET》这本书的诞生,我切实的以为从这个起点开始,了解你必须知道的,才能了解那些更广阔的技术领域。框架

InsideDotNet

  因此,若是可以坚持,不放弃枯燥,从基础开始踏踏实实的学习基础,我想你必定会有所突破。而这个突破,其实也有着由量到质的飞跃,以.NET为例,我认为了解CLR运行机制,深入的认识内存管理,类型系统,异常机制,熟悉FCL基本架构,学习c#语言基础,认识MSIL、元数据、Attribute、反射、委托等等,固然还包括面向对象和设计架构,都是必不可少的基础内容。你能够从《你必须知道的.NET》目录中来大体了解到应该掌握的基础内容,顺便广告了:-)asp.net

  话音至此,顺便推荐几本基础方面的书,若是有时间能够好好研究研究:编辑器

  • Don Box, Chris Sells, Essential .NET,一本圣经,深入而又深邃,为何不出第二卷?
  • Jeffrey Richter, Applied Microsoft .NET Framework Programming,.NET世界的惟一经典,偶像级的Jeffrey是个人导师。
  • Patrick Smacchia, Pracical .NET2 and C#2,.NET领域的百科全书,能够看成新华字典来读技术。
  • Richard Jones, Rafael D Lins, Garbage Collection: Algorithms for Automatic Dynamic Memory Management,内存管理方面,就靠它了。
  • Christian Nagel, Bill Evjen, Jay Glynn, Professional C# 2005,c#基础大全,你们都在看,因此就看吧。
  • Thinking in Java,是的,一本Java书,可是带来的不只仅是Java,写书写到这份上,不可不谓牛叉。
  • Anytao, 你必须知道的.NET,我很自信,没有理由不推荐,这本书有其余做品所没有的特别之处,虽不敢恬列于大师的经典行列,可是推荐仍是经得起考验。

  我一直主张,书不在多,有仙则灵。上面的几本,在我看来就足以打好基础这一关。固然若是有更多的追求和思索,还远远不够,由于技术的脚步从未止步。可是,至少至少,应该从这里开始。分布式

2 你够OO吗?

  无论对业界对OO如何诟病,无论大牛对OO如何不懈,那是他们折腾的事业。而咱们的事业却没法远离这片看似神秘的王国,由于但凡从项目和产品一路厮杀而来的高手,都理解OO的强大和神秘。站在高高的塔尖来看软件,玩来玩去就是这些玩意儿了。因此,在我看来OO其实也是软件技术的必要基础,也是技术修炼的基本功之一,所以我也绝不犹豫的将对面向对象的理解归入了《你必须知道的.NET》一书的第一部分范畴。ide

  然而,实话实说,OO的修炼却远没有.NET基础来得那么容易,苦嚼一车好书,狂写万行代码,也未必可以彻底领悟OO精妙。说得玄乎点儿,这有些像悟道,想起明代前无古人后无来着的心学开创者王阳名先生,年轻时天天格物修炼的痴呆场景,我就以为这玩意儿实在不靠谱。其实,不多有人能彻底在OO面前说彻悟,因此咱们你们都不例外。可是由于如此重要,以致于咱们必须找点儿东西或者思路来摩拳擦掌,了解、深刻和不断体会,因此我对面向对象的建议是:始终如一的修炼,打好持久战。

  如何打好仗呢,不例外的先推荐几本经典做品吧:

  • EricFreeman, Elisabeth Freeman. Head First Design Patterns,标准的言简意赅,形象生动,可贵佳做。
  • Erich Gamma, Richard Helm, Ralph Johnson, John Vlisside,设计模式-可复用面向对象软件的基础,开山祖师的做品,不独白不读。
  • Martin Fowler, Refactoring: Improving the Design of Existing Code,一样的经典,很拉风。
  • Robert C. Martin,敏捷软件开发:原则、模式与实践,对于设计原则,无出其右者。
  • 张逸,软件设计精要与模式,国内做品的优秀做品,园子里的经典之做。

  有了好书,仍是远远不够的。因此,还得继续走王阳明的老路,今天格一物,明天格一物,看见什么格什么。用我们的专业术语说,就是不断的学习和实践他人的智慧结晶,看经典框架,写熟练代码。个人一位偶像曾语重心长的告诉我,作软件的不写上千万行代码,根本就没感受。按照这个标准衡量一下本身,我发现我还只是小学生一个,因此废话少说,仍是去格物吧。

  那么OO世界的物又是什么,又该如何去格,在我看来大体能够包括下面这些内容,可是分类不按学科标准:

  • 面向对象的基本内容:类、对象、属性、方法、字段。
  • 面向对象的基本要素:封装、继承、多态,我再外加一个接口。
  • 设计原则:接口隔离、单一职责、开放封闭、依赖倒置、Liskov替换,没什么可说的,这些实在过重要了。
  • 设计模式:也没有可说的,实在过重要了。
    • Singleton
    • Abstract Factory
    • Factory Method
    • Composite
    • Adapter
    • Bridge
    • Decorator
    • Facade
    • Proxy
    • Command
    • Observer
    • Template Method
    • Strategy
    • Visitor
  • 分层思想:例如经典的三层架构
  • 模块化
  • AOP
  • SOA
  • ORM
  • ......

  这些OO领域的基本内容,看起来令郎满目,其实互相联系、互为补充,没有独立的分割,也没有独立的概念,了解这个必然牵出那个,因此修炼起来并不孤单,反倒在不断的领悟中可以窃喜原来软件也能够如此精彩。

3 舍得,是门艺术

  有了技术基础,懂得修炼OO,下面就是舍得的问题了。舍得舍得,不舍怎得?

  .NET技术有着近乎夸张的应用范畴,从Windows GDI应用,到ASP.NET Web应用,到WCF分布式应用,到Window Mobile嵌入式应用,到ADO.NET数据处理,到XML Webservice,.NET无处不在。因此,对于.NET技术的学习,你应该有个起码的认识,那就是:我不可能了解.NET的整个面貌, 还有个起码的问题继续,那就是:我还要学吗?

  固然不可能了解全部,所以你必须选择和舍得,选择有方向,舍得有兴趣;我还要学吗?固然要学,可是应该首先清楚如何学?在这么多眼花缭乱的技术应用中,有一个基础始终支撑着.NET技术这艘航母在稳步前行,无论是什么应用,无论是什么技术,无论是什么框架,CLR老是.NET技术的心脏。经过表面来倾听心脏的声音,才能更好的了解机器的运转,顺着血管的脉络了解框架,才能明白机制背后的玄机。层出不穷的新技术和新名词老是能吸引你的眼球,可是永远不要只盯着那块蛋糕,而掉了整个礼物,因此对.NET的学习必定要打好基础,从了解CLR底层机制和.NET框架类库开始,逐渐的追求你的技术选择。

  善于分辨,不盲从。天天上cnblogs、MSDN和其余的订阅技术文章,是个人习惯,可是若是每篇都读,每篇都看,那就基本没有其余的时间,因此你必须有分辨的能力,和抵抗诱惑的心态。找准本身的方向,而且坚持下来,是难能难得的。

  在这方面,没有参考,也没有推荐,全屏本身的慧眼。眼光,是个关键。

4 读几本经典的做品

  这一点其实并不须要多说,推荐的几本做品值得花点儿功夫来学习,由于这的确是最初的开始,走在路上从起跑线就走错了方向,大体快速追上是比较可贵。因此经典的做品就是一个好的起点,我也会不时的在我的博客中推荐更好的专著,但愿你继续关注J

5 遵照规范,养成良好的编程习惯

  其实这是个看似无足轻重的小事儿,我常常看到自觉得天下无敌的高手,胡乱的在编辑器中挥洒天赋,一阵高歌猛进,但最后本身都不知道当初的本意是什么。软件是个可持续的资源,于人于己都遵照点儿规则,出来混是要有点儿职业道德。对本身而言,良好的编程习惯正是一个良好学习习惯的开始。看着本身的代码,感受像艺术通常优雅,大体也就是周杰伦听到东风破时候的感受吧,怎一个爽字了得。

  推荐一本这方面的书:

  • Krzysztof Cwalina,Brad Abrams , .NET 设计规范--.NET约定、惯用法与模式

6 学习,讲究方法

  具体的学习方法,实在是因人而异,我历来不主张学习他人的方法,由于人性是难以复制的东西。本身的只有本身最清楚,因此你能够模仿他人的技艺,可是用于没法刻画其灵魂。关于学习方法这档子事儿,我向来不喜欢参考他人,也更不喜欢推荐。

  可是,即使如此,丝绝不减弱学习方法的重要性,懂得了解本身的人是真正的智者,因此挖掘自身潜力永远是摆在本身眼前的课题。寻找一套行之有效的方式方法,很是的重要,可是不要学着模仿,这方面我以为只有创新才能成功。

  若是实在没有本身的方法,我就以为没有方法就是好方法,苦练多看,永远不过期。

7 找一个好老师

  若是有幸能有一位德高望重而又乐于奉献的师长指导,那的确是人生之幸运,可是这种几率实在是过小了。我没有遇上,因此大部分人也无法遇上。没办法,仍是须要好的老师,那么哪儿有这样才高而又德厚的人才呢?

答案是互联网。google,baidu,一个都不能少。

  MSDN是个好工具,博客园是个好地方,《.NET禅意花园》是个好开始。

8 英文,无可避免

  前面说过,要不断的修炼和格物,要学习好的做品,认识好的框架。很不幸的是,这些好事儿全被老外占了,由于原本就是从他们那里开始的,因此也不须要泄气。中国人自古都是师夷长技以制夷的高手,但愿软件产业的大旗别在咱们手上倒下。可是,话说回来,英文就成了一个必须而又伤神的拦路虎,可是没办法使劲的嚼吧。多看多写多读,也就能应付了。

  关于英文的学习和成长,我并不寄但愿于在什么英语速成班里走回头路,学校苦干这么多年也每隔名趟,因此下手仍是务实点儿,我推荐几个好的英文网站和大牛博客,算是提升技术的同时提升英语,一举两得,一箭双雕:

  固然这里罗列的并不是所有,MSDN、asp.net自没必要说,能够有选择的浏览。

  上述1+7条,是一些并不是经验的经验,谁都知道,但不是谁都能作到。累并快乐着,永远是这个行业,这群人的主旋律。在技术面前,我嫣然一笑,发现本身其实很专一,这就够了。

 

关于anytao,我想各位若是看过《你必须知道的.Net》的人都知道吧,园子里的大神之一。他如今创业,一款好的团队系统工具就诞生了,祝福Worktile的市场愈来愈好,我和个人小伙伴们也在用Worktile作平时的小项目管理,感受像是打广告似的。本文是他对于技术学习的回答,咱们这些菜鸟码农也能够从中获取有用的信息,学习->实践->思考->总结提升,菜鸟也会有春天,等待咱们变强的那天!么么嗒

相关文章
相关标签/搜索