|
本帖最后由 gk2004busy 于 2009-5-27 04:51 编辑
在小家也呆了一段时间,总是看着别人发帖,觉得话题有意思,忍不住跟跟帖灌灌水。其实更想做的事情是分享一下心得体会,就在这样一个不眠的雨夜,趁着如脱缰野马般的思维还清醒的时候,就索性扯扯学习的事情吧。
本来是打算趁着某个机会杀回学校在大教室里说道这些,但是曾经有过一次准备不充分并且临场发挥不稳定的经历,所以还是放弃了。
现在每天都窝在office里,少出门与人打交道,估计更是讲话直打哆嗦,就在温馨的小家里敲打些声响,希望能引来围观、讨论、些许思索,愚下足矣。
大学生的核心部分应该有学习、恋爱、社会活动这三个。学习像是人的躯体,恋爱可比作灵魂,而社会活动让人结交朋友,塑造了一个人当下乃至未来的生活环境。
跟我们每天学习活动直接有关的人物是老师、同学,环境是课堂和自习室、图书馆。
比较好的老师会推荐我们选用很好的教材和辅助资料,告诉我们自修的方法;好的同学会和我们一同完成一些课题,分享经验,共同成长;自习室让我们能够安静的专注于某些我们感兴趣的事物,而图书馆则储备了很多的资料供我们翻阅。
总的来讲,诚毅不缺乏优秀的老师,在我们那届,有海归派的代表老师给我们传授UML分析问题的知识、有勤学派的教授叫我们JSP是怎么实际运用、有实践派的严厉讲师告诉我们老外的某某JAVA教材是案头必备的、有创意派的老师告诉我们界面做成什么样子会不让人倒胃口……现在这些老师在诚毅学院依旧活跃……
四年的大学生活少有后悔的一个起点就是选择了一个自己感兴趣的专业,尽管工作的加班特别多,尽管好多工作日都持续到深夜,不过年轻人能凭着热情做自己感兴趣的事情,这比什么都来的快活。前几天跟一个同届的朋友聊天,他在懊恼,感觉四年什么也没有学会,大学完全是荒废了,一直都在浪费时间,面对他的懊恼,我能说的只有一句:“别灰心,现在你开始意识到了不是就可以开始学了吗?”面对已经过了大学阶段的朋友,我能说的也就只有这样。而面对还在大学的后来者,我想讲是另外一句——只要把四年的大学时光利用好了,找到心仪的工作从来就不会是问题。
现在金融危机、工作难找似乎成为大势,我们是诚毅的学生,所以会比厦大、集大本部的学生竞争力更薄弱许多。如果本来有些自卑心理的同学,可能会与我一样想过一件事——诚毅不过是三本而已,我们的起点已经比在名牌大学的别人差了很多,怎么可能找到好工作,甚至会认为自己找不到工作。
说起这茬让我想起了在06年的福州举办的大型招聘会上的一次求职经历——那场招聘会中有许多企业,著名的移动公司当然也会列席,曾经实习过的单位的前辈就告诉我过,大学生不用以进什么本专业的企业为目标,应该进那些像烟草、电信、移动这样的大企业,在里面做喽啰都可以锦衣玉食,好些比在民企当老板都要爽。我那个时候很信奉这句话,于是对着那个职位跃跃欲试。走到展台投递简历,简历直接被还了回来,对方称只需要211重点院校的学生。由于这种机会实在难得,本来凡事都挺消极的我那个时候竟然忍不住多问了一句:“如果能力够的话,非211院校的学生也不要吗?”对方很和蔼的回答:“不好意思,这个能力够不够的问题得有我们老总来定,我们这边是有硬性规定,非211的简历没法接收。”当时我很不好意思的说了声谢谢,就郁闷的走开了。
在校内、校外,我们会接触到很多这类给我们产生压力的信息,但是我们得坚持自己的方法去走这条求学的路。
诚然,许多企业有硬性标准,但是反观一下名牌大学的学生就业率也并非百分之百,而还有需很多的企业常年招人也招聘不到岗位所需的人才,这说明什么?大多数企业除了一些硬性的筛选标准以外,更需要的是适合的人才,而这个契合度正是我们在大学四年里可以改变的。
前面的话主要是给大家树立一个信心——大学生通过四年的历练肯定能找到好工作,同时传达一个信息——得充分利用时间来做一些积累,而后通过量变来引发质变,让我们成为跟别人不一样的存在,这样寻找到契合度更高的工作的难度就会被大大降低。
求学路上最怕的是失去方向感,跟一些学弟学妹聊过,感觉最大问题就是对自己的专业没兴趣,以前在自习室里,有时看完书放松就跟同学聊聊,同学都是说不知道开发的东西该从何学起,总觉得这么多逻辑还用个外文写来写去的特别乱,其实最终聊的问题是对本专业没什么兴趣。我的建议是,如果条件允许就尽可能的去自己感兴趣的专业,越早越快越好,不能浪费时间在不感兴趣的事情上。以前一个厦大的朋友,她是个个性要强而且对未来规划非常清晰的女生,她非常讨厌自己所在的物理专业,但是高考填写志愿的时候没有把握好被迫调剂到物理系,后来废了九牛二虎之力转专业到文学类专业,期间她的父母坚决反对不予支持,厦大转专业的手续亦是极其麻烦,但她很清楚自己未来要的是怎样的生活,所以她凭自己的能力转了专业,现在在一家福州的网游公司做策划,可谓是相当的成功。我们读书是为了能工作、自立,不是为了别人,所以找准兴趣会是一个很好的开始。
别的专业没有研究不敢乱说,但是做IT有快2年的经历,让我觉得有些方面在求学阶段还是可以注意的。
学校里任何一个专业都是个大圈子,没人能把本专业所有的知识全部吃透的,个人不提倡做全才,而应做专业中的专才。比如IT的话,像我们专业的括号描述“软件工程方向”这样的一个领域也只是IT业界的一角。我自己做的是软件,软件里的派系纷繁复杂,多的可以列一本书(市面上已有很多这种书……)。
本着“不对不熟悉的领域下妄断”的原则,只看普通的应用软件开发这个领域。我个人比较感兴趣的是JAVA,做一些web开发,对数据库ORACLE, SQL SERVER也略知一二。
以前在小家里发了一帖询问,现在学校计算机专业开设的课程使用的编程语言主要是哪些,那帖子就像一个石头丢到枯井,连点声响都没有,后来去了一趟学校,在图书馆听到一个作毕设的小组在讨论web开发,用的语言正是JAVA,所以在此妄断主流的开发语言应该还是丁教授推崇的JAVA语言。
目前而言JAVA开发工程师的就业形势还算可以,当然同类型的C#开发也不错,加上其他的一些如python,PHP,ruby这些语言一起而言,孰优孰劣只取决于个人兴趣爱好。
讲到JAVA不能不说求学时,严厉的MISS YAN推荐的《CORE JAVA 2 核心编程技术》一书,分为上下卷,当时流行的是第5版,而现在转眼两年了,已经到了第8版,这门语言的发展速度可谓相当之快,前有各大厂商,SUN, IBM, ORACLE快马加鞭,旁边有开源社区倾囊送出各种流行的技术框架,到现在还依旧很怀念MISS YAN教课的情形,后来才得知她本人也是经历过校外好几个大小项目,怪不得听她讲课特别有身临其境的实战感。除了优秀的老师和教材的辅助,在初级阶段,我们本身能做的就是将好的书本中的代码用比较原始的工具手工录入并执行至少一遍,理解那些程式的意图和实现原理。在这个阶段复制、粘贴这种方法最好禁用。
至于数据库使用的学习在求学阶段是一个很枯燥乏味的东东,因为没有经历过真实的项目,不知道数据库的设计优良到底对最终的成品会有怎样深远的影响。这也是校内项目的局限性——没有大数据量,用户数不多,软件最终可能不被使用——所造成的。没有压力就没有动力。我们需要的是真实的开发场景,这种机会只能从社会实践或者校内老师推荐的真正未来会投入使用的软件项目中获得。经历过真实项目的同学不会忽视,数据库里,如果一张大的数据表没有建立索引会引发怎样的灾难,定时备份的任务要是没有正常运转时数据库崩溃了会有什么后果,大数据类型字段没有跟表示基本信息的字段很好分离开会怎样拖累系统的性能……这些正是软件公司招聘过程中常常出现的笔试、面试问题。
做web开发还需要很多辅助的知识,如js,dhtml,J2EE体系里还有中间件技术(像tomcat, jboss, weblogic之类),网络底层协议也最好懂一点,或者应该知道怎么翻阅RFC文档。这些技术里,js和dhtml是比较有意思的,可以用它们来做很炫的网页效果,比如小家里咱们发帖用的富文本编辑器(当然还不能跟flash相比,因为严格讲flash算是RCP技术,而非普通web技术,小家的聊天工具就是用flash制作而成);中间件的话通常是些配置方面的东东,可以从项目中去积累;网络底层协议非常枯燥,最好选择精力极其旺盛、状态非常好、注意力集中的时间段学习,初期可能更像是在背诵难懂的文言文,但是读多了理解之后,会对做开发有非常大的帮助。
上面是web开发的相关应用技术,下面是基础理论方面——这部分我的怨念比较重,后悔没有学好——操作系统,编译原理,数据结构与算法,数据库原理。(传说中的四大基础理论课程)
就是这四门课程奠定了整个计算机科学的理论体系。在JavaEye、ChianUnix上面一些老版主和成员侃大山时,时不时会隐隐的引用来自这四门功课的理论作为技术讨论的论据,而且很多开发的难题最终都会回归到这四大理论。学好这四门功课的好处显而易见,会让人的内功变得非常深厚,无论整个IT届怎么翻天覆地的折腾新技术,都无法脱离这四门课;坏处也显而易见——因为是基础理论,常常很晦涩,而且直接体现价值的时机比较少,通常得在真正的项目遇到困境的时候才会显示其身价。比如现在的项目中需要给用户提供能编辑公式的功能(类似我们数学里的那种算术表达式),用户写一个公式“a+b”,我们就能够帮助他们根据a和b的值计算出表达式的最终结果。这是个编译原理的典型应用,如果懂就很容易实现。当然实际的需求我在这里做了简化,比算术表达式的要求要更高许多,如果有的同学要在JAVA的项目开发这种算术表达式的应用,比较推荐使用ANTLR这个工具包来写,会减少在词汇解析和语法分析上捣腾堆栈而焦头烂额的时间。
至于操作系统这门课程的作用同样非常重要,我们用的XP、Linux是如何实现的原理在里面应有尽有,如果有想法去微软的同学,这个是跑不了的,当然紧随其后还得学习Win32API,或者还可以了解一下MFC,在学校可以尝试一下使用win32api怎样控制我们的“任务管理器”的CPU曲线维持在50%那条水平线上,或者是以正选曲线的形式显示呢?(这是MS以前招人的一道面试题目)这些都会相当有意思!多线程、内存管理等等(列不出来只能用“等等”敷衍一下……抽出时间来再看看操作系统的书……当时没学好……)都是相当有意思的概念,只要做软件,每天都会接触到,当然用电脑就会接触到,只是这些都是默默的发生着而已。^^
数据结构与算法,在校时用的还是C语言版,看着有点晕……如果是喜欢JAVA的同学,可以到图书馆借阅JAVA版本的来看看,吸收会更快,算法基本上与数学相关,如果遇到很晦涩的数学公式,还是硬着头皮啃一下,以后在分析软件性能的时候很可能会用上。
数据库原理,到现在印象最深的还是范式理论,但是实际上项目中鲜有人会用到很高的范式,那样会让开发过程变得束手束脚。(顺带一扯,我们那会儿求职的时候,范式理论、集合运算等几个概念,被几家公司都考到过……)当时求学时,老师还给我们布置过课题,只是鲜有同学认真完成,做一套进销存管理系统。“进销存”是个非常亲切的名字(因为以后有好几个课题都是进销存……),用delphi和sql server搭建一些凑合着能用的界面就让人兴奋到不行。老师给我们留下的另外一个印象很深的词汇就是“事务”,这也是一直用到现在的开发中还在天天讨论的事情,我们用spring框架,到底何时何地能够被事务保护起来,搞清楚这一点,我们交付了产品之后才能安心的睡上一觉,不然第二天早上(有时候可能不到早上)boss就会打电话臭骂一通,而后勒令灰溜溜的过去改程序。(说到这里还是扯一下,微软的服务器会在每天晚上检查程序,如果发现有编译上的问题会打电话给写这段程序的开发人员,让他过去加班……怎么……很怀疑吗?这是却是千真万确的,不信可以查阅市面上正热销的《编程之美》一书。) |
|