『转』写给4年前开始编程序的自己
最近在网上看到有人写了一篇关于《写给4年前没有开始做设计的自己》,突然也想写这样一篇文章。具体那篇文章的内容我并没有细读,防止自己的思路照着他的来。
首先,我先简单介绍下自己,好为后面的内容做一个铺垫。我今年23岁,内蒙古人,今年6月将于粤东地区韩山师范学院毕业,软件工程专业。
一、如果可以,你应该去学文学或者经济学、或者其他你喜欢的专业
这样的建议并不是因为计算机专业不好,或者不适合。行业内普遍认为IT人士在同年龄的白领中是比较辛苦的,加班现象是大多数互联网公司中常见的。且长时间从事计算机相关工作,对健康也是有一定害处。如果你不信可以看看你现在的自己和四年后的我的这两张脸。明显苍老了不止4岁。长时间坐在电脑前也会引发颈椎病,当然如果你坐姿可以调整好的话,也可以避免这个问题。如果你想要一个好的身体和白白净净的脸,还是换行吧,别那么倔强。
二、你该如何去学计算机
四年前开始学计算机的你,充满了自信,做事情分得清轻重缓急,抓得住方向。但是你的过于自信造成了我今天的知识面狭窄,只会做网页的状况,且你没有给予一些重点学科予以重视。
你觉得数学没什么,编程时很少会涉及到复杂的算法,就算涉及到,你也能够解决,只是付出的时间多一些。简单的递归和排序对你不是问题。我要告诉你,你错了。计算机之所以可以发展到今天,就是因为数学,其根本原理就是基于数学。是的,编程时你很少会涉及到使用书中的数学知识,但当你想涉及底层或高效率编程时,你的数学会让你寸步难行。
你觉得英语没什么,编程时很少会涉及到复杂的单词,就算涉及到,你也可以金山词霸,只是动几下手指就好了。简单的变量命名规则对你不是问题。我要告诉你,你错了。大多先进新的技术资料均是源于美国等发达国家,且相匹配的文档书籍也是英文的。是的,你可以去看中文翻译版。但是我要告诉你,不是所有的书你都可以找到翻译版,不是所有的英文网站你都以用谷歌翻译;在你研究一项新技术的时候,苦无资料的你只能去一个次一个词的翻译国外文档或书籍。
三、别去听老师讲课,你可以大胆的逃课
当然,前提是你要保证不要挂科。国内的觉得多数学府,其主要任务在我看来不过是所谓的“科研”。这里我加上引号的意义很明显,大学根本就没有交出它本应交出的科研成果,所以一切都是走形式。是的,是走形式。老师的工作重点是考职称,系辅导员的工作重点是不要出什么乱子,执行书记的指示,然后把你当做是一个高中生一样圈养。大学里的老师,也很少有真正有学识的。打个比方,可能教你数据挖掘的老师自己都没有去挖掘过,可能只是在家里拿个小铲子挖挖花盆罢了。当然,不能排除有真正好的老师,但真的是可遇而不可求。即使你遇到了一个很有学识的老师,大多数情况下,他也是个不会讲课的老师,或者是个精力不在教学的老师。
所以,你要大胆的逃课。图书馆是你的将要泡的地方,你可以把他当做是你的女朋友。她能提供给你大多数你想要的,只要你能静心研读。其实,你完全可以利用两节课的时间去看老师用四节课讲的内容。
四、别总是做一样东西,去广泛涉猎吧
大一时你给自己定向PHP,这是一个不错的决定,并且也因为这个觉得,即将毕业的你也找到了一份不错的工作。但是我要告诉你,不要总是PHP。我承认PHP让你学到了很多,甚至通过PHP使我学到了脱离语言本身的东西。我也并不是说长时间的编写一门语言会怎样怎样,很多大牛都说语言无关(关于这个观点,后面我也说说自己的观点)。真正的弊端是,长时间的网页开发会造成你的目光短浅,无视其他平台的优越性,知识面狭窄。如果你能做到更多的平台,我相信你会对编程本身有一个质变的理解。
五、你要坚决抵制微软平台
其实你已经这样做了,但是还是要说一下。微软是一个垄断性的企业,其WINDOWS流行程度虽然降低,但他仍然是PC操作系统的龙头老大。微软为实现其垄断梦,采用傻瓜编程的方式,蒙骗了大多数微软平台程序员。你用.net去开发一个网页,甚至不需要自己去写HTML,只需要用VS去画就可以了。是的,这样很方便。你用.net实现MVC只需要按照它的框架即可。是的,这样很方便。
但是我要问你,你知道你所画出来的网页本质是什么?如果我要你实现一个复杂的JS效果,你在它复杂的类库中找不到对应的类的时候,你该怎么办?
我还要问你,你知道MVC的本质是什么吗?M、V、C分别是什么?有什么优点缺点?意义何在?
如果你走上了这条路,毫无疑问的,4年后的我只能呜呜呀呀的说的大概吧。呵呵,幸好你没有走上这条路。
六、大学学的是什么
这段应该不是写给四年前的我,只是比较有意义,所以决定写出来。因为大一的时候我已经明白了这个道理。
大学并不是高中,没有老师会整天抓着你学习,管你吃喝拉撒。一切都是靠你自己。学习也是一样。大多数老师是不负责任的,上完课布置个神马作业然后走人。如果你不想白读这个大学,那么你要开始自学,并且学会自学。
有些人会说,我很笨怎么办?我不会自学怎么办?
首先,我觉得没有人是笨的,除非你是弱智。即使是弱智,我依然认为你不是笨的。为什么这么说呢,我是一个极端的人,我相信主观因素可以克服,只要你有足够的自信,并且付出足够的努力。当你决定要做一件事,并且客观上是有可能成功,而你却失败了的时候,我只能说是你自己付出不够努力,不是天不下雨天不刮风的原因。
其次,自学其实没有你想的那么难。只要你有书,只要你有电脑,神马都是浮云。我的意思是没有什么问题是解决不了的。即使是在你一窍不通的情况下让你去搭建一个邮件服务器,给你书和电脑,只要你肯努力,肯定是可以做到的。谷歌百度是你自学的莫大助理。想想互联网搜索还没有星期的90年代,如果你碰到一个问题,除了翻查书海和问人几乎没有更加便捷的办法。所以,你要庆幸你活在这样一个时代,感谢互联网用户。并且一直秉承着:form the Internet,to the Internet的精神。
最后,关于语言无关性,我想说说自己的观点。
很多老师和大牛会提及语言无关性。但是我想说下自己的反对观点。我并不认为这句话是错的,只是觉得不是所有人都有资格说这句话。如果是一个菜鸟,大言不惭的说语言无关性,那可真是笑话了。一门语言都无法精通的人,何谈语言无关性。是的,相同的问题可以同步多种编程语言解决。对于大牛来说,无论使用哪种语言可能都是得心应手,并不是他对所有的语言都精通,而是他已经掌握了编程语言的本质以及编程思想,学习一门新的语言可能只是十天半月的问题。但是对于初学者来说,编程本质与思想,以及对于细节问题的纠结,使他们无法脱离问题本身,而将大部分精力花在语言上,这没什么不值得的。
所以我认为,你可以说语言无关性,但你首先要扛得起“大牛”这两个。
再者,大牛也不要对初学者强调语言无关性,你是在误导他们。等他们真正达到那个境界,这个思想自然就领悟了。
这篇文章被推荐到首页是我没有想到的,文中确实存在过激的观点和个人情绪的发泄,发表当初并没有考虑到这些。如果对于某些读者造成了困惑和不满,在这里我向大家真诚的道歉。
关于文中我补充几点大家争议较大的内容:
1、这篇文章是以现在的我写给4年前的我为出发点,且写文章的时候也一直把我这对自己说话的口吻去说的。语言过于偏激也大多是针对自己,并无恶意。
2、是否应该翘课的问题。我说的太过偏激了,可能是因为在我们学校我没有接触到真正认真负责搞教学的老师,并且即使是上课我也是在下面自习的。其他人的情况可能和我不同,可能真的又值得去听认真去听的老师。如果有这样的老师,当然应该去认真听课。同时也应该通过老师去了解课程和行业,毕竟老师的视野要比我们宽泛的多。大学中我就遇到一个恩师,虽然他和其他老师一样不注重教学不会上课,但他给我提供的机会以及私下里聊天教我的东西足够我受用终生。
3、关于自动化我依然坚持我的观点。我并不是一口否定不应该去使用开源类库、框架等工具,我个人也经常用这些东西,比如THINKPHP,或者其他常用类。但使用这些的过程中,我会尽可能多的去了解其原理。我只是不想做一个局限于某个平台的程序员,希望自己能够接触更多的底层的东西,提高自己。同时我也认为,这是能够区分一个程序员能力的标准。有人有不同观点,我不想争论。正如我所说的,并不是不去使用自动化工具,而是应该在使用过程中明白其原理。
4、学校好坏以及是否有参加工作并不是衡量一个人能力的标准。我承认我的学校说出去没几个人知道,但这决定不了什么。别人高中玩了三年考到我们学校,我用半条命出来拼出个第一,才勉强考上本科,教育水平不同而已。可能你的优越性只是在于你出生在一个比较发达的城市,而我却是生在一个只有200多户人家的山村。但我相信时间会改变一切,我相信。
转自 始终不够 http://blog.csdn.net/huyanping/article/details/8581623
本文章迁移自http://blog.csdn.net/timberwolf_2012/article/details/8620865