现在的位置: 首页 > 综合 > 正文

软件究竟如何学—-劝告那位92的孩子

2013年11月02日 ⁄ 综合 ⁄ 共 3217字 ⁄ 字号 评论关闭

http://www.cnblogs.com/xinyuperfect/archive/2008/10/09/1306694.html
xinyuperfect
今天读到了一篇很让我震惊的文章,一位92年的孩子早早开始工作,做着很多人认为高不可测的程序员工作,拿着一个月5500块的工资。在北京,这对于一个刚刚入行没多久的孩子来说,这算是个奇迹了。可是,这个92的孩子,请不要被眼前现象所迷惑。

        每个工作过一段时间的人都知道,刚开始赚多少钱,无论是1000,还是10000,都不重要,这只是你刚刚起步时的一个工资罢了,
以后日子还很长。所以任何人都不要拿刚起步时的工资来作为评价一个人水平高低的标准。重要的是,在这份工作上你究竟可以学到什么,接触到什么?

       
这位孩子(对不起,原谅我这么叫你,可是你的确还是个孩子)是这样介绍自己的,熟悉JAVA,C#等等,这是一个很诱人的条件,可是我想问,究竟何为熟悉
呢?现在的IDE,尤其是.NET的Visual
Studio实在是太强大了,我几近想把他称为傻瓜式操作。如果只是做一些最常见的管理软件,网页,我个人认为是没有什么技术含量的。当然我并不是指大数
据量,海量数据之类,只是那种大学时期的课程设计之类的东西。如果说把这些理解下来就叫熟悉,那就有些自欺欺人了。

        
现在的程序员入口越来越低,看北京很多的培训班号称三个月让一个零基础的人精通.NET,这是个多么可笑的笑话!我也曾报这那么一丝幻想去看过他们的培
训,最后的成果是做出来一个没有安全性,没有面向对象,没有线程,几乎就是所谓傻瓜式的开发出来的网上书店。如果这就是精通,我们又何必去苦读若干年学,
一个天赋好些的人我认为半个月就可以达到这种水平,那究竟该如何去学习软件。

        
我认为学软件最重要的一点就是千万不要急于求成,在软件的世界中,请你永远都不要相信有速成这个词。基础很重要,什么是基础,就是我们在大学学到的那些东
西,离散数学,数据结构,概率论以及操作系统,软件工程等等当时我们觉得没什么用的基础课,恰恰相反,这才是软件生涯中最重要的东西。语言是不断变化的,
从曾经的面向过程,到今天的面向对象,再到今天的很多很多什么函数式编程,面向服务架构很多很多,只有思想是不变的!

          在这里,给出一个我个人建议的学习软件的路线。

         
