`
zwchen
  • 浏览: 785607 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

一个在读学生的疑问及我的回复

阅读更多
我经常收到类似的站内信,然后花上半个来小时回复(我摆文字真的非常非常慢)。
这个邮件的回复只是我的一点体会,我承认任何人都有思维定势,我也不例外,所以仅供参考。

如果有人还有类似的疑问,就在这篇文章后提问吧(因为我总是重复写一遍类似的文字)。如果没有ITEye账号,可以通过微博私信(zwchen),然后我copy到这儿。

引用
博主,您好,首先非常感谢您能抽空看看这条短信,第一次就给您发这样的短信,觉得有点不好意思或者说是愧疚,我时不时的看过您的博文,感觉很实在很中肯,希望能从前辈那里得到一点指导。

小弟目前是一所二流本科大学软件工程的学生,目前大二了,因为学校不是很好所以有考研的打算,准备考MSE,而不是计算机科学(这个难度大点)。考研是希望学到更多的东西,也希望能找到更好的工作。

目前有些不太清楚的地方,想问问:

1、算法,由于我选的是j2ee方向,目前感觉算法在平时的项目练习(大多是web应用)中运用的很少,但是有时候又觉得算法是很重要的东西,也听学长说做那么多项目还不如去积累有用的算法,所以很想知道对于以后工作中需要用到的算法,应该如何去学习和掌握(曾经试过做ACM,不过发现上面的题都比较难,再由于练习的很少,所以设计算法的能力也不是很好。数据结构这门课,虽然是也学了点,不过感觉能用上的很少)

2、英语,这个一直是比较头疼的问题,久了不去复习就会很快的遗忘,但是复习又要花很多时间(语法,单词,短语....),不是因为考试或者做题,也基本是不会去看的。阅读对我来说虽然问题不大,但是否工作中就真的需要口语能力?

3、对于技术的学习,就目前只学习了java基础,struts1.3,jsp这些课程,感觉自己除了会用点之外,其他的什么都不知道。后面还会学习hibernate,spring,ajax。其实就是觉得,老师就只是教会了我们如何使用工具,但是没告诉我们为什么,虽然我认为要成为一个优秀的 java程序员就会这些还远远不够,但是自己也不知道该怎样学习来让自己更加透彻的了解自己所学的东西。
博主,您好,首先非常感谢您能抽空看看这条短信,第一次就给您发这样的短信,觉得有点不好意思或者说是愧疚,我时不时的看过您的博文,感觉很实在很中肯,希望能从前辈那里得到一点指导。


XXX同学:
一个大二的学生,会思考这些问题,本身已经超越于很多同龄人了。
我有如下建议:
1、坚决不要读研,计算机是一门应用学科,强调实践(化学、医学、历史可以考虑读研)。再说,你听说过多少IT技术是在实验室发明的?读研学习三年,不如工作一年,而且对你找工作并不利(硕士毕业上海一般6/7k,但实际上还不如本科工作两年的),我很少见到读研是因为对计算机感兴趣,而不是延迟就业。

2、工作后,看你进入研发还是开发。研发一般非常细分,比如视频解码,开发一般都没有多少技术含量,特别是软件外包(可能贡献了中国软件产业60%以上的GDP)。工作中需要的技术,如果有大学的理论功底,学起来非常快,像Hibernate、Spring这类框架其实很简单,如果你理解背后的思想。但理论功底不是看书学来的,而是做项目,然后回过头来思考那些理论,如数据库的索引原理及实现。
你可以,多读框架源码
你可以,用Sniffer hack、分析网络数据包
你可以,多看书,一年看上二三十本
当然了,兴趣是一切成功的钥匙,如果你喜欢钻技术,我所说的都是废话,因为你都会悟出来。

如果你想学习一门技术,一定要反复问自己一个问题:这门技术是解决什么问题的?或者说,为什么会产生这种技术?
我先提几个问:为什么会出现Hibernate?Thread是解决什么问题?EJB的本质是什么?
大家可以花几个月来思考。

3、算法,不一定是排序和查找,大学只是以此作为算法的入口,你想,如果不这样,还有其它更好的题材教授算法吗?数据结构永远优先于算法,垃圾结构,最好的算法都要打折扣,就如同房子建歪了,再好的钢筋水泥有什么用呢?
绝大部分规范都是以数据结构形式展现的,如TCP、BT、MP3、JPG、SOAP,甚至flash通讯的AMF二进制流...
你不一定要精通大学教程的算法,不过它对你毕业面试很有用,工作基本上用不着(属于基础类库),但是你必须精通一些。你可以了解一下图片格式或文本格式,如pdf规范,可能对算法和数据接口更宏观些,也有趣些。
学习只能在有乐趣时才能深入、持久。

有几门大学课程务必学好:操作系统原理和实现、数据库原理、TCP/IP协议、离散数学、计算机组织与结构等,同时精通一门语言及用该语言实现的算法,这些我曾经都是自学的。但最好的学习是实践,你可以参加一些开源项目,以它为线索,带动你的学习。
孤立去考高分,效率是非常低的。

4、英语,你要是没兴趣就别学算了。不过,英语是计算机的母语,深入的计算机知识,需要查wikipedia和英文帮助文档,而这是英文的。
你了解Event Driven Architecture吗?有深入的中文文档吗?,不了解它就不了解GUI编程。
没兴趣,基本上英语学不好,有人读整个大学,70%时间都是考CET-4,可惜啊。

5、学习任何时髦的框架,都必须在项目中实践,当然看书也是必须的。边做项目边看书。读书和工作那几年,我几乎把Java和IT领域所有知名书籍都翻过了(我买过好几千块的IT书)。

最后,重复一点:单纯看教程、然后做习题,这类中学六年延续的学习方法,非常枯燥、低效,必须改进。尝试自己动手做项目,比如做一个媒体播放器。

分享到:
评论
12 楼 zwchen 2011-07-20  
podormeijia 写道
    要不要考研,我与博主有点不同意见,因为经历过。若是2本院校,考研是一个重生的机会,一些好的学校,找工的机会是完全不一样的。(我从一个非211院校考入全国前十的院校,对此感慨很多),其实考研与技术学习原本并不冲突,彼此互相印证,相得益彰,(当然政治除外)。好的学校,好的老师,好的氛围,会改变你很多观念,3年里你一样有很多机会很多时间可以去好公司实习,回到实验室还可以有时间做一些技术上的沉淀。当然你损失了些金钱还有工作经验。
   考研是一场不容失败的战争,它本身就是一个博弈的过程。
   我也是刚进入社会,仅供参考。

你说的很有道理。
名校是一种身份,是一个敲门砖,有光环效应。如果要考研,一定要考名校,否则就算了。几年的工作,我也感觉到了。
11 楼 podormeijia 2011-07-20  
    要不要考研,我与博主有点不同意见,因为经历过。若是2本院校,考研是一个重生的机会,一些好的学校,找工的机会是完全不一样的。(我从一个非211院校考入全国前十的院校,对此感慨很多),其实考研与技术学习原本并不冲突,彼此互相印证,相得益彰,(当然政治除外)。好的学校,好的老师,好的氛围,会改变你很多观念,3年里你一样有很多机会很多时间可以去好公司实习,回到实验室还可以有时间做一些技术上的沉淀。当然你损失了些金钱还有工作经验。
   考研是一场不容失败的战争,它本身就是一个博弈的过程。
   我也是刚进入社会,仅供参考。
10 楼 zwchen 2011-07-17  
3w1h 写道
看了你的贴子很是受益哈  从你文章层面来看
您应该做软件这行好几年了吧  我刚入这行没多久  想请教您几个问题
你在看技术书籍的时候是如何进行的啊  我发现我看技术书籍效率很低
还有您现在应该是管理者吧 您对您项目组里的开发效率低的员工是做何
感想啊?  请教下哈

1、关于看技术书籍的问题
看技术书籍,最重要的是选对书。比如说《Core Java》是本好书,但如果你没有Java或C++基础,看这本书非常吃力,如果你看过《Java:How to Program》这本入门书,或是Sun的《Java Tutorial》,再做做练习,然后再看《Core Java》,就比较容易读懂了。

另外,看书时一定要结合练习,如果你学Hibernate,开始不要啃《Hibernate in Action》这部经典,你可以看看台湾林信良的网络读书笔记,非常浅显易懂,然后做做例子,做做小项目,如留言本。过两周再看《Hibernate In Action》,效率就高了。
学习一定是阶梯式的,别人认为的好书,不一定适合你现在的阶段。像《Java虚拟机内幕》,是绝不适合初学者的,看书效率会非常非常低。

我始终强调一点:学习一定要兴趣驱动、任务驱动! 有兴趣,任何方法或手段都会来,即使方法笨,也只是一个时间问题。

2、关于团队里效率低下的员工
对于效率低的员工,分两种,对技术感兴趣的和不感兴趣的,还有,就是态度问题。
如果该员工对技术感兴趣并且态度好(愿意和上司配合,认识到自己的生产力低于平均值应该比别人花更多时间在工作上),这样都很好办。我会帮他分析他之所以生产力低的原因,并且在工作上照顾他。比如他不会Struts,我可以告诉他如何学,它的技术原理,并且结合当前项目;在任务上,分配简单的活,可以照葫芦画瓢。
但他一定要知道一件事情:他应该下班后、周末花一天在家学习。

如果他不花业余时间学,或是不改进自己的学习方法(如做Service层测试总启动Tomcat而不是写Test Case),当然了,就是那种对技术不感兴趣的,我虽然还会重复上面的做法,但如果他几周还没有态度改变或行为改变,我会再让他孤立几周,看看是否是我限制了他,如果还没有改变(代码格式也是一团糟),可能会要求他离开项目组,至少不会再在他身上投入多少精力。
这种情况极少,除非我在做低端外包的公司,周围才会出现这样的人。像我这种性格的人,把教练式领导当做自己的理念,我不喜欢咄咄逼人或是很威严的上司,我也不会做那种人,不就是混口饭吃吗?

反正对于像我这样的人,对自己的耐心、同理心和包容性都很有信心,曾经我们项目组一个MM,我教她Flex技术,每天一个多小时,持续了大半年,直到她可以独立开发简单的模块。你也知道,项目中简单模块一般有50%以上,可以让这类人做。

我可能有些标榜自己了,呵呵。但说实话,我从来没有给人怕的感觉。不过,真实的IT企业,那种严厉、强势的上司,要求你无条件加班的,还是占绝大多数。看你运气了。

人没有笨的,我是自学进入IT的,很清楚学习方法和兴趣的重要性。让初手做的都是简单项目,而且有同组其它人的代码可参考。


9 楼 3w1h 2011-07-16  
看了你的贴子很是受益哈  从你文章层面来看
您应该做软件这行好几年了吧  我刚入这行没多久  想请教您几个问题
你在看技术书籍的时候是如何进行的啊  我发现我看技术书籍效率很低
还有您现在应该是管理者吧 您对您项目组里的开发效率低的员工是做何
感想啊?  请教下哈
8 楼 jackra 2011-06-28  
我个人建议吧。上学就多看看书,好好锻炼身体吧。
如果想进入IT这个行业,最少头开始的几年是需要你有足够吃的老本。如果身体很好的话,在从coding转变的过程中也可以承担更多的压力而不会垮掉。如果在30多岁还能保持充沛的精力和快速的反应速度,成功就不会太遥远了。
7 楼 zwchen 2011-06-27  
Dreadmist 写道
做项目确实能锻炼技术,楼主能不能说几个比较值得去做的项目?
额..框架源码一般在哪里能找到还有如何参加开源项目的开发?

忘了说一个源码框架:mysql jdbc Driver
对于了解jdbc规范和实现的关系、网络编程、sql语言原理等非常有帮助。你无论怎么做jdbc编程,都是停留表面,但了解内幕,一切都柳暗花明。

不过,这个需要有一定的网络编码和sql开发经验。
6 楼 zwchen 2011-06-24  
Dreadmist 写道
做项目确实能锻炼技术,楼主能不能说几个比较值得去做的项目?
额..框架源码一般在哪里能找到还有如何参加开源项目的开发?

1、框架源码
因为你才大二,你可以看Java SDK,如java.util包里面的ArrayList、HashMap,从简单的看起。注意

如果深入点,比如:
数据库:hsqldb
Web Server:Jetty
即时通讯:Spark和WildFire
至于Spring和Hibernate,有一定项目经验再读,因为代码庞大,会一头雾水。
Struts很容易看懂,可以试着写一个简单的Web框架。
以上源码因为我都读过,所以有些体会,不过你完全可以看其它框架。

学习,一定要讲究由浅入深、循序渐进,这样效率最高。

2、开源项目
你可以上sourceforge或国内的oschina,反正一google全知道了。
因为你现在还处在入门阶段,这个你可以两年后考虑,自己写点小程序,如写一个博客程序。



5 楼 Dreadmist 2011-06-24  
做项目确实能锻炼技术,楼主能不能说几个比较值得去做的项目?
额..框架源码一般在哪里能找到还有如何参加开源项目的开发?
4 楼 zwchen 2011-06-24  
zwchen 写道
我对高清视频概念一直模棱两可,因为在iPad和高清电视上会用到它,而我需要下载或购买(淘宝上),所以必须先了解各种格式,如mp4、MKV、TS等。
....................

其实,我想表达的意思是:技术无处不在,只要你想学习。
3 楼 zhangyou1010 2011-06-24  
大二就考虑到这些,已经很不错了,我差不多到大四才开始接触点程序,那时才知道csdn,根本都不知道有javaeye。
2 楼 zwchen 2011-06-24  
我对高清视频概念一直模棱两可,因为在iPad和高清电视上会用到它,而我需要下载或购买(淘宝上),所以必须先了解各种格式,如mp4、MKV、TS等。

作为一个IT人,当然需要寻根究底,于是我耐心地查看wikipedia,官方文档,如FLV格式规范,H264格式规范,MKV文档,都是英文的,看上几天,比起网上那些通俗的介绍深入不知多少倍。一次了解,一生受用。
于是,如何转码、如何操作(字幕选择)都非常清楚、视频编码和硬件的关系。了解原理后,所有一般涉及到高清视频的问题都解决了。

研究收获:一般人都以为iPad只能播放mp4格式视频,用第三方播放器一般都很卡,特别是分辨率超过640*480后,用iPad是可以看720pMKV高清视频的,因为MKV一般是封装H264编码的视频,而iPad支持H264硬件解码,我用《速度与激情1》的720P高清视频测试过,不过解码最好的是AVPlayer,几乎和MP4格式一样的效果,BuzzPlayer次之,最差是OPlayer,内置iPod不能播放。
如果我不了解MKV内幕,怎么会有这样的发现呢?

1 楼 zwchen 2011-06-24  
特别提醒,要想在IT领域有所作为,大学学生年代,千万不要沉迷于游戏。
游戏会一天吃掉你至少10小时,一晃眼,可能就是三年(大二到大四)。
但技术没有几年的积累,毕业后非常难以翻身,除非一直在软件外包行业做低端coding,干到40岁失业为止。
当然了,你可以不做软件开发,但这是毕业后的敲门砖啊,你总得有一技之长。

大学一般都比较孤独、无聊、空虚,如果没有gf的话,这时游戏和网聊可能是最有效的解除痛苦的方式。无聊时,看A_片都比打游戏好,因为A_片看多了就会麻木,不会沉溺,都是年轻人嘛。知道怎么下吧?用emule。

大学生一般都很穷,而丰富的业余生活也需要经济做保障,就说找个gf,到外面租房都是很花钱的事情。

最好的解决无聊的方式,就是开发软件,可以加入一个开源项目,也可以为Apple AppStore开发app,虽然大学生很难做一个实用的软件(不是技术难度问题)。不过这个得需要一个iPhone,对于学生来说是一大笔钱。

搞IT技术是个最容易自学成才的职业,就如同写作行业。你只需要一台电脑,然后自己计划一个小项目,干上几个月,然后再做一个,很快你就脱颖而出了。因为像这样做的人,即使在名校,也不到10%的人。


相关推荐

Global site tag (gtag.js) - Google Analytics