一直以来,这点都不曾变过,也是很多人都坚信的观点。面向过程在当今的应用越来越少,但是请记得C是一定要学的语言,我个人认为C是学习软件最好的入门
砖。学习C,你可以不用了解太多细节,不用去懂图形化编程,而是要通过C来掌握程序设计的基本思想,在我的软件生命中,我认为C是对我影响最大的一门语
言。C究竟要学到什么程度。我认为可以写出简单的算法程序,懂得链表,可以用链表做出一个电话薄之类的东西也就可以了。当然专业C和C++程序员除外。

         
学习过C之后,选择一门面向对象的语言,诸如JAVA,C#之类的语言。学习面向对象软件开发的基本思想,打好语法基础!这点是最重要的,一定要打好语法
基础。用C#做例子,千万不要去着急学Winform开发,ASP.NET之类的东西,记得这只是.NET的一个小应用罢了,C#和面向对象才是根本。
C#语法学得差不多之后,看着,我这里说的是学的差不多。高级特性你可以抛开不去看。这支需要很短的时间,因为你有了C的经验,对于你来说难的也许只是面
向对象。

         
然后就应该是基础课程的学习了,我想这个就不用我多说了,各种数学,操作系统,数据结构,算法分析等等。就是很多人说没有用的东西,很多人质疑中国的教
育,曾经我也这样想过,我认为中国的教育很失败,因为在这里什么都学不到,学到的只是没有用的。直到前段时间才发现自己的想法是多么的幼稚,中国的教育失
败的只有大学的考试太过于容易,很多人不用学也能够轻松通过,这是中国教育失败的地方。但是中国的基础教育,我认为还是相当成功的!老师的水平问题我们抛
开不谈,我指的是这种培养体系。

         
好了,这些基础课程学得差不多了,我想时间应该要很久。这段时间你也许会很受折磨,因为对于任何一个程序员来说,学这些枯燥的理论是很痛苦的,凭这些,你
也找不到一份好工作。但是,这些会让你终身受益!可以开始我们最爱学的程序设计语言了,这个时候还不是学Winform,ASP.NET等应用的时候,你
的语言水平还差得远,还是用.NET说话,多买些C#高级的书去看一看,你会发现你学的C#语法还只是冰山一角,开始去解析下.NET本质吧,也去看看
C#的高级特性,比如泛型,比如特性等等。然后看看2.0,3.0,再到3.5,去想想.NET每代的更新究竟都是为了什么,究竟什么是.NET真正的提
高,而哪些只是编译器的口香糖。学点IL吧,对你有好处的。

         
接下来才应该是Winform和ASP.NET的学习,有了好的C#基础,学起来这些是很容易的,拖几个控件,小学水平都可以做到。买本像<
<ASP.NET2.0揭秘>>之类的书,快速地把控件看一遍,然后看看一些高级应用和Web理论基础。这个时候你做的网站还都是些垃
圾代码。这个时候一个重要的东西出现了,就是设计模式。有些人说设计模式是在应用中学习的,我不认同这个观点,也许你没有工作还不知道变化点,不知道什么
地方该设计,什么地方设计后是过度设计。但是至少你要形而上学,也就是说至少你该知道有什么设计模式,每种设计用于什么场合。然后在你的代码中强行加入设
计模式,即使是设计过度,记得!不会设计模式的人远远比设计过度的人多得多,而且设计过度是你学习设计模式最好的方法。

           好了,这些都差不多了,你基本可以算得上一个入门级程序员了。可以保证你找到一份工作了,虽然不会太好。

          
开始回头重学一遍吧,从C再来一遍,或者是C++。看看你的面向对象语言和C究竟差在哪,有什么优点,有什么缺点,内存分配上差在哪等等.......然
后深层地学学C#,比如《.NET框架设计》,《CIL》之类偏理论的书,这个时候你会知道你从前的C#学习是多么肤浅。剩下,还是一样,快速的重览数据
结构,软件工程,(要快!)这时,你的感触会和以往不一样,然后重看设计模式,用.NET框架重析设计模式,自己好好想想这个设计模式在.NET框架的什
么地方有了应用,我还记得前段时间有位牛人朋友在博客园上发了一系列的文章叫《图解.NET框架》,让我受益匪浅。好了,如果这些你都可以了,你可以真的
去学Winform和ASP.NET了,比如《.NET安全编程》之类的东东。

          这些你都掌握了,好了,剩下的不用我说了,我也没资格说了,你没问题了。你只需要追随着微软的步伐就可以了,推出什么你学什么!你是个牛人了!

         
对那位92的孩子,对你,我只是劝告,我很羡慕你,羡慕你那么早的可以接触到软件,接触到程序设计,但没有半点嫉妒,也没有嫉妒的必要。我想说,在这么小
的年龄就放弃继续深造的机会,绝不是什么好事,不要把自己当作盖茨,戴尔,这样的可能性很小,在中国,这样的可能性更小。如果你仍然愤慨中国的教育,我不
想说太多。只告诉你,不要被眼前的景象迷惑双眼,你还小,基础一定要打好,没有谁愿意敲一辈子代码,做一辈子开发。你想出国深造,这是件好事,如果这样的
话,我劝你一定要把英语和数学学好,否则你是读不上好学校的,出国不是你想象中的那么简单。

          最后,我祝你成功!我希望若干年后再新闻上可以看到,一位92年的孩子成为了软件.......

 

          应园友要求,贴出那位孩子的文章地址:http://www.cnblogs.com/dirain/archive/2008/10/08/1306217.html

 

抱歉!评论已关闭.